Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: biblioteka gd2 - jak przekazać dane
Forum PHP.pl > Forum > Przedszkole
VGT
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ź.
crash
  1. <?php
  2. ${$_GET[ 'nazwa' ]}
  3. ?>
VGT
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ę?
mls
serialize" title="Zobacz w manualu php" target="_manual i unserialize" title="Zobacz w manualu php" target="_manual 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...
VGT
faktycznie takie rozwiązanie mnie urządza 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?
mls
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.