Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenbankabfrage in Array
Hallo,
hab ein kleines Problem mit einer meiner DB Abfragen. Also ich will meine Datenbankabfrage in mehrdimensionales Array speichern und dann mit einer foreach-Schleife ausgeben. Und so sieht das ganze aus:
$blogDBResult = array();
$blogDatas = array();
$query = "SELECT * FROM blog WHERE autor = 'admin'";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
$blogDBResult = array (
'blogText'=>$row->text,
'blogTitle'=>$row->titel,
'blogTime'=>$row->time,
'blogDate'=>date("d.m.Y", $row->time),
'blogTime'=>date("H:i", $row->time),
'blogUpdateDate'=>date("d.m.Y", $row->updateTime),
'blogUpdateTime'=>date("H:i", $row->updateTime)
);
array_push($blogDatas, $blogDBResult);
}
Nun wenn ich das mehrdim. Array "$blogDatas" per foreach Schleife ausgeben will befindet sich nix im Array. Habe "$blogDatas" mit print_r() ausgeben und gesehen das er gar nichts in das Array reinschreibt. Also wollte ich euch fragen woran das liegt. Komm einfach nicht drauf...
MfG
Cappo
Der gezeigte Code "funktioniert" wie gewünscht in dem Sinne, dass er in jedem Schleifendurchlauf den Inhalt von $blogDBResult als neues Element an $blogDatas anfügt.
Wenn da letztendlich gar nichts drin steht - dann wurde vielleicht deine Schleife gar nicht so oft durchlaufen, wie du dir erträumt hast (nämlich 0 statt X Mal).
Hast du das mal überprüft ...?
Jo also wenn ich ein print_r() auf $row mache bekomme ich 3 Durchläufte gezeigt (soviel wie er halt laut der Query findet)....
MfG
Cappo
Sorry, dann kann ich dein Problem mit dem Code nicht nachvollziehen.
Welche der Kontrollausgaben hast du wo genau gemacht?
also die erste hier:
$blogDBResult = array();
$blogDatas = array();
$query = "SELECT * FROM blog WHERE autor = 'admin'";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
print_r($row);
$blogDBResult = array (
'blogText'=>$row->text,
//'blogAutor'=>$row->autor,
'blogTitle'=>$row->titel,
'blogTime'=>$row->time,
'blogDate'=>date("d.m.Y", $row->time),
'blogTime'=>date("H:i", $row->time),
'blogUpdateDate'=>date("d.m.Y", $row->updateTime),
'blogUpdateTime'=>date("H:i", $row->updateTime)
);
array_push($blogDatas, $blogDBResult);
}
Das print_r() wirft mir folgendes aus:
Array ( [0] => 6 [id] => 6 [1] => Titel [titel] => Titel [2] => admin [autor] => admin [3] => text [4] => 1234295505 [time] => 1234295505 [5] => 1241271391 [updateTime] => 1241271391 ) Array ( [0] => 4 [id] => 4 [1] => Titel1 [titel] => Titel1 [2] => admin [autor] => admin [3] => Hallo..test...test [text] => Hallo..test...test [4] => 1234295287 [time] => 1234295287 [5] => 0 [updateTime] => 0 ) Array ( [0] => 11 [id] => 11 [1] => testseetstseestsetsestetse [titel] => testseetstseestsetsestetse [2] => admin [autor] => admin [3] => tsetsestesesetsetsetsestestetsetseste [text] => tsetsestesesetsetsetsestestetsetseste [4] => 1250623466 [time] => 1250623466 [5] => 0 [updateTime] => 0 )
Die zweite vor der foreach-Schleife:
print_r($blogDatas);
foreach ($blogDatas as $data) {
echo'
<div class="blogBar">
<div id="blogs">
<div class="blogBarBorder1"></div>
<div class="blogBarBorder2"></div>
<div class="blogBarBorder3"></div>
<div id="title" class="blogBarSize">
<div onclick="showBox(\'text'.$i.'\')">
<div class="blogTitle">'.$data['blogTitle'].'</div>
</div>
</div>
<div class="blogBarSize">
<div class="blogDate">
Geschrieben am <b> '.$data['blogDate'].' </b>um<b> '.$data['blogTime'].' </b>Uhr
</div>
</div>';
(Code geht noch weiter...)
Und das print_r() wirft mir das zurück:
Array ( [0] => Array ( [blogText] => [blogTitle] => [blogTime] => 01:00 [blogDate] => 01.01.1970 [blogUpdateDate] => 01.01.1970 [blogUpdateTime] => 01:00 ) [1] => Array ( [blogText] => [blogTitle] => [blogTime] => 01:00 [blogDate] => 01.01.1970 [blogUpdateDate] => 01.01.1970 [blogUpdateTime] => 01:00 ) [2] => Array ( [blogText] => [blogTitle] => [blogTime] => 01:00 [blogDate] => 01.01.1970 [blogUpdateDate] => 01.01.1970 [blogUpdateTime] => 01:00 ) )
MfG
David
Und auf Daten, die du explizit in Form eines Arrays holst, anschliessend mit der Schreibweise zugreifen zu wollen, die man zum Zugriff auf die Eigenschaften/Methoden von Objekten benutzt, erscheint dir sonderlich clever ...?
Stelle bitte das error_reporting auf E_ALL, während du entwickelst, dann hat PHP die Chance, dich gleich auf sowas hinzuweisen.
Hmmm okay stimmt eigentlich:rolleyes:...Könntest du mir evtl. sagen wie du es anstellen würdest?
MfG
Cappo
Ich würde mir vorher überlegen, ob ich die Daten in Objekt- oder Array-Form von der Datenbank abhole - und dann die jeweils passende Notation für den Zugriff verwenden.
Ok werd wieder ein bisschen rumtüfteln. Werds schon gebacken kriegen. Danke nochmals.:grin:
MfG
David
|
-
- |