offline
- zend
- Počasni građanin
- Pridružio: 22 Okt 2009
- Poruke: 900
- Gde živiš: Pancevo
|
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.
[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.
<?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);
?>
|