Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wykres liniowy i dane z Bazy Danych
Forum PHP.pl > Forum > Przedszkole
martin1978
Witam
Chcę zrobić wykres liniowy na podstawie tabeli z Bazy Danych.
Tylko coś mi się nie chce wyświetlić obrazek tzn wykres.
  1. <?php
  2.  
  3. Header("Content-type: image/gif");
  4.  
  5. $x = 300;
  6. $y = 200;
  7.  
  8. $im = ImageCreate($x, $y);
  9. $bialy=ImageColorAllocate($im, 255, 255, 255);
  10. $czarny = ImageColorAllocate($im, 0, 0, 0);
  11. $czerwony = ImageColorAllocate($im, 255, 0, 0);
  12.  
  13. ImageRectangle($im, 0, 0, $x-1, $y-1, $czarny);
  14. ImageFill($im, 1, 1, $bialy);
  15.  
  16.  
  17. $polaczenie=pg_connect("z baza sie laczy :)");
  18. $stan = pg_connection_status($polaczenie);
  19. if ($stan === PGSQL_CONNECTION_OK) {
  20. echo '';
  21. } else {
  22. echo 'Blad polaczenia z baza danych.\n';
  23. }
  24.  
  25.  
  26. $zap_stat = "SELECT * FROM tabela WHERE point='stat' ORDER BY time DESC LIMIT 20";
  27. $wyk_stat = pg_query ($polaczenie, $zap_stat);
  28.  
  29.  
  30. for($i=0; $i<pg_num_rows($wyk_stat); $i++)
  31. {
  32. $j=$i*10;
  33. $row = pg_fetch_array($wyk_stat);
  34. $wartosci[] = "".$row['time'].",".$row['value']."";
  35. }
  36.  
  37. $akt = explode(",", $wartosci[0]);
  38. $popx = $akt[0];
  39. $popy = $akt[1];
  40.  
  41.  
  42. for ($i=1; $i<count($wartosci); $i++)
  43. {
  44. $akt = explode(",", $wartosci[$i]);
  45. $punkt1 = $akt[0];
  46. $punkt2 = $y-$akt[1];
  47. $popx = $akt[0];
  48. $popy = $akt[1];
  49. ImageLine($im, $popx, $y-$popy, $punkt1, $punkt2, $czarny);
  50. ImageString($im, 2, $punkt1, $punkt2, "$punkt1/$punkt2", $czerwony);
  51. }
  52.  
  53. ImageString($im, 3, 5, 5, "Wykres", $czerwony);
  54.  
  55. ImageGIF($im);
  56.  
  57. ?>


Wartości z bazy są pobierane , biblioteka GD jest załadowana, bo rysowalem proste linie itp i bylo ok.

kadlub
  1. <?php
  2. Header("Content-type: image/gif");
  3.  
  4. $x = 300;
  5. $y = 200;
  6.  
  7. $im = ImageCreate($x, $y);
  8. $bialy=ImageColorAllocate($im, 255, 255, 255);
  9. $czarny = ImageColorAllocate($im, 0, 0, 0);
  10. $czerwony = ImageColorAllocate($im, 255, 0, 0);
  11.  
  12. ImageRectangle($im, 0, 0, $x-1, $y-1, $czarny);
  13. ImageFill($im, 1, 1, $bialy);
  14.  
  15.  
  16. $connect=mysql_connect('localhost','root','');
  17.  
  18.  
  19. $zap_stat = "SELECT * FROM tabela WHERE point='stat' ORDER BY time DESC LIMIT 6";
  20. $wyk_stat = mysql_query($zap_stat);
  21.  
  22.  
  23. while($row = mysql_fetch_array($wyk_stat)){
  24.  
  25.  
  26.  
  27. $wartosci[] = "".$row['time'].",".$row['value']."";
  28. }
  29.  
  30. $akt = explode(",", $wartosci[0]);
  31. $popx = $akt[0];
  32. $popy = $akt[1];
  33.  
  34.  
  35. for ($i=1; $i<count($wartosci); $i++)
  36. {
  37. $akt = explode(",", $wartosci[$i]);
  38. $punkt1 = $akt[0];
  39. $punkt2 = $y-$akt[1];
  40. $popx = $akt[0];
  41. $popy = $akt[1];
  42. ImageLine($im, $popx, $y-$popy, $punkt1, $punkt2, $czarny);
  43. ImageString($im, 2, $punkt1, $punkt2, "$punkt1/$punkt2", $czerwony);
  44. }
  45.  
  46. ImageString($im, 3, 5, 5, "Wykres", $czerwony);
  47.  
  48. ImageGIF($im);
  49.  
  50. ?>
  51.  



zrobiłem trochę po swojemu sprawdź
tylko podstaw swoje dane do połączenia się z bazą
martin1978
Chyba wiem dlaczego nic sie nie wyswietla, bo u mnie time (czyli to co chce miec na osi x) to jest w formacie 2011-11-11 07:40:32 i jak oblicza wartosci to glupieje. Czyli chyba musze zamienic ten czas na wartosci, Sam nie wiem.

Prosze jednak o podpowiedzi, jak mam zrobic z tym czasem
na osi x chce miec czas,
na osi y wartosci.

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.