Diagrammscript geht nicht

ts230

Gesperrt
Hallo,

ich habe hier ein Problem mit meinem PHP-Script, welches ein Diagramm als PNG ausgeben soll. Anstatt dem Diagramm kriege ich nur diese Meldung von Firefox:
Zitat von Firefox»»
Die Grafik "http://tiersendung.ti.funpic.de/test/phpchart.php" kann nicht angezeigt werden, weil sie Fehler enthält.
Ein String in das Bild schreiben geht komischerweise.:confused::confused::confused:

Hier mein Script:
PHP:
<?php
header ("Content-type: image/png");
$im = @ImageCreate (300, 300)
      or die ("Kann keinen neuen GD-Bild-Stream erzeugen");
$psTitle = array( '1',  '220', '1',  '1');  
$psAxisLabel = "Statistik der Bildertypen";
$paColors = array('160, 160, 160', '112, 112, 112', '4, 87, 148', '255, 4, 4');
$background_color = ImageColorAllocate ($im, 204, 204, 204);
$text_color = ImageColorAllocate ($im, 233, 14, 91);
$white = "88, 54, 0";
ImageString($im, 1, 1, 1, 1, $psAxisLabel, $white);//schreibt den Diagrammtitel
imagefilledrectangle($im, $psTitle[0], 30, 1, 30, $paColors[1]); //zeichnet den Balken
ImageString($im, $psTitle[0] * 3, 15, 1, 15, "GIF:".$psTitle[0]."", $white);//schreibt die Bezeichnung:
imagefilledrectangle($im, $psTitle[1], 65, 1, 65, $paColors[0]); //zeichnet den Balken
ImageString($im, $psTitle[1] * 3, 15, 1, 15, $white, "JPG:".$psTitle[1]."", $white);//schreibt die Bezeichnung:

imagefilledrectangle($im, $psTitle[2], 100, 1, 100, $paColors[3]);//zeichnet den Balken
ImageString($im, $psTitle[2] * 3, 15, 1, 15, $white, "TIFF u. BMP:".$psTitle[2]."", $white);//schreibt die Bezeichnung:

imagefilledrectangle($im, $psTitle[3], 135, 1, 135, $paColors[2]); //zeichnet den Balken
ImageString($im, $psTitle[3] * 3, 15, 1, 15, $white, "andere:".$psTitle[3]."", $white);//schreibt die Bezeichnung:
ImagePNG($im);
?>
Ich hoffe, ihr könnt mir helfen.
Na ja, das ist mein erstes PHP-Script was ein PNG-Bild ausgibt.

Danke für alle Antworten im Voraus
 
Zuletzt bearbeitet:
Einfach die [phpf]header[/phpf] Anweisung kurz auskommentieren und [phpf]error_reporting[/phpf], falls nötig, auf E_ALL stellen. Dann sollten auch hier die Fehler angezeigt werden.
 
So,
ich kann mit den Fehlermeldungen irgendwie nichts anfangen.

Hier sind sie:
PHP:
Warning:  Wrong parameter count for imagestring() in /usr/export/www/vhosts/funnetwork/hosting/tiersendung/test/phpchart.php on line 13

Warning:  Wrong parameter count for imagestring() in /usr/export/www/vhosts/funnetwork/hosting/tiersendung/test/phpchart.php on line 15

Warning:  Wrong parameter count for imagestring() in /usr/export/www/vhosts/funnetwork/hosting/tiersendung/test/phpchart.php on line 17

Warning:  Wrong parameter count for imagestring() in /usr/export/www/vhosts/funnetwork/hosting/tiersendung/test/phpchart.php on line 20

Warning:  Wrong parameter count for imagestring() in /usr/export/www/vhosts/funnetwork/hosting/tiersendung/test/phpchart.php on line 23
‰PNG  ??? IHDR??,??,???C³6???PLTEÌÌÌé[:}¹???"IDAThíÁ1??? õOm ? ???????????x-´?Ô{“????IEND®B`‚

Ich habe aber keinen Parameter »count«.

Wisst ihr an was es liegen könnte?
 
Kenn mich zwar mit php nicht aus, aber ich versteh es eher so, das in deiner testdatei bei den zeilen 13, 15, 17 20 und 23 ein Fehler drin ist.
 
"Wrong Parameter count" bedeutet nicht das der Parameter 'count' falsch ist oder nicht existiert, sondern das die Anzahl der Parameter nicht stimmt.

Entweder hast du zu viel oder zu wenig Parameter angegeben.... schau doch mal im PHP Manual nach was für Parameter die Funktion erwartet.
 
