consiglio su codice

  • Creatore Discussione Creatore Discussione amhal
  • Data di inizio Data di inizio

amhal

Utente Attivo
17 Feb 2011
89
1
8
Ciao ho scritto del codice che estrae nome,codice,email con una query e li mette in una array , poi con dei cicli foreach spedisco nome e codice all'indirizzo email...ora, funziona tutto, ma vorrei sapere se è scritto bene, mi sembra un po' accroccato!!!Potete dare un'occhiata e correggerlo? Grazie tante posto il codice:

PHP:
while ($row = mysql_fetch_assoc($result)){


$invio_email[] = array( 
		'cod'=> $row['cod'],
                 'nome' => $row['nome'],                      
		'email' => $row['email']
		);


}		


foreach($invio_email as $variabile => $campo){ 
    
	foreach($campo as $valore => $key){
	
	if($valore == 'cod'){  $cod =  $key;  } //così ottengo solo i codici	
              if($valore == 'nome'){  $nome	 =  $key;  }//così ottengo solo i nomi
	if($valore == 'email'){  $email	 =  $key;  }//così ottengo solo le email

	
	$content = "Ciao $nome,\r\n";
	$content .= "il codice è $cod\r\n\r\n";
	$content .= "per conferma segui il link\r\n\r\n";
	$content .= "http://www.miosito.it/accedi.php";
	mail($email, "oggetto", $content, "From: staff");
	
	unset($email); //svuoto la variabile che contiene le email altrimenti le spedisce doppie
	
	} 
} 


echo 'email inviate';

grazie
 
Ultima modifica di un moderatore:
Ciao, scondo me riesci a fare tutto con un solo ciclo
PHP:
<?php

while ($row = mysql_fetch_assoc($result)) {

    $content = "Ciao " . $row['nome'] . ",\r\n";
    $content .= "il codice è " . $row['cod'] . "\r\n\r\n";
    $content .= "per conferma segui il link\r\n\r\n";
    $content .= "http://www.miosito.it/accedi.php";

    if (mail($row['email'], "oggetto", $content, "From: staff")) {
        echo "email a " . $row['email'] . " inviata<br/>";
    } else {
        echo "errore invio email a " . $row['email'] . "<br/>";
    }
}
?>
non ho testato
 
ciao
criric mi ha battuto sul tempo :)
comunque un paio di consigli abbandona le vecchie istruzioni mysql (deprecate) e passa a quelle di mysqli o alla pdo, poi al posto ella funzione mail è meglio usare la classe phpmailler (o simile)
 
grazie a tutti e due per aver risposto, userò mysqli sicuramente ma vorrei sapere come posso fare tutto con un ciclo foreach perché nn riesco...Poi avrei un'altra domanda: posso mandare infinite email o devo scaglionarle in blocchi? Se devo scaglionare l'invio quanti blocchi devo fare e come faccio a farlo? grazie a tutti
 
ciao
...con un ciclo foreach perché nn riesco...
cosa intendi?
a che ti serve il foreach?
poi
posso mandare infinite email....
dipende da quante sono le "infinite", da che ne so io ti conviene inviare a blocchi con un max di una 50ina di email/gg, altrimenti rischi di entrare in qualche blacklist.
Se devo scaglionare ....come faccio a farlo?
potresti mettere nella select
SELECT * FROM tabella LIMIT 50
poi aggiungere un campo tipo set nella tabella chiamato es invio con
invio 0 == non inviata . 1 == inviata
e modificare la select "SELECT * FROM tabella WHERE invio = 0 LIMIT 50
poi nell'if di invio uppi il campo a 1 (schematizzo)
Codice:
if email inviata
{
UPDATE tabella SET invio = 1 WHERE email = $email
}
 

Discussioni simili