Moin, wie der Titel schon sagt möchte ich innerhalb einer Schleife gerne eine pause einlegen, sodass sie erst nach x Sekunden wieder von vorne startet. Wenn ich allerdings sleep ans Ende hänge lädt meine Seite danach unendlich lange. Gibt es da eine Möglichkeit?
Pause in Schleife einbauen
-
-
PHP arbeitet synchron, arbeitet Schritt für Schritt ab. Wenn du sleep() reinhängst verlängert sich logischerweise die Scriptlaufzeit.
Weshalb willst du eine Pause einlegen? Ich sehe keinen Grund weshalb das notwendig sein sollte.
-
Ich möchte die Schleife alle x Sekunden etwas ausgeben lassen. Wirkt sleep sich also auf das gesamte script und nicht nur die Schleife aus? Verstehst was ich meine?
-
Ja, wie gesagt, PHP ist synchron. Führt das ganze Script aus und schickt es dann an den Browser zurück. PHP ist für Dein Vorhaben nicht geeignet. Eine Lösung mit JavaScript und AJAX-Requests ist da eher sinnvoll.
-
Wäre das mit jquery zu lösen, da habe ich wenigstens eine Grundahnung
-
Also könnte man mit jquery eine schleife machen, die alle x-sekunden etwas aus einer Datenbank ausgibt? Wäre cool wenn da jemand was wüsste
-
Ja
Eine Lösung mit JavaScript und AJAX-Requests ist da eher sinnvoll.
Ajax arbeitet mit Jquery , bzw ist Jquerý.
Da kannst du deine Schleife ab arbeiten und notfalls eine Pause einbauen.
Die frage ist aber was hast du da vor ?
Da du mit Php was machst frage ich mich ob du da Daten aus der DB holst oder sonst wo weg?
Du könntest auch vorher alle Daten holen die du brauchst und dann mit ein JS Code so ausgeben lassen wie du es haben möchtest.
Deswegen erkläre uns erstmal was du da genau machen willst
-
Vereinfacht gesagt möchte ich Einträge aus einer Datenbank in zufälliger Reihenfolge mit jeweils x Sekunden pause zwischen drin ausgeben.
Also ja, die Daten kommen aus einer Datenbank.Wie würdest du das anstellen, dass du dir vorher die Daten rausholst und dann in einer Schleife ausgibst?
-
Zitat
Ajax arbeitet mit Jquery , bzw ist Jquerý.
Das ist natürlich Unsinn.
AJAX bedeutet Asynchronous JavaScript and XML und hat an sich nichts mit jQuery zu tun.
jQuery ist eine JavaScript Bibliothek welche u.a. eine vereinfachte Methode für AJAX-Requests anbietet. Du kannst aber solche Requests auch ohne jQuery machen. Oder mittlerweile auch die Fetch-API verwenden.
-
Ich muss sagen der Weg ist mir egal
Kannst du mir denn sagen wie du das lösen würdest?
-
Ja, per Request alle Daten holen und dann per JavaScript alle par Sekunden einen ausgeben.
-
magst du mir ein kleines Beispiel schreiben? Bin mit javascript überhaupt nicht vertraut
-
Du brauchst:
https://api.jquery.com/jquery.ajax/
https://www.w3schools.com/jsref/met_win_settimeout.asp
Schritt für Schritt aufbauen:
1. Schreib das PHP-Script welche Dir die Daten als json ausgibt
2. Ruf mit einem AJAX-Requests dieses Script auf und lass Dir mal alle Daten ausgeben
3. Bau eine Schleife mit setTimeout() um die Ausgabe zu verzögern.
basti ist der Mann für fertige Scripte, von mir gibts nur Hinweise. Ich muss auch so lernen.
-
Perfekt, danke dir. Damit kann ich auf jedenfall was anfangen. Ich melde mich wenn es Probleme gibt
-
per Request alle Daten holen
Das hängt aber von der Datenmenge ab. Je nach Menge könnte man auch immer Blockweise Daten aus der DB holen.
-
Ja natürlich. Das müsste dann aber schon eine ordentliche Menge sein, damit das relevant ist.
-
Also, ich habe die Daten jetzt als Json, wie kann ich jetzt einzelne davon aufrufen? Und ist es möglich das eventuell sogar zufällig zu gestalten?
-
etwas aus einer Datenbank
ich habe die Daten jetzt als Json
Fällt dir was auf?
wie kann ich jetzt einzelne davon aufrufen
Du könntest damit anfangen die Doku zu lesen: https://www.php.net/manual/de/ref.json.php
-
Zitat
Also, ich habe die Daten jetzt als Json, wie kann ich jetzt einzelne davon aufrufen?
Ich nehme an, das ist so zu verstehen, dass Du ein PHP-Skript hast, das die Daten im JSON-Format ausgibt? Dann wäre der nächste Schritt, die Daten für die zyklische Anzeige mit Javascript vom Server zu holen. Eine Möglichkeit, das zu tun, wäre, Ajax zu verwenden, siehe z. B. hier mit der fetch-API:
https://wiki.selfhtml.org/wiki/JavaScript/Window/fetch
Da Du aber schriebst, dass Du die Daten gleich vollständig bereit stellen kannst, kannst Du sie auch gleich auf der Seite ermitteln und an Javascript übergeben:
-
Fällt dir was auf?
Was soll mir auffallen? Ich habe zuerst meine Ausgangssituation mitgeteilt und dann anschließend einen Tipp umgesetzt?
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!