Script in fases uitvoeren
Via een invul formulier kun je gegeven invullen voor de database, nu wil ik verschillende meldingen echoën
- Data succesvol aangemaakt.
- Informatie is opgeslagen in database.
Er word dus een tabel aangemaakt en daarna word deze gevuld met informatie, als een handeling goed is gelukt verschijnt de echo melding op het scherm.
Alleen wil ik deze een korte delay geven en dacht dit te doen met , het probleem is dat het hele script dus het aantal ms seconden wacht en niet alleen de melding, ook als ik een statement gebruikt.Hoe kan ik ervoor zorgen dat het script in fases word uitgevoerd? cases? of andere manier?
Ikzelf zou AJAX-requests doen, of anders iets met output-buffering.
Bryan:
Als je met je browser op internet surft dan ben jij de CLIENT. Surf je naar phphulp.nl dan wordt je in contact gebracht met de webserver van phphulp. Deze noemen we SERVER. Hoe werkt dit nu in het kort:
- gebruiker toetst de gewenste url in in de url balk
- browser stuurt een verzoek naar de webserver
- de webserver 'ziet' dat het verzoek een PHP script is en gaat eerst dit script uitvoeren. De server wacht tot dit script beëindigd is en stuurt dan de OUTPUT van dit PHP-script terug naar de client. (Meestal bestaat de output uit HTML)
- De browser verwerkt de HTML en laat het grafisch resultaat van de HTML zien aan de gebruiker.
Omdat de browser dus wacht op de server en de server weer wacht tot het php-script 'klaar' is kun je dus pauzes inbouwen wat je wilt maar dit zal enkel leiden tot een langer wachten op je pagina. De suggestie van Ariën is dus beter. Je moet met behulp van javascript (welke in je browser uitgevoerd wordt NADAT je pagina ( of deels) geladen is een nieuw verzoek sturen naar je webserver waarop deze een nieuw stukje van de noodzakelijke handelingen gaat verrichten OF opnieuw de status van een (achtergrond-)process ophaalt.
Het zou er in jouw situatie ongeveer zo uit kunnen zien:
a: verzoek naar webbrowser in de POST methode (na een klik op een verzendknop in een formulier)
b: Server stuurt een nieuwe pagina naar de browser met wat javascript
c: Het javascript wacht een seconde (of enkele secondes) en stuurt dan een nieuw verzoek naar de webserver met AJAX.
d: Het antwoord van de webserver wordt door javascript tussen de reeds aanwezige html ingevoegd en de gebruiker ziet de tekst "Data succesvol aangemaakt."
e: javascript wacht nog even en doet dan weer een verzoek aan de webserver.. enz..
Toevoeging op 29/03/2017 23:38:58:
Je zou kunnen beginnen met een tutorial Javascript met of zonder JQuery. (Mijn advies zou zijn met JQuery voor wat jij wil). Dan stap je door op een simpel AJAX voorbeeld met JQuery of anders met gewoon Javascript.
Gewijzigd op 29/03/2017 23:41:20 door Frank Nietbelangrijk
Wat ik dacht is het volgende:
Bryan wilt zoals ik het begrijp een tabel aanmaken en de gegevens vanuit een formulier direct wegschrijven in deze tabel.
Omdat hij een melding wil maken dat de tabel aangemaakt is en daarna een melding dat de gegevens verwerkt zijn dacht ik dat een if else statement de oplossing zou zijn d.m.v. Als het aanmaken van de tabel waar/true is: sleep(2); ga verder, dan zal hij een query maken om de gegevens in te geven, is dit gelukt?, geef melding "gegevens verwerkt".
Uiteraard is javascript een oplossing:) maar is een pause en start niet mogelijk met php?
Natuurlijk, met functies als flush en ob_flush moet je een heel eind kunnen komen, maar handig is anders.
Ik ga eerst eens kijken wat flush en ob_flush precies inhoud en dan mijn plan trekken.