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 :

récupérer valeur d'une variable dans une autre table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut récupérer valeur d'une variable dans une autre table
    Bonjour à tous

    Je suis débutant, j'essaie de m'y mettre mais c'est dur.

    J'ai un problème je n'arrive pas à récuper un ID d'une table et lui dire que c'est egal à un autre id dans une autre table, pour être plus clair je met le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sql = "SELECT * FROM logitheque_sous_categories WHERE id='".$_GET['id_ss_cat']."'"; 
    // on envoie la requête   
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());   
     
    while($data = mysql_fetch_assoc($req))   
    { 
    	// lien de navigation
    	echo'<p><a href="index.php">Logithèque</a> <b>>></b> <a href="liste_categories.php?cat='. $data['id_cat'].' ">'.$data['nom'].'</a> <b>>></b> <a href="'. $PHP_SELF .'?id_ss_cat='. $data['id'].'&tri=nom&sens=ASC ">'.$data['nom'].'</a> </p>';
    dans la partie // lien de navigation, tout va presque bien pour ce qui est de '. $data['id_cat'].' ça récupere la bonne valeur, id_cat se trouve dans la table logitheque_sous_categories, mais je voudrais que le nom de cette catégorie s'affiche en '.$data['nom'].'.
    Je ne comprend pas comment faire pour donner l'instruction que l'id_cat de la table logitheque_sous_catégorie est egal à 'id' de la table logitheque_categories et donc de récuperer le nom dans logitheque_categories par rapport au 'id_cat' de la table logitheque_sous_categories.

    J'espere être assez clair

    j'ai essaye en mettant une autre requête ou en mettant une jointure, mais je dois pas faire les bonnes manips, ça ne marche pas. Je n'arrive qu'à mettre le nom de logitheque_sous_categories.

    Merci d'avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "SELECT * FROM logitheque_sous_categories INNER JOIN logitheque_categorie ON logitheque_sous_categories.id=logitheque_categorie.id WHERE id='".$_GET['id_ss_cat']."'";
    J'espère avoir compris ta demande. Petite précision : à l'heure actuelle visiblement tu essaies de récupérer un champ qui est dans une table inconnue de ton select, ca semble logique qu'il ne le récupère pas ^^
    Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

    Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    Bonjour ratapapa

    Merci pour ta réponse, j'avais bien compris pour la table inconnue dans le select, mais je n'arrive pas à lui dire de le reconnaitre. j'ai aussi essayé avec une jointure, mais je n'y arrive pas.

    Je viens d'éssayer ton code mais j'ai un message d'erreur :

    Erreur SQL !
    SELECT * FROM logitheque_sous_categories INNER JOIN logitheque_categories ON logitheque_sous_categories.id=logitheque_categories.id WHERE id='1'
    Column 'id' in where clause is ambiguous
    Merci

  4. #4
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Ca, ca veut dire que tu as un "id" dans tes deux tables.
    Faut donc préciser de l'id de quelle table tu parles, par exemple en remplacant id par logitheque_sous_categories.id
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    J'ai essayé en mettant logitheque_sous_categories.id_cat à la place de logitheque_sous_categories.id, puisque c'est id_cat qui est identique à id.

    Mais le résultat est le même.

    J'ai aussi essayé en mettant logitheque_categories.'.$data['nom'].' à la place de '.$data['nom'].'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $sql = "SELECT * FROM logitheque_sous_categories INNER JOIN logitheque_categories ON logitheque_sous_categories.id_cat=logitheque_categories.id WHERE id='".$_GET['id_ss_cat']."'"; 
     
    // on envoie la requête   
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());   
     
    while($data = mysql_fetch_assoc($req))   
    { 
    	// lien de navigation
    	echo'<p><a href="index.php">Logithèque</a> <b>>></b> <a href="liste_categories.php?cat='. $data['id_cat'].'">logitheque_categories.'.$data['nom'].'</a> <b>>></b> <a href="'. $PHP_SELF .'?id_ss_cat='. $data['id'].'&tri=nom&sens=ASC">'.$data['nom'].'</a> </p>';
    Merci

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    On va gagner du temps : peux tu nous donner la structure de tes deux tables ? On te dira alors exactement quelle est la syntaxe ^^
    Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

    Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    voila :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE `logitheque_categories` (
      `id` int(11) NOT NULL auto_increment,
      `nom` varchar(255) NOT NULL default '',
      PRIMARY KEY  (`id`)
    )

    et

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE `logitheque_sous_categories` (
      `id` int(11) NOT NULL auto_increment,
      `id_cat` int(11) NOT NULL default '0',
      `nom` varchar(50) NOT NULL default '',
      `description` tinyblob NOT NULL,
      PRIMARY KEY  (`id`)
    )

    Merci

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "SELECT * FROM logitheque_sous_categories INNER JOIN logitheque_categorie ON logitheque_sous_categories.id_cat=logitheque_categorie.id WHERE logitheque_sous_categories.id='".$_GET['id_ss_cat']."'";
    Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

    Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    Ok on y est presque

    le problème est que maintenant le lien suivant récupère la même valeur pour .$data['nom'].

    le second récupérait la bonne valeur, maintenant le premier recupere bien le nom de la catégorie, mais le second aussi alors qu'avant il récupérait le nom de la sous catégories.

    Merci

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Tu récupères deux fois les meme noms de variable, un conseil au lieu d'un select * précise quels champs tu récupères, sous des alias :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select logitheque_sous_categories.nom as nom_ss_cat, ...
    A la base c'est une source d'erreurs trop fréquentes de donner des noms de champs comme "id" ou "nom", il vaut mieux les pré ou suffixer par le nom de ta table.
    Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

    Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    Ok je vais essayer ça, la je sens qu'avec ces explications je progresse, reste à savoir si je vais arriver à appliquer.

    J'essaie et je vous tiens au courant.

    comme j'en suis au début je vais suffixer les tables, ça sera surement plus simple pour la suite, plutôt que de mettre des alias partout.

    En tous las cas c'est génial je viens de comprendre 2,3 truc qui pour moi son des pas de géant.

    Merci encore

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 173
    Points : 83
    Points
    83
    Par défaut
    Super ça marche parfaitement, j'ai rajouté un prèfix à toutes mes tables.


    Merci encore et à bientôt

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/06/2011, 12h45
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. Réponses: 0
    Dernier message: 21/01/2009, 13h52
  4. Réponses: 10
    Dernier message: 20/06/2007, 18h02
  5. Réponses: 1
    Dernier message: 15/02/2007, 00h24

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