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 :

PDO et requête ayant des tables avec jointures [PDO]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Comptable
    Inscrit en
    Janvier 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2014
    Messages : 29
    Points : 25
    Points
    25
    Par défaut PDO et requête ayant des tables avec jointures
    Bonjour à tous,

    Vous êtes les seules vers qui je peux me tourner pour poser mes questions car je n'ai pas trouvé ce que je cherchais sur google.

    J'ai une base de données sous MYSQL en innodb sur laquelle j'ai fais des requêtes qui fonctionnent quand je les tapes sur phpmyadmin.

    Là je passe à la seconde phase pour mon site c'est à dire tenter d'afficher le résultat de mes requêtes puis créer des formulaires pour pouvoir ajouter des informations dans la base de donnée de manière plus pratique que via phpmysql.

    Après avoir écumé plusieurs sites et explication je suis arrivé à affiché une partie de mon résultat mais je ne sais pas comment j'ai réussi et pourquoi je n'ai pas le reste.

    Voila ma requête sur mysql:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT personnalite.nom, personnalite.prenom, pays.nom
    FROM personnalite
    INNER JOIN pays ON personnalite.pays_id = pays.id
    WHERE pays.nom = 'USA'

    Le résultat qu'elle donne:
    nom
    Padalecki
    Ackles
    Collins
    Day
    Cortese
    Barrymore
    prenom
    Jared
    Jensen
    Misha
    Felicia
    Genevieve
    Drew
    nom
    USA
    USA
    USA
    USA
    USA
    USA


    Voila le code que j'ai fais pour l'affichage de ma requette sur mon site qui tourne sur wampserver:
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css" href="entree.css"/>
    <title>Document sans titre</title>
    </head>
     
    <body>
    <?php include ("header.php"); ?>
    <?php include ("menu.php"); ?>
     
    <?php
     
    try
    {
    	$bdd = new PDO('mysql:host=test;dbname=test', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    }
     
    catch(Exception $e)
    {
    	// En cas d'erreur, on affiche un message et on arrête tout
            die('Erreur : '.$e->getMessage());
    }
     
    // Si tout va bien, on peut continuer
     
    // On récupère tout le contenu de la table
     
    $reponse = $bdd->query('SELECT personnalite.nom, personnalite.prenom, pays.nom
    FROM personnalite
    INNER JOIN pays ON personnalite.pays_id = pays.id
    WHERE pays.nom = \'USA\'');
     
    while ($donnees = $reponse->fetch())
    {
    	echo $donnees['nom'] . '<br />';
    }
     
    $reponse->closeCursor();
    ?>
     
     
     
     
    <?php include ("bas.php"); ?>
    </body>
    </html>
    Ce que cela m'affiche c'est :
    USA
    USA
    USA
    USA
    USA
    USA


    Je pense que mon problème doit venir de mes jointure et du fait que les éléments que je cherche à afficher viennent de plusieurs tables liées par des jointures.

    Ce que j'ai trouvé pour afficher le résultat c'est ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {
    	echo $donnees['nom'] . '<br />';
    }
    Mais je ne suis pas certaine que ce soit la bonne solution. Je ne sais pas comment demander l'affichage de ce qui est déjà demandé dans la requête.

    Vous voyez ce que je veux dire?

    Je vous remercie d'avance pour avoir lu mon message.

    Bonne soirée.

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Il faut vraiment que tu lises un tuto pour débutant.

    http://sylvie-vauthier.developpez.co...tableaux#LIV-3

    Ca, c'est juste la question de la personne qui n'a lu aucun tuto de débutant...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ($donnees = $reponse->fetch())
    {
    	echo '<pre>';
           print_r( $donnees)  ;
           echo '</pre>';
    }

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Comptable
    Inscrit en
    Janvier 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2014
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Bonjour

    Merci pour le lien je vais étudier ça.

    En effet j'ai fouiné partout et les explications n'étaient pas très claires pour ça.

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 244
    Points
    20 244
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ($donnees = $reponse->fetch())
    {
    	echo $donnees['nom'] . '<br />';
    }
    Tu ne demande que l'affichage du nom , c'est normal qu'il n'y ai que ça d'affiché.
    Ensuite tu as une ambiguïté dans les champs de ta table puisque si tu utilises seulement "nom" , tu as personnalite.nom et pays.nom qui y sont associés , pays.nom étant le dernier dans la requête il écrase personnalite.nom.

    Pour éviter les problèmes, donne un alias à l'un des champs :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT personnalite.nom, personnalite.prenom, pays.nom as nompays
    FROM personnalite
    INNER JOIN pays ON personnalite.pays_id = pays.id
    WHERE pays.nom = 'USA'

    et ton PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ($donnees = $reponse->fetch())
    {
    	echo $donnees['nom'].' '.$donnees['prenom'].' '.$donnees['nompays'] . '<br />';
    }

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

Discussions similaires

  1. [AC-2007] Requête avec des tables de jointures
    Par Vhalar dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 15/08/2011, 20h00
  2. Réponses: 4
    Dernier message: 07/07/2011, 09h51
  3. Réponses: 3
    Dernier message: 02/07/2009, 16h13
  4. Requête sur 2 tables avec critères de jointures particuliers
    Par Randomdev dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/01/2009, 19h00
  5. Création des tables avec les jointures.
    Par alexandrebergercyr dans le forum Langage SQL
    Réponses: 6
    Dernier message: 06/03/2007, 16h25

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