![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 18.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki kod mający za zadanie generować wykres słupkowy i wyświetlać go na stronie, jednak coś nie działa. Chciałbym aby wykres sie pokazal na stronie, a od razu po wejsciu na strone zostaje on pobierany i zapisywany do pliku. Czy ktoś widzi jakiś błąd?
[php:1:1da7d460b8]<?php //określ parametry wykresu $GraphWidth = 400; $GraphHeight = 200; $GraphScale = 2; $GraphFont = 5; $GraphData = array("99", "75", "15", "66", "22"); $GraphLabel = array("Wołowina", "Kurczak", "Wieprzowina", "Jagnięcina", "Ryby"); //stwórz rysunek $image = imagecreate($GraphWidth, $GraphHeight); //przydziel kolory $colorBody = imagecolorallocate($image, 0xFF, 0xFF, 0xFF); $colorGrid = imagecolorallocate($image, 0xCC, 0xCC, 0xCC); $colorBar = imagecolorallocate($image, 0xFF, 0x00, 0x00); $colorText = imagecolorallocate($image, 0x00, 0x00, 0x00); //wypełnij tło wykresu imagefill($image, 0, 0, $colorBody); //narysuj pionową linię skali $GridLabelWidth = imagefontwidth($GraphFont)*3 + 1; imageline($image, $GridLabelWidth, 0, $GridLabelWidth, $GraphHeight-1, $colorGrid); //narysuj poziome linie skali for($index = 0; $index < $GraphHeight; $index += $GraphHeight/10) { imagedashedline($image, 0, $index, $GraphWidth-1, $index, $colorGrid); //wyświetl etykietę imagestring($image, $GraphFont, 0, $index, round(($GraphHeight - $index)/$GraphScale), $colorText); } //narysuj dolną linię imageline($image, 0, $GraphHeight-1, $GraphWidth-1, $GraphHeight-1, $colorGrid); //narysuj każdy słupek $BarWidth = (($GraphWidth-$GridLabelWidth)/count($GraphData)) - 10; for($index = 0; $index < count($GraphData); $index++) { //słupek $BarTopX = $GridLabelWidth + (($index+1) * 10) + ($index * $BarWidth); $BarBottomX = $BarTopX + $BarWidth; $BarBottomY = $GraphHeight-1; $BarTopY = $BarBottomY - ($GraphData[$index] * $GraphScale); imagefilledrectangle($image, $BarTopX, $BarTopY, $BarBottomX, $BarBottomY, $colorBar); //wyświetl etykietę $LabelX = $BarTopX + (($BarBottomX - $BarTopX)/2) - (imagefontheight($GraphFont)/2); $LabelY = $BarBottomY-10; imagestringup($image, $GraphFont, $LabelX, $LabelY, "$GraphLabel[$index]: $GraphData[$index]", $colorText); } //prześlij obrazek do przeglądarki header("Content-type: image/gif"); imagegif($image); ?>[/php:1:1da7d460b8] |
|
|
![]() |
![]()
Post
#2
|
|
Administrator serwera Grupa: Przyjaciele php.pl Postów: 909 Pomógł: 0 Dołączył: 12.08.2003 Skąd: /var/www/wroclaw.php Ostrzeżenie: (0%) ![]() ![]() |
Twoja linijka 94: imagegif($image);
Masz GD w wersji 1.3 lub starszej? Nowsze wersje tej biblioteki (niż 1.3) nie obsługują formatu GIF w związku z umową licencyjną nałożoną na ten format ... Może zamiast pisać taki skrypt od podstaw zainteresui się klasą JPGraph... Strona projektu: http://www.aditus.nu/jpgraph/ Download: http://www.aditus.nu/jpgraph/jpdownload.php P.S. Ja już z powodzeniem używam tej klasy do generowania np. statystyk z Diablo... (do generowania obrazka użyłem 64 linijek kodu w których mam również obsługę bazy danych i różnych dodatkowych aspektów, jak mnogość danych do wyświetlenia...) Przykład: http://idn.myftp.org/forum.php.pl/diablo.png |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 127 Pomógł: 0 Dołączył: 19.11.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Fajny ten jpgraph - tylko licencja trochę bolesna - znacie może coś co jest freeware albo LGPL. Nie musi być tak wypasione - wystarczy, że potrafi skalować wykresy.
|
|
|
![]()
Post
#4
|
|
Administrator serwera Grupa: Przyjaciele php.pl Postów: 909 Pomógł: 0 Dołączył: 12.08.2003 Skąd: /var/www/wroclaw.php Ostrzeżenie: (0%) ![]() ![]() |
Z tego co pamiętam jest wersja free o mniej restrykcyjnej licencji...
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 8.02.2004 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Polecam PHPLot (do zassania TUTAJ).
Skrypt ten umozliwia generowanie roznego rodzaju wykresow. Od prostych - slupkowych pionowych, poziomych... konczac na KOLOWYCH!! Goraco polecam. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 23:40 |