Recuperer les données dans la bdd et les passer à un tableau d'une autre instanc
Iriven
Messages postés72Date d'inscriptionsamedi 23 juin 2007StatutMembreDernière intervention 3 février 2014
-
9 oct. 2008 à 15:26
Ordinastie
Messages postés93Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention17 octobre 2008
-
11 oct. 2008 à 04:26
bonjour à tous!
je suis confronté à un pb depuis ce matin. en fait je travail en ce moment sur un peit projet de newsletter à envoi automatique.
pour cela lorsque l'admin saisi un message et le poste, on recupere dans la table des clients tous les comptes ayant l'option newsletter activé. on construit ensuite un message pour chacun et l'insere alors dans la table newsletter_mails.
un systeme de cron sera alors declenché pour envoyé les mails tous les 5s en ssupprimant au fur et à mesure ceux envoyé. voilà pour le principe.
mais au moment de l'insertion des données dans la table 'newsletter_mails', ce message d'erreur apparait:
Cannot add Mail. Empty value for [recepientMail]
voici le code de traitement de données
if(isset($_POST['msg_field'])&&($_POST['msg_field']!==''))
{
//on recupere les valeurs des champs
$sujet=mysql_escape_string($_POST['objet']);
$msg=mysql_escape_string(freeRTE_Preload($_POST['msg_field']));
$domain=$_SERVER['HTTP_HOST'];
//connexion à la bdd
$db = new IrivenSql($config['server'], $config['user'], $config['pass'], $config['database'], $config['tablePrefix']);
$db->Irivenconnect();
// la requete qu' on va envoyer :$Query 'SELECT user_name, Email, etat FROM newsletter_users WHERE etat"Active"';
$results = $db->Irivenquery($Query);
while ($row = $db->Irivenfetch_array($results)) {
//instanciation de la newsletter
$newsletter= new newsletter();
$newsletter->addMysqlObg($db);
/*
///juste pour verifier que la requete precedent retourne des valeurs: ce qui est le cas
echo $row['user_name'];
echo $row['Email']; */
$recepient['name'] = $newsletter->$row['user_name'];
$recepient['Email'] = $newsletter->$row['Email'];
//construction des données à insérer dans la table newsletter_mails
$data=array( 'method' => 'SMTP',//deux valeurs possibles:'mail' ou 'smtp'
'From' => 'myadress@domain.com', //votre adresse email
'FromName' => 'My Name', // votre nom
'Host' => $domain, //le nom de domaine
'SMTPAuth' => true, //authentification smtp activéé
'Username' => 'myadress@domain.com',//votre adresse email de connexion smtp
'Password' => 'password', // votre mot de passe smtp
'recepientMail' => $recepient['Email'], //email du desinataire
'recepientName' => $recepient['name'],//nom du destinataire
'subject' => $sujet,// titre du message
'body' => $msg,//corps du message
'ContentType' => 'text/html', //type de message
'priority' => '3',// priorité, compris entre 1 et 5
'SendDate' => time(), //date en secondes
);
//on enregistre dans la bdd
$add=$newsletter->addMail($data);
if ($add===false) echo $newsletter->errorMsg;
//$db2->Irivenclose();
}
$db->Irivenclose();
}
Ordinastie
Messages postés93Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention17 octobre 20082 11 oct. 2008 à 04:26
Bonjour,
C'est le message "Cannot add Mail. Empty value for [recepientMail]" que tu comprends pas? C'est pourtant on ne peut plus explicite. La donnée est vide. Sachant qu'elle est remplie par "$recepient['Email']", vérifie que la variable "$newsletter->$row['Email']" est bien remplie comme il faut... ce dont je doute vu la forme de la variable... Je suppose que $newsletter est en trop dans l'assignation, et que ça devrait être $recepient['Email'] = $row['Email'].
Je ne connais pas le framework que tu utilises mais y'a des trucs vraiment bizarres. Le système ne me semble pas super bien pensé.