Jetzt geht es aber
Ich habe ein paar Funktionen völlig falsch benutzt:)
Jetzt habe ich es korrigiert und eine Legende eingezeichnet, die ich eigentlich mit einer gestrichelten Linie die Horizontal verläuft vom Diagramm trennen wollte. Egal welche x1 ,x2, y1, y2 -Werte ich angebe, die Linie ist einfach Vertikal.Ich habe PHP 5.x.x .
Hier das Fertige Diagramm als PNG(wird auch als PNG ausgegeben):
Live auf
dieser Seite.
 

Anhänge

  • diagramm_pct.php.png
    diagramm_pct.php.png
    1,2 KB · Aufrufe: 32
Zuletzt bearbeitet:
So, schon wieder ein Problem in Version 2.
Eigentlich funktioniert es wie das Erste, aber es bezieht seine Werte aus einer Datenbank.Die Bildgrößenoptimierung erkennt zwar die Balken,aber es werden der Balken, die Beschreibung(der kleine Text der z.b. zeigt das der blaue Balken für »bla« zuständig ist), der Wert oder der Text der definierbar ist,der in der Legende gezeigt wird.Auf gut Deutsch: er zeichnet nichts, was seine erte aus einer Datenbank bezieht

Hier der Code:
PHP:
<?php
error_reporting(E_ALL);
    include "config.php"; 
    mysql_connect('', 'tiersendung', '') OR die(mysql_error());
    mysql_select_db('tiersendung_03') OR die(mysql_error());
$sql = "SELECT
name, wert, farbe, farbe2, dtex
FROM
TS_Diagramm
";
$i = "0";
$result = mysql_query($sql)or die("Fehler bei Query: <pre>".$sql."</pre>\n". "MySQL-Antwort: ".mysql_error());
while($row = mysql_fetch_assoc($result)) 
{
$i ++;
}
if($i == "1")
{
$breite = "300";
$hoehe = "300";
}
else if($i == "2")
{
$breite = "400";
$hoehe = "400";
}
else if($i == "3")
{
$breite = "400";
$hoehe = "400";
}
else if($i == "4")
{
$breite = "450";
$hoehe = "450";
}
else if($i == "5")
{
$breite = "500";
$hoehe = "500";
}
else if($i == "6")
{
$breite = "550";
$hoehe = "550";
}
else if($i == "7")
{
$breite = "600";
$hoehe = "600";
}
else if($i == "8")
{
$breite = "700";
$hoehe = "700";
}
else if($i == "9")
{
$breite = "800";
$hoehe = "800";
}

