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 :

Affichage sur double foreach


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de awesomeman
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 166
    Points : 136
    Points
    136
    Par défaut Affichage sur double foreach
    Bonsoir,

    je cherche à afficher l'ensemble de la première entrée de ma base de donnée jeux_vidéo .
    Ca marche très bien avec une boucle while mais avec foreach , les résultats sont affichés en double ..
    une idée ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    try
    	 {
    	 $bdd = new PDO('mysql:host=localhost;dbname=test','root','root');
    	 }
    	 catch (Exception $e)
    	 {
    		 die('Erreur : ' . $e->getMessage());
    	 }
    	 $my_query = $bdd->query('SELECT * FROM jeux_video');
    	$datadb = $my_query->fetch();
    	 foreach ($datadb as $data1 => $data2)
    	 {
    	  echo "| ". $data2 . '| <br/>';
    	 }
    Merci pour votre aide

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 15
    Points : 35
    Points
    35
    Par défaut
    Avec foreach tu peux itérer directement sur l'objet PDOStatement retourné par query(), dans ce cas $my_query :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=test','root','root');
    }
    catch (Exception $e)
    {
    	die('Erreur : ' . $e->getMessage());
    }
    $my_query = $bdd->query('SELECT * FROM jeux_video');
    foreach ($my_query as $row)
    {
    	echo "| ". $row . '| <br/>';
    }

  3. #3
    Membre habitué Avatar de awesomeman
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 166
    Points : 136
    Points
    136
    Par défaut
    Non l'array row que tu me montre ne peut pas être print tel quel .
    Il faut print les éléments contenu dedans . ce qu'il faut faire c'est une nouvelle boucle pour afficher chaque élément de cette array mais justement je veux faire ca avec foreach ( ca evite de faire "echo $nom ; echo $prix ; echo $ID " ect)
    Quand je fais ce foreach ca marche mais en affichant les résultats en double ..

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 15
    Points : 35
    Points
    35
    Par défaut
    Ah d'accord, je pense avoir compris maintenant. Il affiche peut-être les résultats en double car tu n'as pas précisé le mode du fetch lors de l'appel de la méthode fetch(). La valeur par défaut est PDO::FETCH_BOTH, ce qui fait que le tableau retourné contient des données indexées par le nom de la colonne mais également par un index numérique du coup quand tu boucles sur les valeurs, ça donne des résultats en double. Essaie en remplaçant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $datadb = $my_query->fetch();
    de ton tout premier code par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $datadb = $my_query->fetch(PDO::FETCH_ASSOC);
    pour voir ce que ça donne.

  5. #5
    Membre habitué Avatar de awesomeman
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 166
    Points : 136
    Points
    136
    Par défaut
    cool ca marche comme ca merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while ($datadb = $my_query->fetch(PDO::FETCH_ASSOC))
    	 foreach ($datadb as $data1)
    	 {
    	  echo "| ". $data1 . '| <br/>';
    	 }
    une petite explication sur PDO::FETCH_ASSOC ??

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 15
    Points : 35
    Points
    35
    Par défaut
    Quand on passe le paramètre FETCH_ASSOC à la méthode fetch(), elle retourne un tableau associatif contenant pour clefs les noms des colonnes et pour valeurs le contenu de la ligne actuelle. Tu peux faire un print_r dessus pour voir ce que ça donne. Si tu voulais par exemple afficher les noms des colonnes en plus de leur contenu, tu aurais pu faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach ($datadb as $colonne => $valeur)
    {
    	echo "| ". $colonne . ' : ' . $valeur . '| <br/>';
    }
    fetch() supporte également d'autres modes qui sont documentés sur le site officiel : http://php.net/manual/fr/pdostatement.fetch.php

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

    ce n'est pourtant pas sorcier de faire une "PDO::FETCH_ASSOC"

    Et plus généralement, de consulter le Manuel PHP.


    N.B. Bien vu, Hassan

Discussions similaires

  1. [PDO] Simple insertion dans une base de données / double affichage sur ma page
    Par mrc_AO dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 21/10/2015, 14h49
  2. Double affichage sur courbe
    Par lerg89 dans le forum MATLAB
    Réponses: 2
    Dernier message: 21/08/2015, 11h18
  3. [2.x] affichage de fields indexé sur double colonne
    Par hadesjack dans le forum Symfony
    Réponses: 0
    Dernier message: 17/12/2013, 10h43
  4. [AC-2010] Formulaire double affichage sur formulaire unique ?
    Par AlPot dans le forum IHM
    Réponses: 9
    Dernier message: 29/12/2012, 17h25
  5. [ZF 2.0.3] double foreach sur résultat de requête = bug
    Par efreet_cs dans le forum Zend Framework
    Réponses: 3
    Dernier message: 25/10/2012, 20h40

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