Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [gd]wykres
Forum PHP.pl > Forum > PHP
Lejto
Mam kod który pobiera dane i wyświetla je na wykresie na localhoscie działa a jak wrzucę go na moja stronę to już nie pokazuję się: Obrazek "URL" nie może zostać wyświetlony ponieważ zawiera błędy.
To nie jest mój pierwszy wykres mam tez inne i działają ale jak w niech zmienię wysokosc_slupka z 40 na 20 to tez wywala ten błąd blinksmiley.gif
Kod:
  1. <?php
  2.  /**
  3.  * @author Łukasz.agencik@gmail.com
  4.  * @copyright 2008
  5.  */
  6.  
  7. $zapytanie = 'select * from sonda';
  8. $wynik = mysql_query($zapytanie) or die ("Blad");
  9.  
  10. $pole = mysql_num_rows($wynik) or die("Blad");
  11.  
  12. //obliczanie calkowitej ilosci glosw
  13. $ilosc_glosow = 0;
  14.  
  15. while ($rzad = mysql_fetch_object($wynik))
  16. {
  17.  
  18. $ilosc_glosow += $rzad->glosow;
  19. }
  20.  
  21. mysql_data_seek($wynik, 0); // wyzerowanie wskaznika wyniku
  22.  
  23. /*****************************
  24. Poczatkowe obliczanie wykresu
  25. *****************************/
  26.  
  27. //ustawienia stalych
  28.  
  29. putenv('GDFONTPATH=Fonty/'); // poprawna ścieżka 
  30. $szerokosc = 500; //szerokosc obrazka w pikselach - ta zmiesci sie w rozdzielczkosci
  31. $lewy_margines = 50; //miejsce pozostawione po lewej stronie obrazka
  32. $prawy_margines = 50; // to stamo dla prawej
  33. $wysokosc_slupka = 20;
  34. $odleglosc_slupkow = $wysokosc_slupka/2;
  35. $czcionka = 'arial';
  36. $rozmiar_tytulu = 16; //w stopniach
  37. $rozmiar_podstawowy = 10; //w stopniach
  38. $rozmiar_maly = 10; //w stopniach
  39. $wciecie_tekstu = 10; //odleglosc lewych etykiet tekstowych od lewej krawedzi obrazka
  40.  
  41.  
  42. //ustawienie poczatkowego punktu rysowania
  43. $x = $lewy_margines+70; //miejsce rysowania bazy wykresu
  44. $y = 50; //to samo
  45. $jednostka_slupka = ($szerokosc-($x+$prawy_margines))/100; //jeden "stopien" wykresu
  46.  
  47. //obliczanie wysokosci wykresu - slupki plus przerwy plus pewien margines
  48. $wysokosc = $pole*($wysokosc_slupka+$odleglosc_slupkow)+50;
  49.  
  50.  
  51. /****************************************
  52. Konfiguracja podstawowego obrazka
  53. ****************************************/
  54.  
  55. //stworzenie pustgo kadru
  56.  
  57. $ob=imagecreateTrueColor($szerokosc, $wysokosc);
  58.  
  59. // Przydzielenie kolorw
  60. $bialy=ImageColorAllocate($ob,255,255,255);
  61. $czerwony=ImageColorAllocate($ob,255,0,0);
  62. $czarny=ImageColorAllocate($ob,0,0,0);
  63. $niebieski=ImageColorAllocate($ob,0,64,128);
  64.  
  65. $kolor_tekstu=$czarny;
  66. $kolor_procentow=$czarny;
  67. $kolor_tla=$bialy;
  68. $kolor_linii=$czarny;
  69. $kolor_slupka=$czerwony;
  70. $kolor_liczb=$niebieski;
  71.  
  72. //stworzenie "kadru" do rysowania
  73.  
  74. ImageFilledRectangle($ob,0,0,$szerokosc-1,$wysokosc-1,$kolor_tla);
  75.  
  76. //narysowanie kontuwrw wokl kadru
  77. ImageRectangle($ob,0,0,$szerokosc-1,$wysokosc-1,$kolor_linii);
  78.  
  79. //dodanie tytulu
  80.  
  81. $tytul = 'Wyniki głosowania';
  82. $wymiary_tytulu = imagettfbbox($rozmiar_tytulu, 0, $czcionka, $tytul);
  83. $dlugosc_tytulu = $wymiary_tytulu[2]-$wymiary_tytulu[0];
  84. $wysokosc_tytulu = abs($wymiary_tytulu[7]-$wymiary_tytulu[1]);
  85. $tytul_nad_linia = abs($wymiary_tytulu[7]);
  86. $tytul_x = ($szerokosc-$dlugosc_tytulu)/2; //wysrodkowanie w x 
  87. $tytul_y = ($y-$wysokosc_tytulu)/2+$tytul_nad_linia; //wysrodkowanie w y
  88. ImageTTFText($ob, $rozmiar_tytulu, 0, $tytul_x, $tytul_y, $kolor_tekstu, $czcionka, $tytul);
  89.  
  90. // narysowanie bazy od nieco ponad pozycja pierwszego slupka do nieco ponizej pozy
    cji ostatniego
  91.  
  92. ImageLine($ob, $x, $y-5, $x, $wysokosc-15, $kolor_linii);
  93.  
  94. /*******************************
  95. Umieszczanie danych na wykresrie
  96. ********************************/ 
  97.  
  98. // pobranie kazdej lini bazy danych i naryowanie odpowiednich slupkw
  99.  
  100. while ($rzad = mysql_fetch_object($wynik))
  101. {
  102. if($ilosc_glosow > 0)
  103.  $procent = intval(round(($rzad->glosow/$ilosc_glosow)*100));
  104. else
  105.  $procent = 0;
  106.  
  107.  
  108. // wyswietlanie procentw dla tej wartosci
  109.  
  110. $wymiary_procentow = imagettfbbox($rozmiar_podstawowy, 0, $czcionka, $procent. '%');
  111. $dlugosc_procentow = $wymiary_procentow[2]-$wymiary_procentow[0];
  112. imagettftext($ob, $rozmiar_podstawowy, 0, $szerokosc-$dlugosc_procentow-$wciecie_tekstu, $y+($wysokosc_slupka/2), $kolor_procentow, $czcionka, $procent. '%');
  113.  
  114. //dlugosc slupka dla tej wartosci
  115.  
  116. $dlugosc_slupka = $x+($procent*$jednostka_slupka);
  117.  
  118. //narysowanie slupka dla tej wartosci
  119.  
  120. ImageFilledRectangle($ob, $x, $y-2, $dlugosc_slupka, $y+$wysokosc_slupka, $kolor_slupka);
  121.  
  122. //narysowanie tytulu dla tej wartosci
  123. ImageTTFText($ob, $rozmiar_podstawowy, 0, $wciecie_tekstu, $y+($wysokosc_slupka/2), $kolor_tekstu, $czcionka, "$rzad->pole");
  124.  
  125. //narysowanie konturu pokazujacego 100%
  126.  
  127. ImageRectangle($ob, $dlugosc_slupka+1, $y-2, ($x+(100*$jednostka_slupka)), $y+$wysokosc_slupka, $kolor_linii);
  128.  
  129. //wyswietlanie liczb
  130.  
  131. ImageTTFText($ob, $rozmiar_maly, 0, $x+(100*$jednostka_slupka)-50, $y+($wysokosc_slupka/2), $kolor_liczb, $czcionka, $rzad->glosow. '/'.$ilosc_glosow);
  132.  
  133. // przesuniecie nastepnego slupka
  134.  
  135. $y = $y+($wysokosc_slupka+$odleglosc_slupkow);
  136.  
  137. }
  138.  
  139. /******************************************
  140. Wyswitlanie obrazka!
  141. ******************************************/
  142.  
  143. Header('Content-type: image/png');
  144. ImagePNG($ob);
  145.  
  146. /******************************************
  147. Zwalnianie zasobw
  148. ******************************************/
  149.  
  150. imagedestroy($ob);
  151.  
  152. ?>

można jakiś stłumić ten błąd?
beton
Jeżeli to jest błąd typu warning, lub inny nie wysypujący skryptu wystarczy error_reporting(0); na początek skryptu wrzucić, jeżeli fatal to trzeba poprawic skrypt (zobaczyc w żródło co powoduje bład).
Lejto
error_reporting(0); nie nie dało to nie jest błąd typu warning tylko normalnie pokazuje się Obrazek "URL" nie może zostać wyświetlony ponieważ zawiera błędy
bim2
weź podgląd źródła strony i pokaż nam jakie błędy wywaliło.
Lejto
źródło strony to czysty obrazek png bez żadnych błędów php nie wkleiłem go bo jest za duże
l0ud
Cytat
źródło strony to czysty obrazek png bez żadnych błędów php nie wkleiłem go bo jest za duże


Jesteś pewien? Najlepiej zakomentuj tymczasowo wysyłanie nagłówka i zobacz, czy faktycznie nie wyświetlają się jakieś błędy.
Lejto
Cytat(l0ud @ 2.03.2008, 20:21:38 ) *
Najlepiej zakomentuj tymczasowo wysyłanie nagłówka.

Możesz dokładniej?
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.