[PHP] Op regelmatige intervallen een Javascript-alert geven*

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb onderstaande script:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
$oMail->AddAddress($klant['emailadres'], $klant['emailadres']);
                    $i = 0;
                    $verzondenMails = '';
                    foreach ($oEmailadres->getEmailadressen(0, $_POST['sKlantengroep']) AS $klant) {
                        // HTML body
                        $oMail->Body  = stripslashes($_POST['sNieuwsbrief'])."<br><br>";
                        $oMail->Body .= '<a href="'.$sWebsiteUrl.'/nieuwsbrief/lezen/'.$iNieuwsbriefId.'.html">Nieuwsbrief online lezen</a><br>';
                        $oMail->Body .= '<a href="'.$sWebsiteUrl.'/nieuwsbrief/s_afmelden/'.$klant['act_code'].'.html">Afmelden</a>';
                        $oMail->Priority  =  3;
                        $oMail->IsHTML(true);
                        $oMail->ContentType  =  "text/html"; 
                        $oMail->Subject = $_POST['sTitel'];
                        $oMail->AddAddress($klant['emailadres'], $klant['emailadres']);
                        if(!$oMail->Send()) {
                            $verzondenMails .= $klant['emailadres'] . ' failed'.urldecode('%0D%0A');
                        } else {
                            $verzondenMails .= $klant['emailadres'] . ' succesvol'.urldecode('%0D%0A');
                        }
                         // Clear all addresses and attachments for next loop
                        $oMail->ClearAddresses();
                        $oMail->ClearAttachments();
                    
                        if ($i % 30 == 0) {
                            ?>
                            <script type="text/javascript">
                            var aantal = <?=$i;?>;
                            alert(aantal + 'mail verstuurt');
                            </script>
                            <?php
                        }
                        $i++;
                    }
?>


Als die nu dus 30,60,90 etc. mails heet verstuurt moet die alerts geven. Wanneer ik rond de 125 mails verstuurt doet die wel ( al alle alerts op het eind en het is de bedoeling dat als die bij de 30 is een alert geeft en bij de 60 en 90 ook etc. ).
Maar zodra ik 200 mails ga versturen geeft die geen alerts meer. Hoe kan dat?

[ Voor 12% gewijzigd door Verwijderd op 21-02-2006 13:55 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Output buffering. ;) Je moet zorgen dat de uitvoer ook daadwerkelijk naar de browser gestuurd wordt, zodat PHP die data niet vasthoudt tot het script klaar is. Echter, wat de browser vervolgens met die uitvoer doet staat niet vast. Sommige browsers proberen het meteen te renderen, maar anderen wachten tot de pagina compleet binnen is. Je zal er dus niets aan hebben waarschijnlijk.

edit:
*** Over topictitels in P&W - lezen voor topic openen!!! *** ;)

