Script newsletter creato da me. Mi date consigli?

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='[email protected]';
        $messaggio->FromName='Newsletter ';
        $messaggio->AddAddress($row['mail']);
        $messaggio->AddReplyTo('[email protected]'); 
        $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&egrave; sei iscritto/a alla newsletter<br>
                Per informazioni scrivi a: [email protected]<br><a title="cancellati" href="#">Se non vuoi pi&ugrave 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);
    }
in quanto questo header

header("location: invionewsletter.php?gruppo=$paginasucc&op=1&nnews=$nnews");

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.
}
 

Discussioni simili