Otoz napisalem skrypt ktory ma za zadanie wyswietlic prosty wykres. Odpalilem go na xampp(PHP 5.3) i dziala.
Nastepnie chcialem go uruchomic na serwerze zaoferowanym przez ugu.pl. No i jak sie pewnie domyślacie nie dziala.
Oto kod:
<?php
//Dane do wykresu
$obecnosci=array('Wrzesien'=>15,'Pazdziernik'=>40, 'Listopad'=>33
); $uczestnicy=55;
// konfiguracja obrazka
$szerokosc=500;
$wysokosc=500;
$prawy_margines=100;
$lewy_margines=100;
$naglowek=99;
$stopka=100;
$x=0;//gdzie ma rozpoczac rysowanie
$x=$x+$prawy_margines;
$tytul='Frekwencja';
$czcionka='arial.ttf';
$rozmiar_podst=10;
$rozmiar_tyt=16;
$jednostka=($wysokosc-($naglowek+$stopka))/100;//jednostka slupka
//tworzymy kadr
$kadr=ImageCreateTrueColor($szerokosc,$wysokosc);
//tworzymy kolory
$niebieski=imagecolorallocate($kadr,50, 255, 255);
$czarny=imagecolorallocate($kadr,0,0,0);
$bialy=ImageColorAllocate($kadr,255,255,255);
$rozowy=ImageColorAllocate($kadr,255,78,243);
//robimy obramowanie oraz wypelniamy tlem
ImageFill($kadr,0,0,$bialy);
ImageRectangle($kadr,0,0,$szerokosc-1,$wysokosc-1,$czarny);
//Rysujemy wykresy. Wykres bedzie rysowany na takiej zasadzie. Poniewaz y w GD2 jest licziny "do dolu" wiec slupki beda
//tak jakby odwrocone.Zeby oddac wlasciwe proporcje bedziemy rysowac dwa wypelnione prostokaty + obramowanie
foreach($obecnosci as $miesiac=>$freq)
{//foreach
//Obliczamy % frekwencji w danym miesiacu aby pozniej wyswietlic go na wykresie
$procent=($freq/$uczestnicy)*100;
$procent=round($procent,0
);//zaokraglamy procent
$x=$x+30; //robimy 30 pixelowe odstepy od slupkow
//Rysujemy slupki
ImageRectangle($kadr,$x-1,400,($x+61),99,$czarny);//odpowiada za obramowanie
//Teoretycznie wyswietla niezapelniona przestrzen w praktyce pokazuje zapelniona co oddaje efekt proporcji z glosow
ImageFilledRectangle($kadr,$x,400,($x+60),100,$czarny);//x(wraz z przerwa),(400),(x+60)=grubosc slupka,100
ImageFilledRectangle($kadr,$x,100,$x+60,(400-($procent*$jednostka)),$bialy);//zamalowuje na bialo "wolna" przestrzen.
//Od 400 odejmuje procent(czyli procent*jednosta slupka, jest to y2) glosow
//Wyswietlmay nazwy miesiecy dla danego slupka oraz aktualny %
$wspol_x=$x;//wspolrzedna x nazwy miesiaca
$wspol_y=450;//wspolrzedna y nazwy miesiaca
$proc_na_wykr=round(($freq/55
)*100
,0
);//procent na wykresie
ImageTTFText($kadr,$rozmiar_podst,0,$wspol_x,$wspol_y,$rozowy,$czcionka,$miesiac);//Wyswietlmay nazwe miesiaca
ImageTTFText($kadr,$rozmiar_podst,0,$x+15,250,$rozowy,$czcionka,$proc_na_wykr."%");
$x+=60; //dodajemy do x 60 poniewaz nie zrobilismy tego wczesniej. Jest to szerokosc slupka
}//end foreach
//Na koniec dodajemy tytul do wykresu
ImageTTFText($kadr,$rozmiar_tyt,0,200,50,$czarny,$czcionka,$tytul);
header('Content-type: image/png'); ImagePNG($kadr);
ImageDestroy($kadr);
?>
Na serwerze ugu jest wersja PHP 5.2.
Co sie mogło stać?
Zaznaczam, ze yslalem na serwer rowniez plik z czcionka.
Ten post edytował sky993 17.09.2011, 13:05:40