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

Requêtes MySQL Discussion :

Afficher une requete MYSQL avec jointure


Sujet :

Requêtes MySQL

  1. #1
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut Afficher une requete MYSQL avec jointure
    Bonjour,

    J'ai un probleme en voulant afficher le resultat d'une requette. Je vous donne une exemple :
    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
     
    table1
    id_table1
    nom 
    prenom
     
    table2
    id_table2
    nom
    adresse
     
    $queryString = 'SELECT t1.*, t2.*'.
                           ' FROM table1, table2'.
                           '  WHERE <des trucs>';
     
    $result = mysql_query($queryString);
    $array = mysql_fetch_array($result);
    Maintenant je veux afficher
    t1.nom et t2.nom

    je fait donc ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $array['t1.nom']." ".$array['t2.nom'].'<BR>';
    Mais rien ne s'affiche...

    Ou est ce que j'ai merder svp ?

  2. #2
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    essai de faire un print_r($array); comme ça tu verra exactement ce que ta ligne te retourne.

    Sinon dans le principe c'est ça, donc rajoute un "or die (mysql_error());" après ton mysql_query, histoire de voir si ce n'est pas ta query qui déconne.

  3. #3
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut, je sais pas si c'est une erreur de copie mais là tu ne crées pas d'alias pour tes tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $queryString = 'SELECT t1.*, t2.*'.
                           ' FROM table1 t1, table2 t2'.
                           '  WHERE <des trucs>';
    Bye

  4. #4
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    Oui c'est bien une erreure de copie. Ma requette est bonne car quand je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $array[0]." ".$array[1].'<BR>';
    Tout s'affiche correctement...

    Je vais voir avec ca : print_r($array); si ca peux m'aider

  5. #5
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    Bon aparemment lorsque 2 tables un champs qui porte le meme nom, on ne peux pas les afficher en utilisant cette méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $array['t1.nom']." ".$array['t2.nom'].'<BR>';
    mais uniquement comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $array[0]." ".$array[1].'<BR>';
    C'est bien dommage...

    Merci

  6. #6
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Ah bon ca m'intéresse ^^
    tu veux dire que dans ton tableau tu as seulement array['nom'] et que le t2.nom écrase le t1.nom ?

  7. #7
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    C'est clair que c'est plutôt étonnant !

    Et en tout cas c'est clairement une habitude à bannir car si demain l'équipe de PHP modifie ce comportement ton script est out...
    Alors qu'en t'appuyant sur les standards tu n'aura pas ce souci la.

    Amon sens tu aurais du faire ta requete ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $queryString = "SELECT t1.nom As T1nom, t2.nom As T2nom
                           ... ect
                            FROM table1 t1, table2 t2
                             WHERE <des trucs>";
    Et tu aurais obtenu un tableau php avec un cle T1nom et une cle T2nom.

    Enfin , il est tout à fait normal que ceci ne fonctionne pas !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $array['t1.nom']." ".$array['t2.nom'].'<BR>';
    Car PHP ne fait que retranscrire ce que MYSQL lui transmets et je serai bien embeter si mysql faisait cela implicitement..

    bye

  8. #8
    Membre averti Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Points : 412
    Points
    412
    Par défaut
    tu veux dire que dans ton tableau tu as seulement array['nom'] et que le t2.nom écrase le t1.nom ?
    En fait $array['nom'] existe et prend la valeur de t1.nom mais t2. nom ne peut etre obtenu qu'en l'appelent ainsi : $array[1]

    Amon sens tu aurais du faire ta requete ainsi :
    Code:

    $queryString = "SELECT t1.nom As T1nom, t2.nom As T2nom
    ... ect
    FROM table1 t1, table2 t2
    WHERE <des trucs>";
    Je ne conaissait pas cette syntaxe mais ca marche nikel ! MERCI !

  9. #9
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    ok, merci pour l'info.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/03/2011, 23h26
  2. Réponses: 6
    Dernier message: 31/07/2006, 10h18
  3. Probleme avec une requete MySQL en perl
    Par Jim_Nastiq dans le forum SGBD
    Réponses: 3
    Dernier message: 14/04/2006, 09h42
  4. Requete MySQL avec un Rand sur une table
    Par tom06440 dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/01/2006, 17h37
  5. afficher les resultats d'une requete mysql sur 3 colonnes
    Par harlock59 dans le forum Requêtes
    Réponses: 7
    Dernier message: 24/12/2005, 14h38

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