PHP Frage, Semikolon getrennte Daten importieren

Domi83

Rear Admiral
Registriert
Feb. 2010
Beiträge
5.202
Hallo Leute, ich habe nach längerem hin und her auch mal wieder eine PHP basierte Frage.

Ich hatte mir im Büro mal ein PHP Skript gebaut welches meine Daten die ich in ein <textarea> eingebe, in die Datenbank schreibt. Das hat auch sonst problemlos funktioniert, die Datensätze werden einfach Zeile für Zeile abgearbeitet. Ein Beispiel sieht dann wie folgt aus,
Code:
1;Vorname1;Nachname1;"Bemerkung";weitere;daten
2;Vorname2;Nachname2;"Bemerkung";weitere;daten

Ist auch alles top, ich lese die Daten ein, mache ein explode("\r\n", $post), übergebe das an eine foreach() Schleife und in in dieser Schleife trenne ich noch mal via explode() oder str_getcsv() die einzelnen Spalten. Nun hab ich allerdings einen Datensatz bei mir indem die Bemerkung über zwei / drei Zeilen geht und wenn ich mir die Daten im Notepad++ anschaue, sind diese ebenfalls mit "\r\n" versehen.

Nun ist meine Frage an die Spezies hier unter euch, hat jemand einen Tipp für mich wie ich die Bemerkungen in meine MySQL Datenbank bekomme, trotz dessen das die Bemerkungen manchmal (nicht immer) über mehrere Zeilen gehen?

Ich hab auch schon an reguläre Ausdrücke gedacht um die "\r\n" zwischen den Quotas / Anführungszeichen zu entfernen, aber das hat noch nie geklappt und da brauchte ich bis jetzt immer Hilfe.

Über Tipps und Anregungen wäre ich dankbar (vorausgesetzt, man versteht mein Problem), denn alles was ich heute Vormittag und gestern Abend via Google gesucht und ausprobiert habe, brachte mich nicht zum Ziel. Zumal fast alle Ergebnisse bei Google davon ausgehen dass ich meine Daten in einer CSV Datei habe, was bei mir nicht der Fall ist.

Gruß, Domi
 
Judeldu... Genau dieses Beispiel habe ich ebenfalls gefunden und sogar nachgebaut... Allerdings hatte er mir die "Bemerkungen" gesplittet, was ja nicht das Ziel sein soll. Die Rückgabe hatte ich mir nämlich in eine Variable geschrieben und diese Ausgabe hatte ich mir via print_r() anzeigen lassen

Es gab auch Beispiele bei denen fgetcsv() in Verbindung mit feof() verwendet wurde, dass hatte ich ausprobiert, scheint aber mit dem <textarea> nicht zu klappen, denn die Schleife hat "dauerfeuer" gemacht und kam nicht zum stoppen.

Nachtrag1: Ich habe das mal auf die schnelle nachgebaut... zumindest macht er bei mir kein halt.
Code:
<?php
    function convert($post) {
        $row = 1;
        while(($data = fgetcsv($post, 1000, ";")) !== FALSE) {
            $num = count($data);
            echo "<p> $num Felder in Zeile $row: <br /></p>\n";
            $row++;
            for($c=0; $c < $num; $c++) {
                echo $data[$c] . "<br />\n";
            }
        }
    }

    if($_POST) {
        convert($_POST['daten']);
    }
?>
<!DOCTYPE html>
<html lang="de">
    <body>
        <form action="" method="post">
            <textarea name="daten" style="width: 760px; height: 400px;"></textarea><br>
            <input name="absenden" type="submit" value="absenden">
        </form>
    </body>
</html>

Nachtrag2: Einmal ein Update... ich habe eben noch mal den fopen() eingebaut, damit würde es gehen... keine Ahnung wieso es vorhin im Büro nicht geklappt hatte. Aber ich wollte die Daten gerne via $_POST übergeben, dass will noch nicht so ganz.
 
Zuletzt bearbeitet:
Zurück
Oben