Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wykresy za pomoca biblioteki GD
Forum PHP.pl > Forum > Przedszkole
-misty-
Witam!
przyznam na wstepie ze to moje pierwsze starcie z bibioteka graficzna GD, wiec moje pytania moga byc dla wiekszosci dosc banalne.
Problem moj przedstawia sie nastepujaco:
mam baze w postgresie i interfejs w php. Na podstawie danych wyciagnietych z bazy musze narysowac pare wykresow (liniowych i slupkowych). poki co probowalam sie zabrac za slupkowy (na podstawie jakis przykladow znalezionych w necie), ale nie do konca mi idzie.
oto fragment mojedo kodu:
  1. <?php
  2. $szerokosc=400;
  3. $wysokosc=200;
  4. $wykres=ImageCreate($szerokosc, $wysokosc);
  5. //kolory
  6. $czerwony=ImageColorAllocate($wykres, 255, 0, 0);
  7. $bialy=ImageColorAllocate($wykres, 0,0,0);
  8. ImageFill($wykres, 0, 0, $bialy);
  9. function slupek($x, $y)
  10. {
  11. ImageFilledRectangle($wykres, $x, $wysokosc-20, $x+10, ($wysokosc-20)-$y, $czerwony);
  12. ImageString($wykres, $x, $wysokosc-15, $y, $czarny );
  13.  
  14. }//koniec fkcji slupek
  15.  
  16. $pobierz_dane=pg_query($polaczenie, "select jakies dane;");
  17. $wiersze=pg_num_rows($pobierz_dane);
  18. //no i tu na pewno jest cos nie tak
  19. for ($i=1; $i<$wiersze, $i++)
  20. while ($row=pg_fetch_row($pobierz_dane)){
  21. forech ($row as $data)
  22. $dane=$row['dane'];
  23. slupek(($i*20)-10, $dane[$i-1])
  24. }
  25. ?>

dostaje blad:
The image “http://127.0.0.1/test/test.php” cannot be displayed, because it contains errors." title="Zobacz w manualu PHP" target="_manual
przerabialam juz ten kod pare razy,ale ciagle mi cos nie idzie. wszelki sugestie beda mile widziane:)
Pzdr!
misty
w sumie zmienilam nieco kod i znalazlam pare bledow (tak to jest jak sie bezmyslnie kopiuje:/)
watek uwazam za zamkniety. chyba ze ktos z Was moglby polecic mi jakis fajny manual z opisanymi mozliwosciami GD, to bylabym wdzieczna.. smile.gif
pzdr!
roobik
Witam!
Odświeżę temat, ponieważ sprawa dotyczy tego samego... winksmiley.jpg
Również raczkuję w temacie GD - proszę o wyrozumiałość...
Ponieważ korzystam z MySQL, to przerobiłem kod:
  1. <?php
  2. $szerokosc=400;
  3. $wysokosc=200;
  4. $wykres=ImageCreate($szerokosc, $wysokosc);
  5. //kolory
  6. $czerwony=ImageColorAllocate($wykres, 255, 0, 0);
  7. $bialy=ImageColorAllocate($wykres, 0,0,0);
  8. ImageFill($wykres, 0, 0, $bialy);
  9. function slupek($x, $y)
  10. {
  11. ImageFilledRectangle($wykres, $x, $wysokosc-20, $x+10, ($wysokosc-20)-$y, $czerwony);
  12. ImageString($wykres, $x, $wysokosc-15, $y, $czarny );
  13.  
  14. }//koniec fkcji slupek
  15.  
  16. $pobierz_dane=mysql_query("select * from licznik");
  17. $wiersze=mysql_num_rows($pobierz_dane);
  18.  
  19. for ($i=1;$i<$wiersze;$i++)
  20. while ($row=mysql_fetch_row($pobierz_dane)){
  21. foreach ($row as $data)
  22. //$dane=$row['dane'];
  23. $dane=$row['liczba'];
  24. slupek(($i*20)-10, $dane[$i-1]);
  25. }
  26. .
  27. .
  28. .
  29.  
  30. ;
  31. ?>

Niestety - wywala mi
Cytat
Warning: imagefilledrectangle(): supplied argument is not a valid Image resource...

a są to linie:
  1. <?php
  2. ImageFilledRectangle($wykres, $x, $wysokosc-20, $x+10, ($wysokosc-20)-$y, $czerwony);
  3. ImageString($wykres, $x, $wysokosc-15, $y, $czarny );
  4. ?>

Z TEGO tematu dowiedziałem się, że funkcja imagestring przyjmuje 6 argumentów, więc dodałem do niej $czerwony i linia ta wygląda teraz tak:
  1. <?php
  2. ImageString($wykres, $x, $wysokosc-15, $y, $czarny, $czerwony);
  3. ?>

