Zeile aus Datensatz eines Feldes als Array einlesen

mrepox

Erfahrenes Mitglied
Hallo Leute,

hier mein Problem:

Ich habe in einer Mysql DB eine Tabelle "pastetable" mit einem Feld "content", in dieses Feld habe
ich einen Datensatz aus einem Formular (Textarea) übermittelt.
Als Beispiel nehmen wir drei Wörter und nach jedem Wort ein Zeilenumbruch, sprich ein Datensatz mit drei Zeilen.

Feld "content":

Himmel
Wasser
Hölle


Nun möchte ich jede Zeile aus diesem Datensatz in ein Array laden.
Die Funktion file() macht das mit Dateien genauso, wie ich es jetzt hier haben will.

PHP:
function zeigedaten()
{
    $conn = db_connect();
    $query = "select content FROM pastetable WHERE name = 'beitrag1' ";
    $result = $conn->query($query);
    $option = $result->fetch_array();
    $ausgabe =  $option[0];
    echo $ausgabe;
}

Die Ausgabe wäre hier leider Himmel Wasser Hölle und nicht Himmel.
Somit wird der gesamte Datensatz in einem Array gespeichert und nicht wie gehofft eine Zeile des Datensatzen.

Die Funktion file() welche ich hiermit zu ersetzen versuche arbeitet so:
Jedes Feld des Arrays korrespondiert mit einer Zeile der Datei. Der Zeilenumbruch bleibt erhalten.

Kann man das mit Zeilen eines Datensatzes der DB nicht auch schaffen? Ich will auf eine Zeilennummerierung hinaus. Mittels for() Schleife möchte ich jede Zeile mit einer Nummerierung versehen.

Freue mich über Vorschläge und Ideen!:)

Markus
 
PHP:
function zeigedaten()
{
    $conn = db_connect();
    $query = "select content FROM pastetable WHERE name = 'beitrag1' ";
    $result = $conn->query($query);
    $option = $result->fetch_array();
    $ausgabe =  explode("\n", $option[0]);
    echo $ausgabe[0]; // gibt erstes Feld aus
}

[phpf]explode[/phpf] in Verbindung mit dem "Linebreak" Symbol sollte dir nützlich sein.
 
@Gumbo

Danke auch dir für deine Antwort. Ich sehe das ein, leider habe ich in diesem Fall keine andere Wahl.


@maeTimmae

Danke für den Tip, funktioniert einwandfrei! Habe nun mal die for() Schleife eingebaut.
Das Resultat ist nun leider wieder eine Ausgabe ohne Zeilenumbrüche.

PHP:
Himmel Erde Hölle
Natürlich hilft ein
PHP:
echo $ausgabe[$i]."<br>";
aber woran kann das nun liegen?

PHP:
function zeigedaten()
{
    $conn = db_connect();
    $query = "select content FROM pastetable WHERE name = 't' ";
    $result = $conn->query($query);
    $option = $result->fetch_array();
    $ausgabe =  explode("\n", $option[0]);
      for ($i = 0; $i < count ($ausgabe); $i++) {
    $i+1; echo $ausgabe[$i]; 
        }
}

Gruß Markus
 
Welche Zeichenfolge nutzt du denn als Zeilenumbruch? Die Windows-Zeichenfolge 0x0D 0x0A (\r\n) oder die Unix-Zeichenfolge 0x0A (\n)? Probier mal Folgendes:
PHP:
$ausgabe = preg_split('/\r\n|\r|\n/s', $option[0]);
 
Ich weiß nicht ob wir jetzt das gleiche meinen, aber es geht nur so:
PHP:
echo $ausgabe[$i]."<br>";
was nicht geht ist:
PHP:
echo $ausgabe[$i]."\n";

Hier nochmal der Code mit der Zeilennummern Erweiterung:
PHP:
function zeigedaten()
{
    $conn = db_connect();
    $query = "select content FROM pastetable WHERE name = 't' ";
    $result = $conn->query($query);
    $option = $result->fetch_array();
    $ausgabe =  explode("\n", $option[0]);
      for ($i = 0; $i < count ($ausgabe); $i++) { 
    echo ($i+1).".&nbsp;";
     echo $ausgabe[$i]."<br>"; 
        }
}

Ist das so ok? Der Hintergrund des ganzen ist das ich das ganze dann noch durch einen Syntaxhighlighter schicken will für ein eigenes pastebin.
 
Zuletzt bearbeitet:
Zurück