Recuperer les données dans la bdd et les passer à un tableau d'une autre instanc

Iriven Messages postés 72 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 3 février 2014 - 9 oct. 2008 à 15:26
Ordinastie Messages postés 93 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 17 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();
}

Votre aide m'est précieuse

http://www.bbsecurit.com
Tout mal qui ne nous tue pas nous rend plus fort.NIETSCHES

3 réponses

Iriven Messages postés 72 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 3 février 2014
9 oct. 2008 à 16:41
pour  information, voici la fonction de données:

function addMail($params){
        $data=array('method'           => ( isset($params['method']) )           ? $params['method']        : 'mail',
                    'From'             => ( isset($params['From']) )            ? $params['From']          : 'root@localhost',
                    'FromName'         => ( isset($params['FromName']) )        ? $params['FromName']      : 'Root Account',
                    'Host'             => ( isset($params['Host']) )             ? $params['Host']          : 'localhost',
                    'SMTPAuth'         => ( isset($params['SMTPAuth']) )        ? $params['SMTPAuth']      : true,
                    'Username'         => ( isset($params['Username']) )        ? $params['Username']      : 'root@localhost',
                    'Password'         => ( isset($params['Password']) )         ? $params['Password']      : '',
                    'recepientMail' => ( isset($params['recepientMail']) ) ? $params['recepientMail'] : false,
                    'recepientName' => ( isset($params['recepientName']) ) ? $params['recepientName'] : '',
                    'subject'       => ( isset($params['subject']) )       ? $params['subject']       : false,
                    'body'          => ( isset($params['body']) )          ? $params['body']          : false,
                    'ContentType'   => ( isset($params['ContentType']) )   ? $params['ContentType']   : 'text/plain',
                    'priority'      => ( isset($params['priority']) )      ? $params['priority']      : '3',
                    'SendDate'      => ( isset($params['SendDate']) )      ? $params['SendDate']      : time(),
                    );
        $error=false;           
        foreach ( $data as $key=>$value ){
            if ($value===false) {
                $error=true;
                $errorMsg="Cannot add Mail. Empty value for [$key]";
            }
        }
        if ( $error===true ){
            $this->errorMsg=$errorMsg;
            return false;
        } else {
            if ( ($this->mysqlObj instanceof mysql) === false ) {                
                $this->errorMsg='Could not find a mysql object. Please load one using addMysqlObg.';
                return false;
            } else {
                $insertAttempt=$this->mysqlObj->Irivenrecord_insert($this->$MysqlMsgTableName ,$data);
                if ($insertAttempt===true) return true;
                else {               
                    $this->errorMsg='SQL ERROR :'.$this->mysqlObj->error_desc;
                    return false;                   
                }
            }
        }   
    }
   

http://www.bbsecurit.com
Tout mal qui ne nous tue pas nous rend plus fort.NIETSCHES
0
Iriven Messages postés 72 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 3 février 2014
9 oct. 2008 à 16:43
fonction d'insertion de données dans la table newsletter_mails

http://www.bbsecurit.com
Tout mal qui ne nous tue pas nous rend plus fort.NIETSCHES
0
Ordinastie Messages postés 93 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 17 octobre 2008 2
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é.

Ordinastie.
0
Rejoignez-nous