Mit "weiter" Button durch Schleife loopen

Ich möchte Forumbeiträge aus einem CSV Datei lesen und in eine MySQL Datenbank importieren. Nun habe ich es geschafft, die Datensätze aus zwei unterschiedlichen CSV Datei zu lesen und alle Fragen mit den entsprechenden Antworten auszugeben. Nun möchte ich dass jeweils nur ein Forum Eintrag und dessen Antworten ausgegeben wird und man mit weiter zum nächsten Forumseintrag kommt.

Wie kann ich in die foreach-Schlaufe einen Mechanismus einbauen, der mir erst dann zum nächsten Datensatz springt, wenn ich weiter gedrückt habe ?

In der Funktion weiter() wird ein weiter Button ausgegeben.

PHP:
    while($data = fgetcsv ($handle, 50000, ";")) { 
        $num = count ($data);                          
        $prob[] = $data;
    }
                              
    foreach($prob as $p){    
        for ($c=0; $c < $num; $c++) {  
            if($c==1){ 
                $p[$c] = strtotime($p[$c]);
            }
        }   

         $problem = array($p[0], $p[1], $p[2], $p[3]);
         displayProblem($problem);
         $answear = readAnswears($p[0]);
         displayAnswear($answear);
         weiter();
    }

Gruess

Ruth
 
Eine Session könnte weiterhelfen.

Du speicherst deine Daten so ab, dass sie inkrementel von 0 bis irgendwas gespeichert werden.
PHP:
    while($data = fgetcsv ($handle, 50000, ";")) { 
        $num = count ($data);                          
        $prob[] = $data;
    }

Dein Array ist ungefähr:
Code:
$prob[0] = "foo";
$prob[1] = "bar";
$prob[2] = ..........

Also wandle deine foreach-Schleife um in eine for-Schleife mit:
PHP:
for ($i = $_SESSION["aktPos"]; $i < $maximum; $i++)

Oder lasse bei einem Klick auf "Weiter" das $_SESSION["aktPos"] um einen erhöhen und greife auf dein Array so zu:
PHP:
$porb[ $_SESSION["aktPos"] ];
 
Auf die Idee mit der For- Schleife bin ich selber auch schon gekommen aber genau aus dem Grund den DeluXe genannt hat, habe ich sie nicht gewählt.

Gibt es keine ander Möglichkeit ?
 
Was machst du denn nach dem einlesen mit den Daten?
Schreibst du sie in eine Datenbank?

Weil wenn dem so ist, könntest du die CSV einfach komplett einlesen und in die Datenbank schreiben.
Danach kannst du jeden einzelnen Datenbankeintrag bequem auslesen und bearbeiten lassen.

Ansonsten erzähl mal bisschen mehr, was du damit anstellen willst. :)
 
Ach. Bischen erfinderisch sein!

Die aktuelle Zeile oder sogar Zeigerposition in der Session auch noch speichern und beim nächsten Aufruf dort per fseek positionieren. Eventuell erst mal aktuelle Zeile durch fscanf suchen. So kanns das dingen auch toll Zeilenweise auslesen.
 
@Deluxe: Ja ich möchte es anschliessend in eine Datenbank schreiben und mir ist auch bewusst, dass ich dies auf direktem Wege machen könnte.

Aber ich möchte mir Datensatz für Datensatz zuerest ansehen und allenfalls ändern,, bevor ich ihn in die Datenbank schreibe. Deshlab bastle ich mir ein Script das mir den Beitrag plus die Antworten in Formularen anzeigt. So dass ich allenfalls etwas ändern könnte, oder Beiträge die mir nicht sinnvoll erscheinen löschen kann.

Versuch mal sowas in der Art wie ZodiacXP vorgeschlagen hat hin zu kriegen. Funktioniert dies auch wenn nicht alle Werte auf der gleichen Zeile sind im Textfile? Hab nämlich gesehen das im csv, die Umbrüche im Text dazu führen das ein Datensatz zum Teil mehr als eine Zeile benötigt.

Hab jetzt mal so was aufgebaut und dort nimmt er ja jede physikalische zeile als $buffer. Muss ich die umbrüche mit nem <br> oder so machen ?

PHP:
	while (!feof($handle)) {
	    $buffer = fgets($handle, 4096);
	    $buf[] = $buffer;
	}
    print_r($buf);
 
Zuletzt bearbeitet:
Zurück