[ Voor 9% gewijzigd door NMe op 21-02-2006 13:57 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Murcielago
  • Registratie: September 2003
  • Laatst online: 21-07 16:23
ik gok dat het probleem begint bij
if ($i % 30 == 0)
dus je zit ergens met je alert verkeerd
doet ie het zonder die alert wel goed?
ps, ik ben er niet zo in thuis, maar ik doe ff een pogingkje

PSN: djmurcielago


Acties:
  • 0 Henk 'm!

Verwijderd

Gokje:

alert(aantal + 'mail verstuurt');
</script>

Veranderen in

alert(aantal + 'mail verstuurt');
$i = 0;
</script>

Daarna nog een extra variabale laten meelopen als "output teller".

[ Voor 19% gewijzigd door Verwijderd op 21-02-2006 14:03 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Moet je dan die alerts continue wegklikken?

Volgens mij stopt zelfs de pagina met laden op het moment van een alert (lijkt me ook niet echt de bedoeling?)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@-NMe-

Ja ik dacht al dat het met output buffering moest (ob_start(), ob_and_flush()) maar daar lukt me het niet mee. Nu geef jij aan dat dit helemaal niet gaan lukken maar heb jij dan misschien een oplossing?
Ik wil namelijk wel dat de klanten weten hoe ver het script is met het versturen van de e-mails.

@Murcielago,

Ja zonder alert doet die het wel maar ook niet helemaal goed. Als ik dus rond de 125 verstuur krijg ik die alerts en zegt die ook 'xx mail is verstuurt', maar zodra ik er dus meer verstuur doet die niks ( al worden de mails wel verstuurt!)

EDIT:

@BosMonster
Nee hij geeft een alert en als het goed is gaat hij dan gewoon door maar dat weet ik nu nog niet omdat die ze allemaal op het einde geeft.

[ Voor 14% gewijzigd door Verwijderd op 21-02-2006 14:06 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Een pagina stopt iig met renderen op het moment van een alert. Het laden zal wel doorgaan. Maar dan krijg je dus tig alerts achter elkaar die je weg moet klikken.

Wat ik eigenlijk bedoel te zeggen, kun je niet beter dan een regeltje wegschrijven naar je pagina ipv een alert.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op dinsdag 21 februari 2006 @ 14:05:
@-NMe-

Ja ik dacht al dat het met output buffering moest (ob_start(), ob_and_flush()) maar daar lukt me het niet mee. Nu geef jij aan dat dit helemaal niet gaan lukken maar heb jij dan misschien een oplossing?
Ik wil namelijk wel dat de klanten weten hoe ver het script is met het versturen van de e-mails.
AJAX misschien. Ik heb het zelf nooit gebruikt, maar dat lijkt me hier wel enigszins toepasbaar.
Bosmonster schreef op dinsdag 21 februari 2006 @ 14:19:
Wat ik eigenlijk bedoel te zeggen, kun je niet beter dan een regeltje wegschrijven naar je pagina ipv een alert.
Een regeltje dat vervolgens niet eens per se weergegeven hoeft te worden, omdat dat browserafhankelijk is? :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

-NMe- schreef op dinsdag 21 februari 2006 @ 14:23:
[...]

AJAX misschien. Ik heb het zelf nooit gebruikt, maar dat lijkt me hier wel enigszins toepasbaar.

[...]

Een regeltje dat vervolgens niet eens per se weergegeven hoeft te worden, omdat dat browserafhankelijk is? :P
Dat de techniek niet mijn keuze is staat vast, probeer TS alleen een beetje te helpen er nog iets van te maken :P

AJAX is een mogelijkheid. Laat je mailscript een textbestand wegschrijven met de status en een AJAX script dit iedere x seconde ofzo uitlezen.

[ Voor 14% gewijzigd door Bosmonster op 21-02-2006 14:29 ]


Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Nu online

orf

Waarom moet de gebruiker de voortgang weten?
Wat gebeurt er als de gebruiker zijn browser sluit of struikelt over zijn netwerk kabel?
Mijn mailapplicatie stuurt na het versturen van alle mails (>2000) de gebruiker een mailtje met een statusoverzicht. Het aantal succesvol verzonden mailtjes, de errors, etc.

Kijk eens naar de functie ignore_user_abort()

edit: je wilt je data flushen? www.php.net/flush() (idd afhankelijk van webserver/browser/proxy)

[ Voor 13% gewijzigd door orf op 21-02-2006 14:32 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wat ik eigenlijk bedoel te zeggen, kun je niet beter dan een regeltje wegschrijven naar je pagina ipv een alert.
Dus jij bedoelt hier gewoon een echo ?
Ja zal ik eens doen maar ik ben benieuwd of dat werkt.

edit:
Mijn mailapplicatie stuurt na het versturen van alle mails (>2000) de gebruiker een mailtje met een statusoverzicht.
Ja dat doet die bij mij ook maar als hij de hele tijd blijft hangen terwijl de mails verstuurt zijn en hij geeft niks geen melding dan denkt die gebruiker ook van ... :'(

[ Voor 42% gewijzigd door Verwijderd op 21-02-2006 14:31 ]


Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Nu online

orf

Ja dat doet die bij mij ook maar als hij de hele tijd blijft hangen terwijl de mails verstuurt zijn en hij geeft niks geen melding dan denkt die gebruiker ook van ...
Met ignore_user_abort kun je gewoon redirecten naar een andere pagina en kan de gebruiker verder met waar hij mee bezig was.

Acties:
  • 0 Henk 'm!

  • M-ThijZ
  • Registratie: Maart 2003
  • Laatst online: 22:57

M-ThijZ

Riding on Rails

Maar dan ga je toch geen javascript alerts gebruiken. Maak daar dan een mooie progressbar voor die de status aangeeft.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja maar als je nie weet hoe dat moet ;)
De berekening wel maar hoe ik dat in javascript moet weet ik dus niet.

@orf:
ok dat is inderdaad handig.

[ Voor 15% gewijzigd door Verwijderd op 21-02-2006 14:37 ]

Pagina: 1