[ alfa-pro @ 17.08.2010. 16:54 ] @
Cao imam problem sa anketom. Sustina je u sledecem: kada korisnik pritisne dugme (Submit, Vote) njegov glas se upisuje u bazu podataka, a zatim ucitavam iz baze tekuce rezultate glasanja i prikazujem ih u obliku trakastog dijagrama. Gresku koju dobijam je sledeca kada pokrenem skriptu. Code: [b] The image “http://localhost/slike/rezultati_glasanja.php” cannot be displayed, because it contains errors. [/b] Slika ne moze biti prikazana jer sadrzi gresku. Gledao sam ceo dan i nikako da pronadjem gde sam napravio gresku??? Ajde ako neko od vas uspe i ako ga ne mrzi nek mi javi ako primeti gresku negde. Evo i koda. Code: <?php /******************************************* Ucitavanje rezultata glasanja *******************************************/ // Ucitavamo glas sa obrasca $glas=$_REQUEST['glas']; // Prijavljujemo se u bazu podataka if (!$db_conn = mysql_connect('localhost', 'root', 'anketa')) { echo 'Ne moze da se uspostavi veza sa bazom podataka<br />'; exit; }; @mysql_select_db('anketa'); if (!empty($glas)) // Ako je korisnik glasao, dodajemo njegov glas // u bazu podataka { $glas = addslashes($glas); $query = "update rezultati_ankete set broj_glasova = broj_glasova + 1 where naziv_glasa = '$glas'"; if(!($result = @mysql_query($query, $db_conn))) { echo 'Ne moze da se uspostavi veza sa bazom podataka<br />'; exit; } }; // Ucitavamo tekuce rezultate glasanja, bez obzira na to da li je // korisnik glasao $query = 'select * from rezultati_ankete'; if(!($result = @mysql_query($query, $db_conn))) { echo 'Ne moze da se uspostavi veza sa bazom podataka<br />'; exit; } $debljina = mysql_num_rows($result); // Izracunavamo broj dosadasnjih glasanja $ukupno_glasova = 0; while ($row = mysql_fetch_object ($result)) { $ukupno_glasova += $row->broj_glasova; } //Pokazivac rezultata postavljamo na nula (0) mysql_data_seek($result, 0); //CRTANJE DIJAGRAMA /******************************************* POCETNI PRORACUN ZA DIJAGRAM *******************************************/ // Inacijalizujemo konstante putenv('GDFONTPATH=C:\WINDOWS\Fonts'); $sirina = 500; // sirina slike u pikselima - uklapa se u 640x480 $leva_margina = 50; // leva margina slike $desna_margina = 50; // desna margina slike $bar_visina = 40; $bar_razmak = $bar_visina/2; $font = 'arial'; $velicina_naslova = 16; // u tackama $glavna_velicina = 12; // u tackama $mala_velicina = 12; // u tackama $pozicija_natpisa = 10; // pozicija natpisa u odnosu na levu ivicu slike // Tacka od koje pocinjemo crtanje linija $x = $leva_margina + 60; // Koordinata osnovne linije dijagrama $y = 50; // Isto $tacka= ( $sirina -( $x + $desna_margina )) / 100 ;// Jedna tacka na dijagramu //Izracunavamo visinu dijagrama = debljina trake + razmaci + margine $visina = $debljina * ($bar_visina + $bar_razmak) + 50; /******************************************* PRIPREMA POZADINE ZA SLIKU *******************************************/ // Pravimo crnu pozadinu slike $slika = ImageCreateTrueColor($sirina,$visina); // Zadajemo boje slike $bela_boja = ImageColorAllocate ( $slika,255,255,255 ); $plava_boja = ImageColorAllocate ( $slika,0,64,128 ); $crna_boja = ImageColorAllocate ( $slika,0,0,0 ); $roza_boja = ImageColorAllocate ( $slika,255,78,243 ); $boja_teksta = $crna_boja; $boja_procenta = $crna_boja; $boja_pozadine = $bela_boja; $boja_linije = $crna_boja; $boja_bara = $plava_boja; $boja_brojeva = $roza_boja; // Pravimo platno po kome cemo da crtamo ImageFilledRectangle($slika,0,0,$sirina,$visina,$boja_pozadine); // Crtamo okvir oko pozadine ImageRectangle($slika,0,0,$sirina-1,$visina-1,$boja_linije); // Ispisujemo naslov $naslov = 'Rezultati glasanja'; $dimenzije_naslova = ImageTTFBBox($velicina_naslova, 0, $font, $naslov); $duzina_naslova = $dimenzije_naslova[2] - $dimenzije_naslova[0]; $visina_naslova = abs($dimenzije_naslova[7] - $dimenzije_naslova[1]); $naslov_iznad_linije = abs($dimenzije_naslova[7]); $naslov_x = ($sirina-$duzina_naslova)/2; // naslov centriramo po sirini $naslov_y = ($y - $visina_naslova)/2 + $naslov_iznad_linije; // po visini ImageTTFText($slika, $velicina_naslova, 0, $naslov_x, $naslov_y, $boja_teksta, $font, $naslov); // Povlacimo osnovnu liniju za trake tako da prolazi malo // iznad prve tacke do ispod poslednje trake ImageLine($slika, $x, $y-5, $x, $visina-15, $boja_linije); /******************************************* PRIKAZIVANJE PODATAKA NA DIJAGRAMU *******************************************/ // Ucitavamo redove s podacima iz baze i crtamo odgovarajuce trake while ($row = mysql_fetch_object ($result)) { if ($ukupno_glasova > 0) $procenat = intval(round(($row->broj_glasova/$ukupno_glasova)*100)); else $procenat = 0; // Prikazujemo procenat koji odgovara tekucoj vrednosti $dimenzija_procenta = ImageTTFBBox($glavni_velicina, 0, $font, $procenat.'%'); $duzina_procenta = $dimenzija_procenta[2] - $dimenzija_procenta[0]; ImageTTFText($slika, $glavni_velicina, 0, $sirina-$duzina_procenta-$pozicija_natpisa, $y+($bar_visina/2), $boja_procenta, $font, $procenat.'%'); if ($ukupno_glasova > 0) $prava_vrednost = intval(round(($row->broj_glasova/$ukupno_glasova)*100)); else $prava_vrednost = 0; // Izracunavamo duzinu trake koja odgovara tekucoj vrednosti $duzina_bara = $x + ($prava_vrednost * $jedinica); // Crtamo traku koja predstavlja tekucu vrednost ImageFilledRectangle($slika, $x, $y-2, $duzina_bara, $y+$bar_visina, $boja_bara); // Ispisujemo naslov ImageTTFText($slika, $glavni_velicina, 0, $pozicija_natpisa, $y+($bar_visina/2), $boja_teksta, $font, "$row->naziv_glasa"); // crtamo pravugaonik koji predstavlja 100% ImageRectangle($slika, $duzina_bara+1, $y-2, ($x+(100*$jedinica)), $y+$bar_visina, $boja_linije); // prikazujemo vrednost ImageTTFText($slika, $mala_velicina, 0, $x+(100*$jedinica)-50, $y+($bar_visina/2), $boja_brojeva, $font, $row->broj_glasova.'/'.$ukupno_glasova); // prelazimo na sledecu traku $y=$y+($bar_visina+$bar_razmak); } /******************************************* Prikazujemo zavrsnu sliku *******************************************/ Header('Content-type: image/png'); ImagePNG($slika); /******************************************* Oslobadjamo resurse *******************************************/ ImageDestroy($slika); ?> |