Abfrage in Zwischenarray speichern

fish-guts

Erfahrenes Mitglied
Hallo

Habe da ein kleines Problem. Ich möchte mit PHP statistische Grafiken erstellen, die Anhand von Daten einer MySQL Datenbank dynamisch generiert werden.

Dazu habe ich folgende Funktion geschrieben:

PHP:
function get_annual_stat()
{
    $im = imagecreate(400,150); //Bilderdaten
    $bg = imagecolorallocate($im,255,255,255); //Bilderdaten
    $textcol = imagecolorallocate($im,165,0,33);//Bilderdaten
    $linecol = imagecolorallocate($im,0,0,0);//Bilderdaten
    connect("stats_2006");//Bilderdaten
    $sql = "SELECT 'logins' FROM login_count ORDER BY 'mon' ASC";//Bilderdaten
    $result = mysql_query($sql);    
    $stats_min = array(1,2,3,4,5,6,7,8,9,10,11,12);
    while($row = mysql_fetch_array($result,MYSQL_ASSOC))  //Hier fängt das Problem an
    {
        $stats_num[] = $row;
    }
//von hier an sollte wieder gut sein
    $mth = array('Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez');
    for($c=0;$c<12;$c++)
    {
        imagestring($im,5,1+$c*30,135,$mth[$c],$textcol);
    }
    for($b=0;$b<14;$b++)
    {
        imageline($im,0,$b*10+5,360,$b*10+5,$linecol);
    }
    imagestring($im,15,362,128,"0",$linecol);
    imagestring($im,15,362,78,"500",$linecol);    
    imagestring($im,15,362,28,"1000",$linecol);        
    imagestring($im,15,200,128,$stats_num[7],$linecol);            
    header("Content-type: image/png");
    imagepng($im);
    imagedestroy($im);
}
In der Grafik zeigt es mir alles schön an, bis auf den Datensatz $stats_num[7]; er schreibt einfach nur "Array" in die Grafik.

Kann jemand helfen?

Gruss

FG
 
Ähh.. so wie ich das sehe, ist doch das Array-Element $stats_num[7] sowieso das einzige, das geschrieben wird. Eigentlich müsste dieser Fehler nämlich für jeden Datensatz auftreten.

Da mysql_fetch_array() wie der Name schon sagt ein Array zurückliefert, wird das Array $stats_num zum zweidimensionalen Array, jedes Array-Element ist seinerseits ein Array mit einem einzigen Element (weil der Select nur ein Feld liefert).

Entweder Du schreibst in der While-Schleife
$stats_num[] = $row[0]
oder Du schreibst weiter unten
imagestring($im, 15, 200, 128, $stats_num[7][0], $linecol);

Grüße,
 
Zuletzt bearbeitet:
Moin

Funktioniert beides nicht, aber vielleicht habe ich mich auch undeutlich ausgedrückt.

$stats_num[7] ist nur ein Testwert. Wenn das ganze fertig ist, sollen 12 Werte aus der DB rausgelesen werden (12 Monate, für jeden Monat die entsprechenden Zahlen). Im klartext also:

Ich habe eine DB mit den Spalten "mon" (Monat) und "logins" (Anzahl der Logins).

Anhand dieser Daten möchte eine Grafim dynamisch erstellen.

Ich brauche also für jeden Monat die entsprechende Anzahl Logins. Ich frage also den Wert der Logins ab:
PHP:
$sql = "SELECT 'logins' FROM login_count ORDER BY 'mon' ASC";

Wie erstelle ich dann aus dieser Abrage ein Array, welches ich weiterverwenden kann, also z.B. $stats_num[0] für den ersten Monat, $stats_num[1] für den Zweiten, etc...?
 
Moin

Bin von selber auf die Lösung gekommen.

PHP:
$stats_num[] = $row[logins];

Das Problem war die Abfrage:

PHP:
$sql = "SELECT 'logins' FROM login_count ORDER BY 'mon' ASC";

Und zwar haben meinem Parser die ' ' bei "logins" nicht gepasst.... Ich habe keine Ahnung wieso. Danke für trotzdem für deine Hilfe ManicMarble

Gruss

FG
 
Sorry, hatte die Konstante "MYSQL_ASSOC" im mysql_fetch_row() überlesen. Damit wird natürlich ein assoziatives Array zurückgeliefert und der Wert mussmit $row['feldname'] abgefragt werden, anstatt mit $row[feldnummer]....
 

Neue Beiträge

Zurück