IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Réutiliser les données d'un FOREACH


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Points : 23
    Points
    23
    Par défaut Réutiliser les données d'un FOREACH
    Bonsoir à tous,
    Dans le script suivant après le Foreach J'ai besoin de récupérer la variable $row['choixbase'] dans la partie mail.
    Mais cela ne marche pas à l'heure actuelle. Je ne sais comment la sortir de ce contexte. Pour info, ce script me sert pour une tache cron.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    require('shared.php');
    require('./PHPMailer/class.phpmailer.php'); 
    $requete= $bdd->prepare("SELECT choixbase, articles, designations, qte, casiers, qui, pourqui FROM envoicherre WHERE envoi ='non'");
    $requete->execute();
    $nbart=$requete->rowCount();
    if ($nbart == 0) {
     
    }
    else
    {
    // on recolte les données 
    while ($row = $requete->fetch(PDO::FETCH_ASSOC)) {
        $data[$row['choixbase']] .= '<tr><td>'. $row['choixbase'] . '</td><td>'. $row['articles'] . '</td><td>' .$row['designations'] . ' </td><td> ' . $row['qte'] . '</td><td>' . $row['casiers'] . ' </td><td> ' . $row['qui'] . ' </td><td> ' . $row['pourqui']. '</td></tr>'; //'&#10 ';
    }
    foreach ($data as $base=>$contenu) {
    //echo $data ;
    $date = date("d-m-Y");
     
    $mail = new PHPMailer();
    $mail->CharSet = "UTF-8";'**********';
    $mail->SMTPAuth   = true;
    $mail->Port = 465; // Par défaut
     
    // Authentification
    $mail->Username = "********";
    $mail->Password = "**********";
     
    // Expéditeur
    $mail->SetFrom('********' , "********");
    // Destinataire
    $mail->AddAddress('***********');
    //$mail->AddCC('**************');
    // Objet                                  //////////////////////   
    $mail->Subject = 'Commande de pièces à ' .$row['choixbase'] . ' pour Chérré du ' . $date ;
     
    // Votre message
    $mail->MsgHTML('Merci de nous faire passer les pièces suivantes :<br><br><table width:"300px" cellspacing="2px" cellpadding="2px;" rules="all" style="border:solid 1px black;"><th>Base</th><th>Articles</th><th>Désignations</th><th>Qté</th><th>Casiers</th><th>Qui</th><th>Attribution</th>' . $contenu . '</table><br><br>Merci');
     
    // Envoi du mail avec gestion des erreurs
    if(!$mail->Send()) {
     
      echo 'Erreur : ' . $mail->ErrorInfo;
     
    } else {
    	                                                                  /////////////////////
      $stmt = $bdd->prepare('UPDATE envoicherre SET envoi="oui" WHERE choixbase = '.$row['choixbase'].' AND datecde = CURDATE()');
      //$stmt->bindValue('choixbase',$_POST['submit'],PDO::PARAM_STR);
      try {
            $stmt->execute();
      } catch (PDOException $e) {
    	error_log("error : ".$e);
      }  
     
    }  
    }
    }
    ?>
    J'ai mis des /////////// au dessus des deux endroits ou j'ai besoin de la variable
    Merci d'avance

  2. #2
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Dans la déclaration de ton for each que veux tu faire lorsque tu écris $data as $base=>$contenu ?

    Ne serait-ce pas plutôt : $data as $value (value est un exemple)

    Et si tu veux utiliser les valeurs de ton $data tu ne peux pas utiliser $row car il ne peut être utilisé que dans ton while. Donc tu dois utiliser $value.
    Pensez à regarder nos cours et tutoriels PHP ainsi que notre FAQ PHP avant de poser votre question!
    Un message vous a aidé, n'oubliez pas le

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ton foreach est correct :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($data as $base=>$contenu) {
    Et justement, ce n'est plus $row['choixbase'] mais $base qu'il faut utiliser ensuite :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $mail->Subject = 'Commande de pièces à ' .$base . ' pour Chérré du ' . $date ;

    Explication ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ($row = $requete->fetch(PDO::FETCH_ASSOC)) {
        $data[$row['choixbase']] .= '.........contenu...........';
    }
    Tu crées un array $data, dont les index sont $row['choixbase'].

    La syntaxe est :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($mon_array as $index=>$valeur) {

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Points : 23
    Points
    23
    Par défaut
    Merci
    C'est nickel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.4] manipulation les données d'un array avec foreach et for
    Par aspkiddy dans le forum Langage
    Réponses: 2
    Dernier message: 24/02/2014, 00h22
  2. Réponses: 3
    Dernier message: 27/05/2010, 23h36
  3. Réponses: 4
    Dernier message: 18/08/2003, 09h53
  4. trier les données dans le cache ??
    Par psyco2604 dans le forum XSL/XSLT/XPATH
    Réponses: 31
    Dernier message: 10/06/2003, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo