Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Warteseite während foreach-Schleife läuft
#1
Hallo Zusammen,

ich bin neu hier und beschäftige mich seit einiger Zeit mit PHP, was mir viel Freude macht:-).

Heute brauche ich bitte eure Hilfe:

Ich habe eine relativ einfache foreach-Schleife in PHP gebaut, die Daten aus der Datenbank ausliest.
Wenn die Seite aufgerufen wird ist sie erst mal für 20 - 50 sek. weiß (je nach Anzahl der Loops)
und dann kommt alles auf einmal.

Habe jetzt stundenlang recherchiert und ausprobiert, aber leider ohne Erfolg.
Ich habe gelesen, dass wohl Javascript und Ajax nötig sind, um hier eine vernünftige Anzeige zu
realisieren, aber leider habe ich keine Ahnung davon und verstehe auch nicht, wie das zu realisieren ist.

Es ist mir egal, ob ein Ladebalken kommt oder nur ein Hinweis "Daten werden geladen...", es soll recht einfach
sein und auch für mich nachvollziehbar.

Kann mir bitte Jemand von euch weiterhelfen?
Wäre super und ich bin echt dankbar für jeden Tipp.

Gruß
Lisa
Zitieren
#2
Hi Lisa_33,
herzlich willkommen im Forum. Wichtig ist zu wissen das man keine Abfragen mit einer PHP-Schleife durchführen sollte. Das kann zu Performanceprobleme führen oder zu Fehlern. Du solltest hier Codebeispiele posten, damit die User im Forum Lösungen schreiben können oder den Fehler aufzeigen. Ajax ist eine Webtechnologie zur asynchronen Datenübertragung die in Javascript enthalten sind. Ajax kann genutzt werden um Daten zwischen der Seite und dem Server(PHP) Daten auszutauschen. Dabei muss die Seite nicht neu geladen werden.

Ich würde dir empfehlen sich mit Javascript und dann mit PHP mehr zu beschäftigen und Online-Tutorials oder Bücher durchzulesen. Das hilft dir ein gewissen Verständnis und Grundwissen aufzubauen. Es bringt am Ende viel wenn man weiß wo man eine gute Lösung finden kann.

Gerne kannst du weitere Fragen hier im Forum schreiben, du darfst auch gerne deinen Code posten, sodass wir Tipps geben können oder einfach die Fehler aufzeigen.

Viele Grüße
rzscout
"Gerne dürft ihr mir eine gute Bewertung da lassen aber auch gegenüber Kritik bin ich offen" Angel
Zitieren
#3
Vielen Dank für die nette Einführung.

mein Code sieht so aus:
PHP-Code:
<?php

$paketteile 
explode(",",$_POST[paket]);
foreach(
$paketteile as $paketteil) {



$suc_id $paketteil;
$success_nr $paketteil;

print
"<img src=$suc_id.png>";


sleep (3);

}



?>

Die Seite wird über ein Formular aufgerufen.

Mir wäre es am Liebsten, wenn mir jemand eine ganz einfache Lösung hätte, mit der ich
experimentieren und sie verstehen kann. Wenn ich die Basics begriffen habe, kann ich selbst
weiter machen.

Vielen lieben Dank.
Zitieren
#4
Du must Sleep(3) Löschen,
weil das bei jedem schleifen Durchlauf 3 Sekunden blockt bzw. wartet.
Wie viele Paketteile stehen den in deinen Post ( $_POST'parket'] ).
Da du sagst das du immer 20 - 50 Sekunden warten musst , dann wirst du ca 6 - 16 Paketteile haben.
Bei jeden Durchlauf der Schleife wird eine 3 Sekunden Pause gemacht und somit kommt die lange Zeit zustande.
Warum steht das sleep(3) da überhaupt drin, wie kommst du darauf , oder wer hat dir das gesagt das es da hin muß ?

Lösch die Zeile mal und sag Bescheid wie schnell es jetzt geht
Hier sind alle meine Lösungen aus allen Foren. Ich helfe auch in Facebook-chat
Zitieren
#5
Welche PHP Version nutzt du?
Du hast da eigentlich noch mehr Fehler drinnen, die der Error log, anzeigen sollte, wenn man es aktiviert.
Zb dein $_POST[paket]
Da Fehlern die Hochkommas, also so $_POST['paket'];

Ohne den ganzen Code zu kennen, sollte man POST nie ungetestet weiterverarbeiten.
Da solltest du ein htmlspecialchars() benutzen
Ob das in einen explode unbedingt gemacht werden muss, weiß ich jetzt auch nicht genau , aber schaden tut es ja nicht.


Das Umbenennen deiner Variablen ist unnötig.
PHP-Code:
$suc_id $paketteil;
$success_nr $paketteil
Du kannst die Variablen so benutzen wie sie sind.


Alles zusammen (das was ich sehen kann)
würde ich es so machen
PHP-Code:
<?php
$paketteile 
explode(",",htmlspecialchars($_POST['paket']));
$sammeln='';
foreach(
$paketteile as $paketteil) {
    
$sammeln.="<img src='$paketteil.png'>";
}
echo 
$sammeln;
?>
Hier sind alle meine Lösungen aus allen Foren. Ich helfe auch in Facebook-chat
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen:
1 Gast/Gäste