Php abgebrochene while schleife mit javascript weiterladen durch klicken auf "Mehr anzeigen"

...komplette Frage anzeigen

5 Antworten

Hallo Elmo,

wie von meinen VorschreiberInnen schon geschrieben, kann man eine abgebrochene Schleife nicht fortsetzen. Einmal davon abgesehen, dass PHP (serverseitig) sich schon lange komplett erledigt hat, nachdem im Browser mittels Klick auf einen Button (clientseitig) etwas ausgeführt werden kann.

Du kannst aber mit vermutlich einem anderen Schleifenkonstrukt das Einlesen der Daten fortsetzen, wobei aber die Seite im Browser dann komplett neu geladen werden muss.

Hier ein kurzer Scriptschnipsel:

<?php
    if (is_int($_POST['start'])){
            $start = $_POST['start'];
        }else{
            $start = 1;}
    $ende = start+100;
    for ($i=start; $i<$ende; $i++){
        if ("Dateiende"){
            $ende = NULL;
            break;}
        <<< Daten[$i] einlesen
            und ausgeben >>>
    }
    if ($ende){
        printf(
            '<form action="%s">
                <input name="start" type="hidden" value="%d">
                <button type="submit" value="Mehr anzeigen">
            </form>',
            $_SERVER['PHP_SELF'],
            $ende);
?>

Gruß Kira-Bianca

Noch ein Nachtrag, der mir gerade einfällt:

Falls Du den bisherigen Teil der Ausgabe nicht neu laden und ausgeben willst, kannst Du die Fortsetzung auch in einem IFrame anzeigen lassen. Da brauchst Du dann nur mittels dem target-Attribut im Formular auf dieses IFrame zu verweisen. Wenn Du es nicht mit dem target-Attribut, sondern mittels Javascript steuerst, kannst Du auch die eigentlich modernere Art eines Objekts statt eines IFrames nehmen.

0

Danke für den Stern. :-)

0

Also erstmal muss man dazu sagen, dass Du dafür auf jeden Fall AJAX oder etwas vergleichbares benötigst, da Du die Ausführung von PHP nicht einfach stoppen und fortsetzen kannst. Bei Google Bilder funktioniert das wahrscheinlich so, dass mit dem Klick auf den "Mehr anzeigen"-Button per AJAX ein Skript angesprochen wird, das eine SQL-Anfrage ausführt, die dort anfängt, wo die letzte Anfrage aufgehört hat, die Daten anschließend verarbeitet und sie an den Browser weiterreicht.

schliesse mich dem vorredner an, wenn du dich mit javascript noch nicht so auskennst würde ich mich mal kur mit jquery (den GET parameter brauchst du da)beschäftigen, die haben da ne ganz elegante lösung.

du musst z.b. wenn du aus einer datenbank liest einfach den parameter LIMIT setzen z.b. LIMIT 1,50, und dan per button oder so übergibst du diese zwei parameter per variable damit er weiss wo er anfangen soll(die erste zahl) und wieviel er auslesen soll (die zweite zahl)...... und diese läds du immer und immer wieder im gleichem Div......

viel spass beim lernen ;)

Hey, du kannst keine schleife fortsetzen. Entweder musst deine max execution time des Servers hochsetzen, oder die abfrage begrenzen dass es in den wahrscheinlich 60 Sekunden geschafft werden kann. mit ajax könntest du jetzt einem Script ne anfrage schicken die Beiträge "von bis" auszugeben.

oder hab ich die frage Net verstanden :)

Wenn die While-Schleife einmal beendet ist, ist sie beendet. Du musst dann schon dafür sorgen, dass sie nochmal neu aufgerufen wird.

Was möchtest Du wissen?