Script in fases uitvoeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bryan De Baar

Bryan De Baar

29/03/2017 14:07:59
Quote Anchor link
Hallo,


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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php sleep (1);?>
, het probleem is dat het hele script dus het aantal ms seconden wacht en niet alleen de melding, ook als ik een statement
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if / else ?>
gebruikt.Hoe kan ik ervoor zorgen dat het script in fases word uitgevoerd? cases? of andere manier?
 
PHP hulp

PHP hulp

29/03/2024 00:47:49
 
- Ariën  -
Beheerder

- Ariën -

29/03/2017 14:11:11
Quote Anchor link
Ikzelf zou AJAX-requests doen, of anders iets met output-buffering.
 
Jop B

Jop B

29/03/2017 20:56:19
Quote Anchor link
Je zou toch zeggen dat als je een if / else statement maakt het moet werken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
$time = date("H");

if ($time < "20") {
    echo "Niet slapen";
}else{
sleep(2);
  echo "Geslapen";
}
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/03/2017 23:32:36
Quote Anchor link
Jop wat is dat nu weer voor raar stukje code? Begrijp je wel wat Bryan zou willen bereiken?

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
 
Jop B

Jop B

30/03/2017 02:00:10
Quote Anchor link
Beste Frank,

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?
 
Ben van Velzen

Ben van Velzen

30/03/2017 09:49:51
Quote Anchor link
Natuurlijk, met functies als flush en ob_flush moet je een heel eind kunnen komen, maar handig is anders.
 
Bryan De Baar

Bryan De Baar

30/03/2017 13:11:12
Quote Anchor link
Dank voor reactie's en het meedenken :)
Ik ga eerst eens kijken wat flush en ob_flush precies inhoud en dan mijn plan trekken.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.