ImagePNG arbeitet nicht so richtig

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ImagePNG arbeitet nicht so richtig

    servus!

    Ich versuche mit einem Skript eine Grafik zu erstellen. Dazu lese ich aus einer Datenbank erst die Besucher von gestern und heute aus. Danach will ich zwei Graphen (heute, gestern) zeichnen lassen. Soweit so gut. Den Graphen für heute zeichnet er auch. Nur den für gestern nicht. Er liest die Daten auch richtig aus der DB und gibt die Zahl richtig aus. Aber er malt eben den zweiten Graphen nicht. any suggestions?

    PHP-Code:
    <?
    require("connect.inc.php");

    $pic = ImageCreate(500, 500);

    $weiss = ImageColorAllocate($pic, 255, 255, 255);

    $schwarz = ImageColorAllocate ($pic, 0, 0, 0);

    $rot = ImageColorAllocate ($pic, 255, 0, 0);

    $datum1 = date("d.m.y", time());

    $gestern = date("d.m.y", time() - 86400);

    $erg1 = mysql_query ("SELECT * FROM hits", $link)
            or die (mysql_errno().": ".mysql_error()."<BR>");

    $menge = mysql_num_rows($erg1);

    while($row = mysql_fetch_row($erg1)){
        if ($row[0] == $datum1) {
            ImageFilledRectangle($pic, 5, 0, 100, $row[1], $rot);
            ImageString($pic, 4, 5, 452, "heute " . $row[1] . " Besucher", $schwarz);
        }elseif ($row[0] == $gestern) {
            ImageFilledRectangle($pic, 200, 0, 100, 20, $schwarz);
            ImageString($pic, 4, 200, 452, "gestern " . $row[1] . " Besucher", $schwarz);
        }

    }

    ImagePNG($pic);

    ImageDestroy($pic);

    ?>
    P.S.: den misslungenen Graphen gibts unter www.pumu.info/test/image.php

  • #2
    also bei deinem "heute" hast du einen fixen höhen-endpunkt. Der Balken wird nach unten erweitert/gekürzt.

    Dein Gestern ist voll statisch!

    ist das beabsichtigt?

    und dein 2. Graph wird nicht gemalt, weil du eine if/elseif abfrage drin hast, die $row[0] vergleicht.

    entweder kann dein $row[0] gestern oder heute sein - aber doch net beides, also wird auch nur einer gemalt.
    tata
    moqui

    [COLOR=red]Ich will keine unaufgeforderten Mails über PHP Fragen. Es gibt ein Forum hier! Und ich bin nicht Scripter für jeden, der mir ne Mail schreibt![/COLOR]

    Kommentar


    • #3
      bei deinem zweiten Graphen liegt der untere rechte Punkt (x=100,y=20) LINKS neben dem linken oberen Punkt (x=200,y=0). Vermutlich kann die Funktion damit nicht umgehen.

      Moqui hat recht, dass du beim zweiten Graph einen festen Wert ausgibt und nicht $row[1] anstatt "20".
      Allerdings stimmt die Behauptung mit der if-Abfrage nicht, d.h. die Schleife wird korrekt abgearbeitet (sieht man ja daran, dass die Schrift ausgegeben wird).

      Verbesserungsvorschlag:
      selektiere nicht alle Datenbankeinträge, sondern nur die, die du brauchst (WHERE feldname1=$datum1 OR feldname1=$gestern), d.h. dann erhälst du ein Resultset mit nur zwei Zeilen (anstatt der kompletten Tabelle). Und wenn du ein ORDER BY einbaust, dann fällt sogar die if-Abfrage in der Ausgabe weg. Rein theoretisch könntest du auch die Schleife weglassen, da ja bekanntermaßen nur zwei Resultzeilen geliefert werden.

      Kommentar


      • #4
        der feste wert war ein versehen... hatte das skript geschrieben, dann keine lust mehr, weils nicht lief...
        mein letzter schritt vor zwei wochen war aber, die vars mal rauszulassen... hatte dann vergessen, sie wieder reinzunehmen...

        des problems lösung war aber wirklich der rechte untere punkt, der LINKS vom linken lag... nu klappts... danke vielmals!

        Kommentar

        Lädt...
        X