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 :

Problème avec php/mysql, variables du même nom [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Problème avec php/mysql, variables du même nom
    Bonjour à tous,

    j'ai un souci avec php/mysql et je pensais trouver mon bonheur sur google ou autres forums parce que ce n'est pas un problème vraiment particulier mais malgré plusieurs recherches, aucune solution. Le problème est le suivant :

    j'effectue une requête du type

    SELECT * FROM unites AS u INNER JOIN ressources AS r where u.price_id=r.id

    or dans la table unites on a aussi un champ id, que je voudrais récupérer

    mais lorsque je veux récupérer la variable, j'obtiens l'id qui provient de la table ressources.

    pour plus de précisions, mon code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $query = mysql_query("SELECT * FROM unites AS u INNER JOIN ressources AS r where u.price_id=r.id");
     
    while($unite = mysql_fetch_array($query)){
     
    printf($unite['id']);//ceci renvoie l'id qui provient de ressources :evilred:
     
    }
    Quelqu'un saurait-il comment faire pour récupérer l'id qui provient de la table unite ?

    Merci d'avance

    EDIT : je viens de me rendre compte que ce post aurait plutôt dû être dans la partie "MySQL", désolé

  2. #2
    Membre confirmé Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Bonsoir

    L'erreur vient de *
    Il ne faut jamais utiliser * mais plutôt nommer les colonnes à afficher. En cas de jointure s'il y a des colonnes de même nom appartenant à deux tables différentes alors il faut les préfixer avec le nom de la table source : <table>.<col>

    Cordialement
    Christophe B.

  3. #3
    Membre averti Avatar de makmaoui
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 283
    Points : 368
    Points
    368
    Par défaut
    Salut,

    si tu as besoins de tous les champs et que tu ne veux pas les lister tu peux ne préfixer que les champs présents dans les deux tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $query = mysql_query("SELECT unites.id as id_unites, ressources.id as id_ressources, * FROM unites AS u INNER JOIN ressources AS r where u.price_id=r.id");
     
    while($unite = mysql_fetch_array($query)){
     
    printf($unite['id_unites']);//ceci renvoie l'id qui provient de ressources :evilred:
     
    }

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Pour rappel :
    Citation Envoyé par http://fr.php.net/manual/fr/function.mysql-fetch-array.php
    Si plusieurs colonnes portent le même nom, la dernière colonne aura la priorité. Pour accéder aux autres colonnes du même nom, vous devez utiliser l'index numérique, ou faire un alias pour chaque colonne. Pour les alias de colonnes, vous ne pourrez pas accéder aux contenus avec les noms originaux des colonnes.

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup pour ces réponses =) tout fonctionne sans problème maintenant


    ps : juste par curiosité,
    faire un alias pour chaque colonne
    signifie bien écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unites.id as id_unites, ressources.id as id_ressources
    ? et comment se servir de l'index numérique ?

    (pardonnez mon ignorance en la matière ! )

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par Naxosy
    ps : juste par curiosité,
    faire un alias pour chaque colonne
    signifie bien écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unites.id as id_unites, ressources.id as id_ressources
    ?
    Oui !

    Citation Envoyé par Naxosy
    et comment se servir de l'index numérique ?
    Il faut utiliser la fonction mysql_fetch_row ou mysql_fetch_array (sans préciser le paramètre result_type ou bien en lui donnant la valeur MYSQL_NUM - strict équivalent de la fonction mysql_fetch_row - ou MYSQL_BOTH) pour cela.

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

Discussions similaires

  1. problème avec php et mysql
    Par lamou23 dans le forum Langage
    Réponses: 2
    Dernier message: 15/06/2010, 08h05
  2. [MySQL] Problème d'incrément avec PHP - mySQL
    Par gilouu dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/10/2009, 12h22
  3. Problème avec PHP et MySQL
    Par Vatgas dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 09/08/2006, 13h07
  4. problème avec un script de generation de nom de login
    Par black_code dans le forum Langage
    Réponses: 2
    Dernier message: 04/08/2005, 13h51
  5. Problème avec Ado, MySQL
    Par sylvain.g dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/06/2005, 10h45

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