...i dalej to samo sad.gif
Wspomnianych błędów jest...... puff! w cholerę i jeszcze trochę (te same, ale sięnie kończą...)

Bardzo proszę o pomoc...
Babcia@Stefa
roobik, funkcja "slupek" nie ma dostępu do zmiennej $wykres.

Rozwiązaniami są:
1. Wrzucenie reszty kodu do funkcji
lub
2. W funkcji "slupek" dodasz:

  1. <?php
  2. global $wykres;
  3. global $szerokosc;
  4. global $wysokosc;
  5. global $czerowny;
  6. global $bialy;
  7. ?>


Wtedy wszystkie zmienne poza funkcją będą ogólnodostępne, ale lepszym rozwiązaniem jest pierwszy punkt.

Pozdrawiam, WebNuLL(Babcia@Stefa)
roobik
Niestety - nie pomogło sad.gif
Ale zmieniłem na jeszcze inaczej :
  1. <?php
  2. $szerokosc=400;
  3. $wysokosc=200;
  4. $wykres=ImageCreate($szerokosc, $wysokosc);
  5. //kolory
  6. //$czerwony=ImageColorAllocate($wykres, 255, 0, 0); // oryginalnie
  7. $czerwony=ImageColorAllocate($wykres, 0, 255, 0);
  8. //$bialy=ImageColorAllocate($wykres, 0,0,0); // oryginalnie
  9. $bialy=ImageColorAllocate($wykres, 120,120,255);
  10. //ImageFill($wykres, 0, 0, $bialy);
  11. ImageFill($wykres, 400, 200, $bialy);
  12.  
  13. function slupek($x, $y)
  14. {
  15.  
  16. global $wykres;
  17. global $szerokosc;
  18. global $wysokosc;
  19. global $czerowny;
  20. global $bialy;
  21.  
  22. ImageFilledRectangle($wykres, $x, $wysokosc-20, $x+10, ($wysokosc-20)-$y, $czerwony);
  23. //ImageString($wykres, $x, $wysokosc-15, $y, $czarny ); // oryginalnie
  24. ImageString($wykres, $x, $wysokosc-15, $y, $czarny, $czerwony );
  25. }//koniec funkcji slupek
  26.  
  27.  
  28. //$pobierz_dane=mysql_query("select * from licznik WHERE $liczba='liczba'");
  29. //$pobierz_dane=mysql_query("select * from licznik WHERE $data='liczba'");
  30. $pobierz_dane=mysql_query("select * from licznik");
  31. $wiersze=mysql_num_rows($pobierz_dane);
  32.  
  33. for ($i=1;$i<$wiersze;$i++)
  34. while ($row=mysql_fetch_row($pobierz_dane)){
  35. foreach ($row as $data)
  36. //$dane=$row['dane'];
  37. $dane=$row['liczba'];
  38. slupek(($i*20)-10, $dane[$i-1]);
  39. // echo 'dane: '.$dane.'<br>wykres: '.$wykres.'<br>data: '.$data.'<br>row: '.$row.'';
  40. echo 'dane: '.$dane.'<br>wykres: '.$wykres.'<br>liczba: '.$liczba.'<br>wiersze: '.$wiersze.'<br>row: '.$row.'<br>data: '.$data.'';
  41. echo '<br>to jest w pętli';
  42. }
  43.  
  44.  
  45.  
  46. //}//koniec funkcji slupek
  47. //echo $dane;
  48. //imagejpeg(wykres);
  49. imagejpeg($wykres, 'test.jpg');
  50. echo '<br>daneA: '.$dane.'<br>wykresA: '.$wykres.'<br>liczbaA: '.$liczba.'<br>wierszeA: '.$wiersze.'';
  51. echo '<img src="test.jpg">';
  52. ?>

Co się pokazuje? => załączam screena
[img=http://www.next.cal.pl/next_blad09.jpg] OBRAZEK[/img]
Dodam, że tabela licznik ma pola dzien, miesiac, rok, liczba
Jak widać na załączonym obrazku poprawnie odczytuje się wartość data - ale jak ją umieścić na wykresie?
meva
Ja tez szukałam podobnego - bo mam inne pola w tabeli - rozwiązania, ale zwykle są to wykresy słupkowe. Ten kod wydaje się być dobry, tylko po pierwsze nie pokazuje linii na wykresie, a pozatym wyświetla wszystkie dane jaki znajdują się w bazie - a nie o to chodzi. Może ktoś z Was bardziej się zna na tym? Bardzo proszę o pomoc
kreciko
Nie lepiej użyć tego: http://code.google.com/intl/pl-PL/apis/chart/ ?
krzystyn
a jak to potem bezposrednio na stronie wyswietlic? fajnie to wyglada, dzieki smile.gif
meva
Właśnie - tylko w jaki sposób Google Chart Tools można połączyć z bazą, by to wszystko do kupy grało...
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.