Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> biblioteka gd2 - jak przekazać dane
VGT
post
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 9
Dołączył: 19.11.2004
Skąd: Iława

Ostrzeżenie: (0%)
-----


Ucząc się obsługi tej biblioteki próbuję stworzyć skrypt do gonerowania wykresów. Ma on byćw miarę uniwersalny, abym mógł go wykorzystyać w wielu pisanych w przyszłosci skryptach i napotkałem problem z przekazywaniem danych:

  1. <?php
  2.  
  3. $width=400;
  4. $height=200;
  5. $dane = array ();
  6. $nazwa_tablicy = "dane";
  7.  
  8. echo "<img src='obraz.php?w=$width&h=$height&nazwa=$nazwa_tablicy' alt='' />";
  9. ?>


W tablicy $_GET przekazuję do skryptu, jakie wymiary ma mieć obraz, oraz nazwę tablicy, w której znajdują się dane.

Zawartość obraz.php
  1. <?php
  2. //przeslanie odpowiedniego naglowka
  3. header("Content-type: image/png");
  4.  
  5. //stworzenie obrazka
  6. if (isset($_GET['w'])) $w=$_GET['w']; else $w=700;
  7. if (isset($_GET['h'])) $h=$_GET['h']; else $h=200;
  8. $rys = imagecreate($w,$h);
  9.  
  10. //przydzielenie kolorow
  11. $kol_tlo = imagecolorallocate($rys,0,0,0);
  12. $kol_txt = imagecolorallocate($rys,255,255,0);
  13.  
  14. //wypelnienie obrazka kolorem
  15. imagefill($rys,0,0,$kol_tlo);
  16.  
  17. //wyswietlenie obrazka
  18. imagepng($rys);
  19. ?>


O ile wymiary potrafię wykorzystać, to nie mam pojęcia jak uzyskać dostęp do danych znajdujących się w tablicy, mając jej nazwę w zmiennej.
Czy jest to możliwe? A może kombinuję na około i jest prostrza droga?

Z góry dziękuję za odpowiedź.

Ten post edytował Bonastick 21.09.2005, 22:46:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
crash
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


  1. <?php
  2. ${$_GET[ 'nazwa' ]}
  3. ?>
Go to the top of the page
+Quote Post
VGT
post
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 9
Dołączył: 19.11.2004
Skąd: Iława

Ostrzeżenie: (0%)
-----


jeśli robię to w tym samym pliku, w którym tworzę tablicę, faktycznie działa - nie wiedziałem o takim sposobie.

Jednak, gdy stosuję go w pliku generującym wykres. Obraz się nie pojawia.
Jeśli wcześniej dodam global:
  1. <?php
  2.  
  3. global ${$_GET['nazwa']};
  4. $tab = ${$_GET['nazwa']};
  5.  
  6. ?>

obraz sie pojawia, jednak w zmiennej $tab nic nie ma. Czyli chyba jednak w ten sposób pomiędzy plikami nie da się danych przenieść?

Może kombinuję w złym kierunku, więc zapytam inaczej.

Przekazanie do skryptu pojedynczych zmiennych mi wychodzi (wymiary obrazka), ale jak przekazać do skryptu sporą tablicę?
Go to the top of the page
+Quote Post
mls
post
Post #4





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


serialize" title="Zobacz w manualu php" target="_manual i unserialize" title="Zobacz w manualu php" target="_manual (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Czyli skrypt generujący obrazek wywołujesz jako:
  1. <?php
  2. echo('<img src="obraz.php?w='.$width.'&h='.$height.'&tab='.serialize($tablica).'" alt="" />');
  3. ?>

A w skrypcie obrazka odczytujesz:
  1. <?php
  2. $tablica = unserialize($_GET['tab']);
  3. ?>

Aczkolwiek przesyłanie długich ciągów znaków (a w przypadku serializacji dużej tablicy ciąg wyjdzie napewno długi) metodą GET nie jest wskazane...
Go to the top of the page
+Quote Post
VGT
post
Post #5





Grupa: Zarejestrowani
Postów: 63
Pomógł: 9
Dołączył: 19.11.2004
Skąd: Iława

Ostrzeżenie: (0%)
-----


faktycznie takie rozwiązanie mnie urządza (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

a z tymi zaleceniami do nie przesyłania długich ciągów GET'em:

istnieje jakiś konkretny limit długości, czy w sumie nie wiadomo przy jakiej długosci i nie wiadomo co się stanie?
Go to the top of the page
+Quote Post
mls
post
Post #6





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat
RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 (ftp://ftp.isi.edu/in-notes/rfc2616.txt), does not specify any requirement for URL leng


Jednak niektóre przeglądarki (bo nie wiem, czy wszystkie) mają ograniczenia co do długości - np. Internet Explorer przyjmuje zapytania GET o maksymalnej długości do 2083 znaków.

Ten post edytował mls 24.09.2005, 15:58:30
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 19:57