Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [gd]rysowanie wykresu, nie działa
Lejto
post
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


Napisałem (przepisałem i przerobiłem) kod wyświetlający wykres przedstawiający wyniki głosowania i nie działa.

Błędy:

Warning: Wrong parameter count for mysql_data_seek() in /glosowanie.php on line 42

Warning: imagettfbbox() [function.imagettfbbox]: Could not find/open font in /glosowanie.php on line 103

Warning: imagettftext() [function.imagettftext]: Could not find/open font in /glosowanie.php on line 109

Warning: Wrong parameter count for mysql_fetch_object() in /glosowanie.php on line 121

Warning: Cannot modify header information - headers already sent by (output started at /glosowanie.php:42) in /glosowanie.php on line 164
�PNG  ��� IHDR��ô���2���%ržŔ���ŰIDATx�íÔÁ @ Ŕ°K÷ß9]˘j¤ üň{�äĚ{owŻ3�ř��ů\7�đ{ćdî�Aćdî�Aćdî�Aćdî�Aćdî�Aćdî�Aćdî�Aćdî�Aćdî�Aćdî�Aćdî�Aćdî�Aćdî�Aćdî�Aćdî�Aćdî�AÁšĎĚuŔąŕÜ0w� s2w� s2w� s2w� s2w� ŕÜw÷:ŕXpî��;��ü�/¸î`NŢ>Ź����IENDŽB`�

Kod:

  1. <?php
  2.  
  3. /***********************************************
  4. Zapytanie bazy danych odczytujące wyniki ankiety
  5. ***********************************************/
  6.  
  7. // pobranie glosu z formy i łączenie z bazą 
  8.  
  9. mysql_connect('host', 'root', 'pass'); 
  10. mysql_select_db ('baza')or die("Nie można wybrać bazy danych");
  11.  
  12. $glosow = $_REQUEST['glosow'];
  13.  
  14. if(!empty($glosow)) // jezeli formularz zostal wypelniony, dodanie glosu 
  15. {
  16. $glosow = addslashes($glosow);
  17. $zapytanie = "update nauczyciel set = glosow + 1 where nauczyciel = '$glosow'";
  18. $query = mysql_query($wynik);
  19. }
  20.  
  21. // pobranie aktualnych wyników anikiety, niezależnie od faktu glosowania
  22.  
  23. $zapytanie = 'select * from nauczyciel';
  24. if(!($wynik = mysql_query($zapytanie))){
  25.  
  26. echo 'Połączenie z bazą nieudane';
  27.  
  28. };
  29.  
  30. $ilosc_nauczycieli = mysql_num_rows($wynik);
  31.  
  32. //obliczanie całkowitej ilości glosów
  33. $glosow = 0;
  34.  
  35. while ($rzad = mysql_fetch_object($wynik))
  36. {
  37.  
  38. $glosow += $rzad->glosow;
  39. }
  40.  
  41. mysql_data_seek(0); // wyzerowanie wskaznika wyniku
  42.  
  43. /*****************************
  44. Poczatkowe obliczanie wykresu
  45. *****************************/
  46. //ustawienia stalych
  47.  
  48. putenv('GDFONTPATH=C:WIDOWSFonts');
  49. $szerokosc = 500; //szerokosc obrazka w pikselach - ta zmiesci sie w przdzielczkosci
  50. $lewy_margins = 50; //miejsce pozostawione po lewej stronie obrazka
  51. $prawy_margines = 50; // to stamo dla prawej
  52. $wykosc_slupka = 40;
  53. $odleglosc_slupkow = $wysokosc_slupka/2;
  54. $czcionka = 'arial';
  55. $rozmiar_tytulu = 16; //w stopniach
  56. $rozmiar_podsawowy = 12; //w stopniach
  57. $rozmiar_maly = 12; //w stopniach
  58. $wciecie_tekstu = 10; //odleglosc lewych etykiet tekstowych od lewej krawedzi obrazka
  59.  
  60.  
  61. //ustawienie poczatkowego punktu rysowania
  62. $x = $lewy_margines+70; //miejsce rysowania bazy wykresu
  63. $y = 50; //to samo
  64. $jednostka_slupka = ($szerokosc-($prawy_margines))/100; //jeden "stopien" wykresu
  65.  
  66. //obliczanie wysokosci wykresu - slupki plus przerwy plus pewien margines
  67. $wysokosc = $ilosc_kandydatow*($wyskokosc_slupka+$odleglosc_slupkow)+50;
  68.  
  69.  
  70. /****************************************
  71. Konfiguracja podstawowego obrazka
  72. ****************************************/
  73.  
  74. //stworzenie pustego kadru
  75.  
  76. $ob = imagecreateTrueColor($szerokosc, $wysokosc);
  77.  
  78. //przydzielenie kolorów
  79.  
  80. $bialy = ImageColorAllocate($ob,255,255,255);
  81. $niebieski = ImageColorAllocate($ob,0,64,128);
  82. $czerwony = ImageColorAllocate($ob,0,0,0);
  83. $rozowy = ImageColorAllocate($ob,255,78,243);
  84.  
  85. $kolor_tekstu = $czarny;
  86. $kolor_procentow = $czarny;
  87. $kolor_tla = $bialy;
  88. $kolor_linii = $czarny;
  89. $kolor_slupka = $niebieski;
  90. $kolor_liczb = $rozowy;
  91.  
  92. //stworzenie "kadru" do rysowania
  93.  
  94. ImageFilledRectangle($ob,0,0,$szerokosc-1,$wysokosc-1,$kolor_tla);
  95.  
  96. //narysowanie kontuwrów wokól kadru
  97. ImageRectangle($ob,0,0,$szerokosc-1,$wysokosc-1,$kolor_linii);
  98.  
  99. //dodanie tytulu
  100.  
  101. $tytul = 'Wyniki glosowania';
  102. $wymiary_tytulu = ImageTTFBBox($rozmiar_tytulu, 0, $czcionka, $tytul);
  103. $dlugosc_tytulu = $wymiary_tytulu[2]-$wymiary_tytulu[0];
  104. $wysokosc_tytulu = abs($wymiary_tytulu[7]-$wymiary_tytulu[1]);
  105. $tytul_nad_linia = abs($wymiary_tytulu[7]);
  106. $tytul_x = ($szerokosc-$dlugosc_tytulu)/2; //wysrodkowanie w x 
  107. $tytul_y = ($y-$wysokosc_tytulu)/2+$tytul_nad_linia; //wysrodkowanie w y
  108. ImageTTFText($ob, $rozmiar_tytulu, 0, $tytul_x, $tytul_y, $kolor_tekstu, $czcionka, $tytul);
  109.  
  110. // narysowanie bazy od nieco ponad pozycja pierwszego slupka do nieco ponizej pozy
    cji ostatniego
  111.  
  112. ImageLine($ob, $x, $y-5, $x, $wysokosc-15, $kolor_lini);
  113.  
  114. /*******************************
  115. Umieszczanie danych na wykresrie
  116. ********************************/ 
  117.  
  118. // pobranie kazdej lini bazy danych i naryowanie odpowiednich slupków
  119.  
  120. while ($rzad = mysql_fetch_object())
  121. {
  122. if($glosow > 0)
  123.  $procent = intval(round(($rzad->glosow/$glosow)*100));
  124. else
  125.  $procent = 0;
  126.  
  127. // wyswietlanie procentów dla tej wartosci
  128.  
  129. $wymiary_procentow = ImageTTFBox($rozmiar_podstawowy, 0, $czcionka, $procent, '%');
  130. $slugosc_procentow = $wymiary_procentow[2]-$wymairyprocentow[0];
  131. ImageTTFText($ob,$rozmiar_podstawowy, 0, $szerokosc-$dlugosc_procentow-$wciecie_tekstu,$y+($wysokosc_slupka/2), $kolor_procentow, $czcianka, $procent, '%');
  132.  
  133. //dlugosc slupka dla tej wartosci
  134.  
  135. $dlugosc_slupka = $x+($procent*$jednostka_slupka);
  136.  
  137. //narysowanie slupka dla tej wartosci
  138.  
  139. ImageFilledRectangle($ob, $x, $y-2, $dlugosc_slupka, $y+$wysokosc_slupka, $kolor_slupka);
  140.  
  141. //narysowanie tytulu dla tej wartosci
  142.  
  143. ImageTTFText($ob, $rozmiar_podstawowy, 0, $wciecie_tekstu, $y+($wysokosc_slupka/2), $kolor_tekstu, $czcionka, "$rzad->nauczyciel");
  144.  
  145. //narysowanie konturu pokazujacego 100%
  146.  
  147. ImageRectangle($ob, $dlugosc_slupka+1, $y-2, ($x+(100*$jednostka_slupka)), $y+$wysokosc_slupka, $kolor_linii);
  148.  
  149. //wyswietlanie liczb
  150.  
  151. ImageTTFText($ob, $rozmiar_maly, 0, $x+(100*$jednostka_slupka)-50, $y+($wysokosc_slupka/2), $kolor_liczb, $czcionka, $rzad->glosow. '/'.$glosow);
  152.  
  153. // przesuniecie nastepnego slupka
  154.  
  155. $y = $y+($wysokosc_slupka+$odleglosc_slupkow);
  156.  
  157. }
  158.  
  159. /******************************************
  160. Wyswitlanie obrazka!
  161. ******************************************/
  162.  
  163. Header(Content=type: image/png);
  164. ImagePNG($ob);
  165.  
  166. /******************************************
  167. Zwalnianie zasobów
  168. ******************************************/
  169.  
  170. ImageDestroy($ob);
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177. ?>


Pozdrawiam

Ten post edytował Lejto 27.11.2007, 18:55:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Lejto
post
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


zrobiłem tak jak piszesz błąd w cz. 1 linia 9 usunąłem

Header mam tak:
  1. <?php
  2. header("Content-type: image/png");
  3. ?>

tak jak na php.net

i nadal nie działa a błędy są te same (IMG:http://forum.php.pl/style_emoticons/default/angrysmiley.gif) (IMG:http://forum.php.pl/style_emoticons/default/angrysmiley.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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: 8.10.2025 - 16:26