Czyli po wykonaniu pętli musiałbym zrobić coś takiego: (?)
<?php
$url = 'localhost/send_newsletter.php';
$data = array ('dist_list' => $list_id, 'select_template' => $template_thumb, 'subject' => $subject, 'tresc' => $content); $data = http_build_query($data);
$context_options = array ( 'method' => 'POST',
'header'=> "Content-type: application/x-www-form-urlencoded\r\n"
. "Content-Length: " . strlen($data) . "\r\n", 'content' => $data
)
);
$fp = fopen($url, 'r', false, $context); ?>
W jaki sposób to działa? Otwiera do odczytu plik php, wczytuje z niego kod i go przetwarza w locie? Trochę nie do końca rozumiem mechanizm tym kierujący...
Zrobiłem coś takiego, ale niestety nie działa...
<?php
//--------------------- SETTINGS AREA ---------------------//
require_once('system/db_settings.php');
require_once('system/errors.php');
require_once('functions.php');
require_once('PHPMailer/class.phpmailer.php');
//--------------------- CONNECTION AREA ---------------------//
//--------------------- WORKING AREA ---------------------//
if ($_POST) {
$list_id = (int)$_POST['dist_list'];
if (empty($_POST['select_template'])) {
$template_thumb = '1';
}
else {
$template_thumb = (int)$_POST['select_template'];
}
$subject = trim($_POST['subject']); $content = trim(bb2html
($_POST['tresc']));
$body = str_replace("[content]", $content, $template['body']);
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "*";
$mail->SMTPAuth = true;
$mail->SMTPKeepAlive = true;
$mail->Host = "poczta.o2.pl";
$mail->Port = 587;
$mail->Username = "*";
$mail->Password = "*";
$mail->SetFrom('*', 'Newsletter');
$mail->AddReplyTo('*', 'Newsletter');
$mail->Subject = "$subject";
$query = @mysql_query("SELECT `email_id` FROM distribution_lists WHERE id = ".$list_id) or displayError
(3
);
$query = @mysql_query("SELECT * FROM `users` WHERE id IN ('$mail_list[email_id]') AND verify_status = '1' AND send_status = 'to_send'") or displayError
(3
);
$get_list = @mysql_query("SELECT `email_id` FROM distribution_lists WHERE id = ".$list_id) or displayError
(3
);
$get_emails = @mysql_query("SELECT * FROM `users` WHERE id IN ($mail_list[email_id]) AND verify_status = '1' AND send_status = 'to_send' LIMIT 10") or displayError
(3
);
$update = @mysql_query("UPDATE `users` SET send_status = 'to_send'") or displayError
(3
); echo 'Wszystkie adresy email były oznaczone jako wysłane. Nastąpiła konwersja statusu wysyłki wiadomości. Proszę ponowić wysyłkę newslettera...';
}
$suma = 0;
$bledy = 0;
$porcja = 1;
$wyslane = 0;
$niewyslane = 0;
echo '<div class="listing">';
$mail->AltBody = "Otwórz tę wiadomość aplikacją obslugującą wiadomości HTML";
$mail->MsgHTML($body);
$mail->AddAddress($row['email'], $row['name']);
if(!$mail->Send()) {
echo "Błąd (" . str_replace("@", "@", $row['email']) . ')<br /> ' . $mail->ErrorInfo . '<br />'; $niewyslane++;
}
else {
echo "Wiadomość wysłana do: " . $row["name"] . ' (' . str_replace("@", "@", $row["email"]) . ')<br />'; $update = @mysql_query("UPDATE `users` SET send_status = 'sent' WHERE email = '$row[email]'") or displayError
(3
);
if (!$update) {
displayError(4);
}
else {
$mail->ClearAddresses();
$mail->ClearAttachments();
$wyslane++;
}
}
}
echo 'Wysłano: '.$wyslane.'<br />'; echo 'Błąd wysyłania: '.$niewyslane.'<br />'; echo 'W sumie wysłano: '.$wyslane + $suma.'<br />'; echo 'W sumie nie wysłano: '.$niewyslane + $bledy.'<br />';
[b]$url = 'send_newsletter.php';
$data = array ('dist_list' => $list_id, 'select_template' => $template_thumb, 'subject' => $subject, 'tresc' => $content); $data = http_build_query($data);
$context_options = array ( 'method' => 'POST',
'header'=> "Content-type: application/x-www-form-urlencoded\r\n"
. "Content-Length: " . strlen($data) . "\r\n", 'content' => $data
)
);
$fp = fopen($url, 'r', false, $context);[/b
]
}
if ($_GET) {
die ('Parametry należy przekazać za pomocą formularza.');
}
?>
Dodam, że plik send_newsletter.php domyślnie wywoływany jest przez AJAX i do AJAX'a zwraca rezultaty wykonania się. Chcę żeby po każdym wykonaniu się pętli efekt wykonania został zwrócony do AJAX'a i skrypt wykonał się ponownie...