Wat is de bedoeling:
Frame 1:
Overzicht van de openstaande mailings
Per mailing wordt een status bijhouden.
Standaard: 0 = geen actie
In dit frame kan men d.m.v. checkboxes de mailings selecteren die verzonden moeten worden.
De actie wordt gesubmit naar frame 2.
Frame 2:
In dit frame wordt het volgende uitgevoerd na het ontvangen van de POST variabelen.
Alle geselecteerde mailings worden afgelopen:
Eerst worden in een aparte mysql-tabel alle e-mail adressen geplaatst waaraan de mailing verstuurd moet worden.
Hierna wordt de status van de mailing op 1 gezet: berichten verzameld
Daarna worden per mailing alle berichten verstuurd.
Dit gebeurt in loops van 75 met een tussenpauze van een bepaalde tijd om de mailserver te kunnen laten verwerken (dit op aanraden van de provider overigens, die bcc afraadt i.v.m. spamfilters etc.).
Tussentijds wordt de status van de mailing op 2 gezet: aan het versturen
Als alles verstuurd is wordt de status op 3 gezet: alle berichten verstuurd.
Nu heb ik ieder keer als de status wordt aangepast, dat het script in frame 2 de inhoud van frame 1 moet verversen (met een javascript). Dit gebeurt allemaal wel, maar helaas pas als het hele php-script is uitgevoerd: dus je ziet in frame 1 niet de status veranderen tussentijds.
Heeft iemand enig idee hoe ik dit wel voor elkaar kan krijgen?!
Frame 2 ziet er momenteel als volgt uit (ik heb het nu alleen nog maar even bij het verzamelen van de berichten gelaten om te testen).
Frame 1:
Overzicht van de openstaande mailings
Per mailing wordt een status bijhouden.
Standaard: 0 = geen actie
In dit frame kan men d.m.v. checkboxes de mailings selecteren die verzonden moeten worden.
De actie wordt gesubmit naar frame 2.
Frame 2:
In dit frame wordt het volgende uitgevoerd na het ontvangen van de POST variabelen.
Alle geselecteerde mailings worden afgelopen:
Eerst worden in een aparte mysql-tabel alle e-mail adressen geplaatst waaraan de mailing verstuurd moet worden.
Hierna wordt de status van de mailing op 1 gezet: berichten verzameld
Daarna worden per mailing alle berichten verstuurd.
Dit gebeurt in loops van 75 met een tussenpauze van een bepaalde tijd om de mailserver te kunnen laten verwerken (dit op aanraden van de provider overigens, die bcc afraadt i.v.m. spamfilters etc.).
Tussentijds wordt de status van de mailing op 2 gezet: aan het versturen
Als alles verstuurd is wordt de status op 3 gezet: alle berichten verstuurd.
Nu heb ik ieder keer als de status wordt aangepast, dat het script in frame 2 de inhoud van frame 1 moet verversen (met een javascript). Dit gebeurt allemaal wel, maar helaas pas als het hele php-script is uitgevoerd: dus je ziet in frame 1 niet de status veranderen tussentijds.
Heeft iemand enig idee hoe ik dit wel voor elkaar kan krijgen?!
Frame 2 ziet er momenteel als volgt uit (ik heb het nu alleen nog maar even bij het verzamelen van de berichten gelaten om te testen).
PHP:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| <? set_time_limit(0); ignore_user_abort(true); require_once("config.php"); if(!defined("configLoaded") || !configLoaded) die('Configuration file failure!'); require_once(RSECDIR . "secure.php"); require_once(DR . "/functions/function.messages.php"); if(isset($_POST['btnMailingVersturen'])){ $numMailings = (isset($_POST['chkMailing']) && is_array($_POST['chkMailing'])) ? sizeof($_POST['chkMailing']) : 0; if($numMailings != 0){ for($i=0; $i<$numMailings; $i++){ /* ** Per klant moeten eerst alle te versturen berichten in de queue worden geplaatst */ $sql->execute('INSERT INTO `tblMailing_Wachtrij` (`lngW_MailingID`, `txtW_Titel`, `txtW_Bericht`, `txtW_Naam`, `txtW_Email`) SELECT M.`lngMailingID`, M.`txtM_Titel`, M.`txtM_Bericht`, I.`txtI_Naam`, I.`txtI_Email` FROM `tblMailing` M, `tblInschrijvingen` I WHERE (M.`lngM_KlantID` = I.`lngI_KlantID`) AND (I.`blnI_Blacklist` = 0) AND (M.`lngM_KlantID` = ' . $_POST['chkMailing'][$i] . ')'); if($sql->result){ /* ** Als de berichten van de betreffende klant in de queue zijn geplaatst ** moet de status worden aangepast (1) van de mailing in het overzicht bovenaan het scherm */ $sql->flush(); $sql->execute('UPDATE `tblMailing` SET `blnM_InBehandeling`=1 WHERE `lngMailingID`=' . $_POST['chkMailing'][$i]); if($sql->result && $sql->affectedrows==1){ print '<script type="text/javascript" language="javascript">'; print "parent.frmPlanning.location = 'planning.php';"; print '</script>'; } $sql->flush(); } $sql->flush(); } sleep(1); }else{ print '<p class="errMsg" style="text-align: center;">U heeft geen mailings geselecteerd om te versturen!</p>'; } } ?> |