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

Langage PHP Discussion :

Une boucle dans une boucle


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 152
    Points : 65
    Points
    65
    Par défaut Une boucle dans une boucle
    Bonjour,

    J'ai un soucis avec ma requête, qui me renvoie 2x les 3 résultats de la base de données.

    Je suppose que c'est parce que j'ai une boucle dans une boucle...

    Mais quel est l'alternative ?

    Merci

    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
     
    $pseudo = 'natsu';
    $statut = 'en_cours';
    $type = 'amazon';
     
    $stmt = $bdd->prepare('SELECT * FROM shop WHERE pseudo = :pseudo AND statut = :statut');
    $stmt->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
    $stmt->bindValue(':statut', $statut, PDO::PARAM_STR);
    $stmt->execute();
     
    $datas = $stmt->fetchAll(PDO::FETCH_ASSOC);
     
    if(count($datas) > 0)
    {
    foreach ($datas as $data) 
      {
     
      if($data['type'] == 'amazon')
      { 
    	  $stmt = $bdd->prepare('SELECT * FROM shop WHERE pseudo = :pseudo AND statut = :statut AND type = :type');
              $stmt->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
              $stmt->bindValue(':statut', $statut, PDO::PARAM_STR);
    	  $stmt->bindValue(':type', $type, PDO::PARAM_STR);	
    	  $stmt->execute();
     
    	  foreach ($datas as $data) 
          {
    	  $total = $data['montant'] * $data['quantite'];
     
                    echo 'montant : '; echo $data['montant'];
                    echo 'quantite : '; echo $data['quantite'];
                    echo 'total'; echo $total;  echo'Points</br>';
    	 }
      }
     }
    }

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

    1- C'est simple : la 2ème requête (et donc 2ème boucle) est totalement inutile.
    Le if suffit.

    2- Je dirais même plus, il suffit de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stmt = $bdd->prepare('SELECT * FROM shop WHERE pseudo = :pseudo AND statut = :statut AND type = \'amazon\'');

    3- De plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($datas as $data)
    ...
       foreach ($datas as $data)
    Le minimum est de mettre des noms de variables différents !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 152
    Points : 65
    Points
    65
    Par défaut
    Merci pour ta solution et réponse et effectivement, j'aurai dû changer le nom des variables.

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

Discussions similaires

  1. [langage] incrementation de variable dans une boucle
    Par mimilou dans le forum Langage
    Réponses: 15
    Dernier message: 16/04/2004, 13h23
  2. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19
  3. swf dans une boucle asp
    Par Chucky69 dans le forum Flash
    Réponses: 11
    Dernier message: 10/02/2004, 17h07
  4. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 14h37
  5. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 08h52

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