string in Array einlesen und ausgeben

Hallo Forumler,

hab wieder ein Problem mit PHP, diesmal Arrays…
Ich möchte einen String aus der Datenbank in einen Array einlesen und dann ausgeben. Erfahrung in der Ausgabe von MySQL-Tabellen hab ich schon, ich hab aber keine Ahnung, wie das mit Arrays aussieht.

Der String sieht in etwa so aus:
[php]
23.11.2006|xys|Hallo, der beitrag ist gut.|||24.12.2005|abc|blabla|||12.11.2004|aha|toll
[/php]
Also nach dem Schema DATUM|NAME|TEXT|||DATUM|NAME|TEXT usw.

Dann explodiere ich den String in ein Array:
[php]

<? //ausgelesenen String $abc explodieren $abc = explode("|||",$abc); ?>

[/php]

Jetzt weiß ich schon nicht weiter. Irgentwie muss man mit einer Schleife die einzelnen Elemente der Elemente von $abc auslesen und diese dann wiederum mit einer Schleife ausgeben, versteht ihr?
Hab aber null Ahnung wie das gehen soll.
Kann jemand helfen?

Ich weiss nicht genau, was du willst, aber einen Datenbankeintrag kann man so in ein Array packen:
[php]

<?php //Hier Datenbank connecten und mit SELECT die Tabelle ausgeben lassen. //Dann kommt: while($row = mysql_fetch_array($query)) { echo $row['spaltenname']; } ?>

[/php]
Oder was meinst du?

Nein, das weiß ich ja, hab ich doch gesagt.

Ich möchte einen STRING zerlegen, der nach dem Schema DATUM|NAME|TEXT|||DATUM|NAME|TEXT usw. aufgebaut ist.

Dein Ansantz mit der Schleife war schon richtig. Wenn du erst alles bei ||| Zerlegst, musst du anschließend alles nochmal bei | trennen.

Das könnte in etwa so aussehen:
[PHP]

<?php $string = "23.11.2006|xys|Hallo, der beitrag ist gut.|||24.12.2005|abc|blabla"; $string = explode("|||",$string); for ($i = 0; $i < count($string); $i++) { $teile = explode("|",$string[$i]); $arr[$i]["datum"] = $teile[0]; $arr[$i]["name"] = $teile[1]; $arr[$i]["text"] = $teile[2]; } var_dump($arr); ?>

[/PHP]
Gibt bestimmt noch eine elegantere Lösung, aber das ist mir jetzt auf anhieb so eingefallen

Klingt gut :slight_smile:

wozu ist das var_dump? und wie kann ich die Daten ausgeben, damit ich sie in eine Tabelle einfügen kann?

das [COLOR=„DarkGreen“]var_dump() gibt nur das Array aus das entstanden ist. Du kannst das ohne Probleme weglöschen

Ausgeben in einer Tabelle kannst du wie folgt (nochma mit dem oben)
[PHP]

<?php $string = "23.11.2006|xys|Hallo, der beitrag ist gut.|||24.12.2005|abc|blabla"; $string = explode("|||",$string); for ($i = 0; $i < count($string); $i++) { $teile = explode("|",$string[$i]); $arr[$i]["datum"] = $teile[0]; $arr[$i]["name"] = $teile[1]; $arr[$i]["text"] = $teile[2]; } //ab hier die Ausgabe echo ""; foreach ($arr as $eintrag) { echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; } echo "
Datum:".$eintrag["datum"]."
Name:".$eintrag["name"]."
Text:".$eintrag["text"]."
" ?>

[/PHP]

Das Array das durch [COLOR=„DarkGreen“]explode(„|||“,$str) entsteht, sieht nach dem Durchlauf der [COLOR=„DarkGreen“]for()-Schleife und dem [COLOR=„DarkGreen“]explode(„|“,$str) so aus:

$arr[0]["datum"] = "07.12.2006"
$arr[0]["name"]  = "Frank"
$arr[0]["text"]  = "Hello World. Hallo Welt"

$arr[1]["datum"] = "08.12.2006"
$arr[1]["name"]  = "Max"
$arr[1]["text"]  = "Ich heiße Max Mustermann"

$arr[2]["datum"] = "09.12.2006"
$arr[2]["name"]  = "Klaus"
$arr[2]["text"]  = "Hallo Max Mustermann, wie geht es dir?"

usw.

Du siehst also, dass es sich um ein Multi-Array handelt. Es ist ein Array in einem Array.

durch die [COLOR=„DarkGreen“]foreach()-Schleife wird nun für jeden Eintrag im 1. Array ($arr[0],$arr[1],$arr[2]) deine Anweisung durchlaufen

durch die zuweisung [COLOR=„SeaGreen“]$arr as $eintrag in der Bedingung der Schleife wird die Zwischenausgabe in der Variablen $eintrag gespeichert.
Beim ersten durchlauf der Schleife sieht also die Variable $eintrag so aus:

$eintrag["datum"] = "07.12.2006"
$eintrag["name"]  = "Frank"
$eintrag["text"]  = "Hello World. Hallo Welt"

beim 2. Durchlauf sieht es dann so aus:

$eintrag["datum"] = "08.12.2006"
$eintrag["name"]  = "Max"
$eintrag["text"]  = "Ich heiße Max Mustermann"

usw. für jeden durchlauf der [COLOR=„DarkGreen“]foreach()-Schleife .

Nun kannst du wie oben im Code (beliebig formatiert) deine Einträge ausgeben

Vielen Dank!!!

Genau das hab ich gesucht. Ich wusste eben nicht, wie ich den Array in dem Array in einer Scheife ausgeben kann.

Ähm wieso hast du denn so einen String in der spalte?
Wieso machst du nicht einfach ne neue Tabelle mit nem schwachem entity, das dann das starke entity von der tabelle mit den restlichen daten übernimmt, um den datensatz zu idenifizieren?