Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Datenbankabfrage in Array [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Datenbankabfrage in Array


 
Cappo
20-08-2009, 17:42 
 
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

 
wahsaga
20-08-2009, 17:52 
 
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 ...?

 
Cappo
20-08-2009, 18:04 
 
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

 
wahsaga
20-08-2009, 18:05 
 
Sorry, dann kann ich dein Problem mit dem Code nicht nachvollziehen.

Welche der Kontrollausgaben hast du wo genau gemacht?

 
Cappo
20-08-2009, 18:10 
 
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

 
wahsaga
20-08-2009, 18:34 
 
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.

 
Cappo
20-08-2009, 18:53 
 
Hmmm okay stimmt eigentlich:rolleyes:...Könntest du mir evtl. sagen wie du es anstellen würdest?

MfG
Cappo

 
wahsaga
20-08-2009, 19:03 
 
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.

 
Cappo
20-08-2009, 19:09 
 
Ok werd wieder ein bisschen rumtüfteln. Werds schon gebacken kriegen. Danke nochmals.:grin:

MfG
David

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:28 Uhr.