Ho bisogno di un aiuto... Stavo riscrivendo la parte:
PHP:
//estrazione utenti
$queryutenti="select * from t6745_newsletter_utenti where stato=1 and attivata=1 order by id desc limit $ultimovisual,$numutentimax";
$risultatoutenti=mysqli_query($conn,$queryutenti);
$numrighe=mysqli_num_rows($risultatoutenti);
while ($row = mysqli_fetch_assoc($risultatoutenti))
{
$messaggio = new PHPmailer();
//$messaggio->IsSMTP();
//settiamo su true il metodo che indica alla classe
//il formato HTML
$messaggio->IsHTML(true);
//$messaggio->Host='Host SMTP';
//intestazioni e corpo dell'email
$messaggio->From='news@newsletter.it';
$messaggio->FromName='Newsletter ';
$messaggio->AddAddress($row['mail']);
$messaggio->AddReplyTo('news@newsletter.it');
$messaggio->Subject="Newsletter - $titolonews";
//inseriamo i tag HTML e i CSS per formattare il messaggio
$messaggio->Body = ''.$mexalto.'';
$messaggio->Body .= '<small>Ricevi questa mail perchè sei iscritto/a alla newsletter<br>
Per informazioni scrivi a: info@newsletter.it<br><a title="cancellati" href="#">Se non vuoi più ricevere informazioni clicca qui </a></small><br><br></td>';
$messaggio->Body .= ''.$mexmedio.'';
$messaggio->Body .= ''.$mexbasso.'';
$messaggio->Body .= '</body></html>';
//parte relativa all'invio
if(!$messaggio->Send())
{
$querycheck="insert into t6587_newsletter_check_invio (mail_utente,id_utente,ris_invio,newsletter_id) VALUES ('".$row['mail']."',".$row['id'].",0,$nnews)";
$risultatocheck=mysqli_query($conn,$querycheck);
}
else
{
if($pagina==$numeropagine )
{
//Qui quando si arriva alla fine esce e setta la newsletter come inviata
$querycheck="insert into t6587_newsletter_check_invio (mail_utente,id_utente,ris_invio,newsletter_id) VALUES ('".$row['mail']."',".$row['id'].",1,$nnews)";
$risultatocheck=mysqli_query($conn,$querycheck);
$_SESSION['ci']++;
$nnewstemp=trim($_GET['nnews']);
$nnews=mysqli_real_escape_string($conn,$nnewstemp);
$queryinsnews="update t6935_newsletter_inviate set inviata=1 where id=$nnews ";
$ricevutainsnews= mysqli_query($conn,$queryinsnews);
}
else
{
$querycheck="insert into t6587_newsletter_check_invio (mail_utente,id_utente,ris_invio,newsletter_id) VALUES ('".$row['mail']."',".$row['id'].",1,$nnews)";
$risultatocheck=mysqli_query($conn,$querycheck);
$_SESSION['ci']++;
header("location: invionewsletter.php?gruppo=$paginasucc&op=1&nnews=$nnews");
}
}
$messaggio->SmtpClose();
unset($messaggio);
unset($row);
}
non mi torna nel suo funzionamento.
Visto così in teoria ad ogni mail inviata lui reindirizza nuovamente alla pagina. Giusto?
mi spiego: Se io imposto di inviare 5 mail per volta e dal db mi estraggo 5 mail quell'header mi reindirizza al primo indirizzo. Sbaglio?
allora per farvela breve avrei bisogno di un aiuto a realizzare questo:
Il ciclo while cicla finchè non ha scansionato tutti i record risultanti dalla query e li dentro io voglio settare solo una query nel db. All'uscita del while verifico se il contatore è uguale al numero totale di utenti e se la condizione è vera esco dalla pagina altrimenti mi reindirizzo alla pagina e riprendo con una nuova query da dove ero rimasto per altri 5 e così via.
Ma non riesco a trovare il modo.... sarò fuso..
Semplificato:
$queryutenti="select * from t6745_newsletter_utenti where stato=1 and attivata=1 and gruppo_id=".$_SESSION['gruppoid']." order by id desc limit ".$_SESSION['ultimoinvio'].",".$numutentimax."";
echo $queryutenti;
$risultatoutenti=mysqli_query($conn,$queryutenti);
$numrighe=mysqli_num_rows($risultatoutenti);
while ($row = mysqli_fetch_assoc($risultatoutenti))
{
Invio la singola mail
if(!$messaggio->Send())
{
Invio non riuscito
query
}
else
{
invio riuscito
query
}
} //Fine while
if($_SESSION['ultimoinvio']==$utentitot )
{
Esco a vado ad una nuova pagina con i risultati dell'invio
}
else
{
reindirizzo alla stessa pagina con la variabile $_SESSION['ultimoinvio'] che non è altro che un contatore. Lo recupero dopo il reindirizzamento incrementandola di
1 e la query partirà estraendo partendo da li.
}