CODE
$wybor=$_REQUEST['wybor'];
if(!$bd_polacz=new mysqli('localhost', 'ankieta', 'ankieta', 'ankieta'))
{
echo 'Nie udalo sie nawiazac polaczenia
';
exit;
};
if (!empty($wybor))
{
$wybor=addslashes($wybor); //formatuje ciag znakow, addslashes()
$zapytanie="update wynik_sondy
set ilosc_glosow = ilosc_glosow +1
where srednia = '$wybor'";
if(!($wynik=@$bd_polacz->query($zapytanie)))
{
echo 'Nie udalo nawiazac sie polaczenia
';
exit;
}
};
//pobranie aktualnych wynikow sondy
$zapytanie ='select * from wynik_sondy';
if(!($wynik=@bd_polacz->query($zapytanie)))
{
echo 'Nie udalo nawiazac sie polaczenia';
exit;
}
$ilosc_glosow=0;
while ($rzad=$wynik->fetch_object())
{
$ilosc_glosow+=$rzad->ilosc_glosow;
}
$wynik->data_seek(0); // wyzerowanie wskaznika wyniku
// obliczenie wykresu
//ustawienie stalych
putenv('GDFONTPATH=c:\WINDOWS\Fonts');
$szerokosc=600; //w pikselach
$lewy_margines=60;
$prawy_margines=60;
$wysokosc_slupka=40;
$odleglosc_slupkow=$wysokosc_slupka/2;
$czcionka='arial';
$rozmiar_tytulu=16; //w stopniach
$rozmiar_podstawowy=12; //w stopniach
$rozmiar_maly=12;
$wciecie_tekstu=10; //odleglosc lewych etykiet tekstowych od lewej krawedzi obrazka
//ustawienie poczatkowego punktu rysowania
$x=$lewy_margines+70; //miejsce narysowania wykresu
$y=50;
$jednostka_slupka=($szerokosc-($x+$prawy_margines))/100; //jeden stopien wykresu
//obliczenie wysokosci wykresu - slupki plus przerwy plus pewnien margines
$wysokosc=$ilosc_kandytatow*($wysokosc_slupka+$odleglosc_slupkow)+50;
//stworzenie pustego kadru
$ob=imagecreateTrueColor($szerokosc, $wysokosc);
//Przydzielenie kolorow
$bialy=ImageColorAllocate($ob,255,255,255);
$niebieski=ImageColorAllocate($ob, 0, 64, 128);
$czarny=ImageColorAllocate($ob, 0, 0, 0);
$dziwny=ImagecolorAllocate ($ob, 140, 78, 245);
$kolor_tekstu=$czarny;
$kolor_procentow=$czarny;
$kolor_tla=$bialy;
$kolor_linii=$czarny
$kolor_slupka=$niebieski;
$kolor_liczb=$dziwny;
//stworzenie kadru do rysowania
ImageFilledRectangle($ob,0,0,$szerokosc-1,$wysokosc-1, $kolor_tla);
//narysowanie konturow wokol kadru
ImageRectangle($ob, 0, 0, $szerokosc-1, $wysokosc-1,$kolor_linii);
//dodanie tytulu
$tytul="Wyniki sondy";
$wymiary_tytulu=ImageTTFBBox($rozmiar_tytulu, 0, $czcionka, $tytul);
$dlugosc_tytulu=$wymiary_tytulu[2] - $wymiary_tytulu[0];
$wysokosc_tytulu=abs($wymiary_tytulu[7]-$wymiary_tytulu[1]);
$tytul_nad_linia=abs($wymiary_tytulu[7]);
tytul_x=($szerokosc-$dlugosc_tytulu)/2; //wysrodkowane w x
tytul_y=($y-wysokosc_tytulu)/2+$tytul_nad_linia; //wysrodkowane w y
ImageTTHText($ob, $rozmiar_tytulu, 0, $tytul_x, $tytul_y, $kolor_tekstu, $czcionka, $tytul);
//narysowanie bazy od pierwszego do ostaniego slupka
ImageLine($ob, $x, $y-5, $x, $wysokosc-15, $kolor_linii);
//dane na wykresie
//pobieranie kazdej linii bazy danych i narysowanie odpowiadajacych slupkow
while ($rzad=$wynik->fetch_object())
(
if($ilosc_glosow>0)
$procent=intval(round($rzad->ilosc_glosow/$ilosc_glosow)*100));
else
$procent=0;
//Wyswietlanie procentow dla tej wartosci
$wymiary_procentow=ImageITFBbox($rozmiar_podstawowy, 0,$czcionka, $procent, '%');
$dlugosc_procentow=$wymiary_procentow[2]-$wymiary_procentow[0];
ImageTTFText($ob, $rozmiar_podstawowy, 0, $szerokosc-$dlugosc_procentow-$wciecie_tekstu,$y+
($wysokosc_slupka/2), $kolor_procentow, $czcionka, $procent, '%');
// dlugosc slupka dla tej wartosci
$dlugosc_slupka=$x+($procent*$jednostka_slupka);
// narysowanie slupka dla tej wartosci
ImageFilledRectangle($ob, $x, $y-2, $dlugosc_slupka, $y+$wysokosc_slupka, $kolor_slupka);
//narysowanie tytulu dla tej wartosci
ImageTTFText ($ob, $rozmiar_podstawowy, 0, $wciecie_tekstu, $y+($wysokosc_slupka/2), $kolortekstu,
$czcionka, "$rzad->srednia");
//narysowanie konturu pokazujacego 100%
ImageRectangle($ob, $dlugosc_slupka+1, $y-2, ($x+(100*$jednostka_slupka)), $y+$wysokosc_slupka,
$kolor_linii);
//wyswietlenie liczb
ImageTTFText($ob, $rozmiar_maly, 0, $x+(100*$jednostka_slupka) -50, $y+($wysokosc_slupka/2), $kolor_liczb,
$czcionka, $rzad->ilosc_glosow,'/',$ilosc_glosow);
}
//Wyswietlenie obrazka
Header('Content=type: image/png');
ImagePNG($ob);
//Zwalnianie zasobow
ImageDestroy($ob);
?>