$im = ImageCreate ($breite, $hoehe);//erstellt ein neues Bild
//$paColors = array($c1, $c2, $c3, $c4);// die Balkenfarben
$background_color = ImageColorAllocate ($im, 204, 204, 204);//Hintergrundfarbe des Bilds(grau, in RGB)
$text_color = ImageColorAllocate ($im, 233, 14, 91);//zweite Textfarbe
$psTitle = array( "18",  "223", "1",  "0", "0");//Die Bilderanzahlen der Typen
$psTitles = array($psTitle[0] / 6, $psTitle[1] / 6, $psTitle[2] / 6, $psTitle[4] / 6, $psTitle[3] / 6,);//Die Bilderanzahlen der Typen werden an die Skalierung angepasst
$white = "88, 54, 0";//normale Textfarbe
$c1 =  ImageColorAllocate ($im, 160, 160, 160);//Farbe 1
$c2 =  ImageColorAllocate ($im, 112, 112, 112);//Farbe 2
$c3 =  ImageColorAllocate ($im, 4, 87, 148);//Farbe 3
$c4 = ImageColorAllocate ($im, 255, 4, 4);//Farbe 4
$c5 = ImageColorAllocate ($im, 255, 255, 255);//Farbe 5
$c6 = ImageColorAllocate ($im, 1, 1, 1);//Farbe 6
$c7= ImageColorAllocate ($im, 190, 190, 190);//Farbe 7
$c8 = ImageColorAllocate($im, 255, 0, 0);//Farbe 8
$c9 = ImageColorAllocate($im, 0, 255, 0);//Farbe 9 
$tts = "2";
$hh = "1";
$dd = $hh + 65;
$df = $hh + 65;
$today_date = date("d.m.y");
$std = "Stand:".$today_date."";
$today_time = date("H:i:s");
$stds = "Grafik wurde um ".$today_time." Uhr erzeugt";
$psAxisLabel = "Diagramm: \\====Diagrammtitel====\\";//der Diagrammmtitel
header ("Content-type: image/png");//Das Bild soll ein PNG sein, d.h. wird der Header auf »image/png« gesetzt
//.................................................................................................................................................................................................................................................
ImageString($im, 5, 1, 1, $psAxisLabel, $c3);//schreibt den Diagrammtitel
for ( $a=0; $a == $i ; $a++ )
{ 
imagefilledrectangle($im, $row['wert'] / $tts, 30, 1, 50, $row['farbe']); //zeichnet den Balken

ImageString($im, 4, $row['wert'] / 2, 33, $row['wert'], $row['farbe2']);//Schreibt den Wert

/*
imagefilledrectangle($im, $psTitles[1], 65, 1, 85, $c2); //zeichnet den Balken

ImageString($im, 4, $psTitles[1] / 2, 67, $psTitle[1], $c1);//Schreibt den Wert

imagefilledrectangle($im, $psTitles[2], 100, 1, 120, $c3);//zeichnet den Balken

ImageString($im, 4, $psTitles[2] / 2, 103, $psTitle[2], $c4);//Schreibt den Wert

imagefilledrectangle($im, $psTitles[4], 135, 1, 155, $c5); //zeichnet den Balken

ImageString($im, 4, $psTitles[4] / 2, 137, $psTitle[3], $c3);//Schreibt den Wert

imagefilledrectangle($im, $psTitles[3], 165, 1, 185, $c4); //zeichnet den Balken

ImageString($im, 4, $psTitles[3] / 2, 167, $psTitle[4], $c5);//Schreibt den Wert



ImageString($im, 1, 1, 340, "0", $c3);//Schreibt den Wert

ImageString($im, 1, 30, 340, "180",.php $c3);//Schreibt den Wert

ImageString($im, 1, 60, 340, "360", $c3);//Schreibt den Wert

ImageString($im, 1, 90, 340, "540", $c3);//Schreibt den Wert

ImageString($im, 1, 120, 340, "720", $c3);//Schreibt den Wert

ImageString($im, 1, 150, 340, "900", $c3);//Schreibt den Wert

ImageString($im, 1, 180, 340, "1080", $c3);//Schreibt den Wert

ImageString($im, 1, 210, 340, "1260", $c3);//Schreibt den Wert

ImageString($im, 1, 240, 340, "1440", $c3);//Schreibt den Wert

ImageString($im, 1, 270, 340, "1620", $c3);//Schreibt den Wert

ImageString($im, 1, 300, 340, "1800", $c3);//Schreibt den Wert

ImageString($im, 1, 330, 340, "1980", $c3);//Schreibt den Wert

ImageString($im, 1, 360, 340, "2160", $c3);//Schreibt den Wert

ImageString($im, 1, 390, 340, "2340", $c3);//Schreibt den Wert

ImageString($im, 1, 420, 340, "2520", $c3);//Schreibt den Wert

ImageString($im, 1, 450, 340, "2700", $c3);//Schreibt den Wert

ImageString($im, 1, 480, 340, "2880", $c3);//Schreibt den Wert

imageline($im, 1, 350, 500, 350, $c3);//zeichnet eine 1Pixel hohe ,Violette Linie
*/

ImageString($im, $df, 1, $dd + 23, "".$row['name']."(".$row['wert'].")", $row['farbe']);//Schreibt die Legende
}
imagefilledrectangle  ($im, 1, $hoehe - 180, $hoehe , $breite, $c6);//zeichnet die Abgrenzung zwischen Diagramm und Legende
ImageString($im, 5, 1, $hoehe - 170, "Legende", $c9);//Schreibt die Legende
ImageString($im, 1, 1,  $hoehe - 155, 'die Textfarbe entspricht der Balkenfarbe', $c9);//Schreibt die Legende
ImageString($im, 1, 2, $hoehe - 30, $stds, $c9);//Schreibt die Legende
ImageString($im, 1, 2, $hoehe - 20, $std, $c9);//Schreibt die Legende
ImageString($im, 1, 2,  $hoehe - 10, "gezeichnet mit TS-Diagramm V. 1.0. -- http://tiersendung.funpic.de/ , Änderungen vorbehalten", $c9);//Schreibt die Legende
ImageString($im, 1, 100, $hoehe - 20, $psAxisLabel, $c8);//schreibt den Diagrammtitel
ImageString($im, 1, 190, $hoehe - 40, $row['dtex'], $c8);//schreibt den Diagrammtitel
ImagePNG($im);//schreibt alles in ein PNG
imageline($im, 1, 359, 500, 379, $c9);//zeichnet eine 1Pixel hohe ,grüne Linie
//..................................................................................................................................................................................................................................................
imagedestroy($im);//löscht das Bild aus dem Speicher,da es sich jetzt im Cache des Browser befindet
?>

Auch live hier zu sehen.


Ich hoffe, ihr könnt mir helfen.Wenn ihr mehr Angeben benötigt, dann postet dies.

Danke für alle Antworten im Voraus!
 
Zuletzt bearbeitet:
Zurück