Newsgroup: it.comp.www.php
Titolo: while in newsletter

Gent. NG
Ho un problemino nel far funzionare la newsletter.
Supponiamo di avere 25 iscritti, la mia newsletter manda ad ogni iscritto 25
mail ognuna intestata ad ogni iscritto :-((((.
Il codice che uso è il seguente.
Mi connetto a MySql
faccio la query
$sql = "select email,nome from iscritti"
$result = mysql_query($sql) or die(mysql_error());
************
CREDO CHE L' ERRORE SIA QUA
************
while ($row = mysql_fetch_array($result))  {
extract($row);
************
In pratica mi inserisce tutti gli indirizzi nella variabile $recipiente,
invece di inserirne uno, inviare la mail, inserire il secondo inviare ecc.
***************
            $recipiente = "$email";
            $title = "$subject";
   $message = "
/ scrivo il mio messaggio
";
   $headers .= "From: $nomesito <$emailsito>\n";
   $headers .= "To: $name <$recipiente>\n";
   $headers .= "Reply-To: $emailsito <$emailsito>\n";
   $headers .= "X-Sender: <$emailsito>\n";
   $headers .= "X-Mailer: PHP\n";
   $headers .= "Return-Path: <$emailsito>\n";
   $headers .= "Content-Type: text/html; charset=iso-8859-1";
   IF(!@mail($recipient, $title, $message, $headers))
    {
    echo "errore  le mail non sono andate"
}
else
  {
echo "le mail sono andate"
}
  }
endif;
.........................
Grazie Mille
Agolf

ma non capisco dove finische il while, comunque ti consiglio di caricare il
risultato della query in un array multidimensionale:
tipo con un ciclo di
for o while
{
   $arrayqry = mysql_fetch_assoc($result);
$arraydati[$x]['nome'] = $arrayqry['nome'];
   $arraydati[$x]['email'] =
$arrayqry['email'];
   incrementi eventualmente $x
}
alla fine avrai
tutti i tuoi dati in $arraydati[x]['campo']
e ci puoi fare quello che vuoi
ad esempio iniziare un ciclo di for o while per mandare la mail (ricordati
sempre che devi incrementare x altrimenti continui a mandarle allo
stesso...poverino.....)
La soluzione forse è poco elegante ma più
leggibile e gestibile...almeno per me
Ciao
========================
www.insito.infonetservice.com
========================
--------------------------------
Inviato via 
http://usenet.iol.it
 

 Ciao
Grazie per la risposta!
While finisce prima dell'endif.
Perché dici poco elegante?? Ci sono modi più puliti? Se funziona mi sembra
lineare.
Adesso lo provo
Ciao Agolf

Dico poco elegante perchè è il mio modo di programmare e spesso colleghi mi
rimproverano......
Spero funzioni (nei mie script funziona!!)
Ciao
==========================
www.insito.infonetservice.com
=========================


 Ciao
Non riesco a farlo funzionare, continua ad accodarmi gli indirizzi di
posta...
Grazie
Ciao
Agolf

Riproviamoci, io lo farei cosě:
query a mySQL
$riga =
mysql_num_row($qresult); //recupero il numero di records trovati
inizio il
while per caricare la mia array
$x = 0;
while ($x <= $riga)
{
$arrayqry = mysql_fetch_assoc($result);
  $arraydati[$x]['nome'] =
$arrayqry['nome'];
  $arraydati[$x]['email'] =
  $arrayqry['email'];
$x = $x+1;
}
Inizio il while per mandare le mail
$x = 0;
while ($x <=
$riga)
{
tuo codice
$x = $x + 1;
}
fine
ripeto tante istruzioni
potrebbere essere raggruppate, ma per la manutenzione secondo me č meglio
cosě
speriamo
Ciao
=============================
www.insito.infonetservice.com
=============================
