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 :

Requête avec jointure


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut Requête avec jointure
    bonjour à tous

    j utilkise dreamweaver

    j ai une page qui me renvoie un livre grace à son url à partir d une page ou j ai l ensemble des livres ( classique)

    je veux insérer le nom de l 'auteur

    j ai donc fait la requete suivante
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT shop_livres.id,shop_livres.ida,shop_auteurs.ida,shop_auteurs. nom
    FROM shop_auteurs INNER JOIN shop_livres ON shop_auteurs.ida=shop_livres.ida
    WHERE shop_livres.id =idURL

    et j ai passé en paramêtee pour l idURL : $_get['id']

    j insere mon champ auteur

    ça me renvoie bien le livre mais pas l auteur

    je n y comprends rien car cette requête ma lair bonne

    merci de votre aide

    steph

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ta requete a l'air bonne comme ca.
    Tu as verifié que les ida dans la table des livres existaient dans la table des auteurs ?

    Sinon il y a un espace apres le point la "shop_auteurs. nom", comme ca je ne sais si ca peut jouer ou non.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut,

    Citation Envoyé par Stéph utilisateur d'acces Voir le message
    ça me renvoie bien le livre mais pas l auteur
    cela te renvoie quoi alors? NULL? un mauvais auteur?

    merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut
    bonjour a vous deux

    oui la jointure se fait bien sur ida et il y a des valeurs communes donc ça devrait fonctionner.

    en fait ça ne renvoie rien, alors que la livre a bien un auteur.

    le pire c est que ça a fonctionné un moment.

    je ne sais pas si ça un rapport mais j étais sous dreamweaver MX et je vien s de passer sou dremweaver CS3. mais j ai la meme organisation de site et la même connexion.donc ya pas de raison

    c est incroyable car j ai essayé cette requête 50 fois.

    merci de votre aide

    steph

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut
    c est encore moi

    je viens de faire un test sur une nouvelle page avec 2 tables differentes:

    Donc je crée 2 jeux d’enregistrement

    Premiere requete pour les auteurs

    SELECT *
    FROM shop_auteurs
    WHERE ida = idURL

    Je passe en variale d’url : ida:

    $_get[‘ida’]

    deuxieme requete pour les editeurs

    SELECT shop_auteurs.ida,shop_auteurs.edit,editeur.edit,editeur.nomedit
    FROM editeur INNER JOIN shop_auteurs ON editeur.edit=shop_auteurs.edit
    WHERE shop_auteurs.ida=idURL

    $_get[‘ida’]

    et quand je lance ma page dans firefox et que je passe le bon ida en paramêtre d'url j ai bien l'auteur mais pas l éditeur alors que bien sur il y a concordance de numéro avec le champs commun edit.

    je check sur phpmyadmin et les numéros edit sont ok


    j en perd mon latin

    merci

    steph

  6. #6
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    que te retourne exactement cette requête?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT shop_auteurs.ida,shop_auteurs.edit,editeur.edit,editeur.nomedit
    FROM editeur INNER JOIN shop_auteurs ON editeur.edit=shop_auteurs.edit
    WHERE shop_auteurs.ida=idURL

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut
    ça ne me retourne absolument rien alors que sur phpmyadmin dans l onglet requete quand je la fait (en enlevant bien sur le where) j ai le produit cartesien:

    id edit(shop_auteurs) edit(editeur) nomedit
    1 2 2 Lacoste
    2 3 3 microap

    etc

    donc ça fait bien le lien

    mystere



    steph

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut
    je te mets tout le code ce ma page qui est hyper basique puisqu il n y a que ces 2 jeux d enregistremts si ça peut aider

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    <?php require_once('Connections/bof.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    $colname_auteurs = "-1";
    if (isset($_GET['ida'])) {
      $colname_auteurs = $_GET['ida'];
    }
    mysql_select_db($database_bof, $bof);
    $query_auteurs = sprintf("SELECT * FROM shop_auteurs WHERE ida = %s", GetSQLValueString($colname_auteurs, "int"));
    $auteurs = mysql_query($query_auteurs, $bof) or die(mysql_error());
    $row_auteurs = mysql_fetch_assoc($auteurs);
    $totalRows_auteurs = mysql_num_rows($auteurs);
     
    $idURL_editeur = "1";
    if (isset($_get['ida'])) {
      $idURL_editeur = $_get['ida'];
    }
    mysql_select_db($database_bof, $bof);
    $query_editeur = sprintf("SELECT shop_auteurs.ida,shop_auteurs.edit,editeur.edit,editeur.nomedit FROM editeur INNER JOIN shop_auteurs ON editeur.edit=shop_auteurs.edit WHERE shop_auteurs.ida=%s", GetSQLValueString($idURL_editeur, "int"));
    $editeur = mysql_query($query_editeur, $bof) or die(mysql_error());
    $row_editeur = mysql_fetch_assoc($editeur);
    $totalRows_editeur = mysql_num_rows($editeur);
    ?><!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" />
    <title>Document sans titre</title>
    </head>
     
    <body>
    <p><?php echo $row_auteurs['ida']; ?>
      <?php echo $row_auteurs['nom']; ?></p>
    <p><?php echo $row_editeur['nomedit']; ?></p>
    </body>
    </html>
    <?php
    mysql_free_result($auteurs);
     
    mysql_free_result($editeur);
    ?>
    voila?

  9. #9
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut,

    donc ta jointure fonctionne
    c'est ta clause where le probleme
    que vaut idUrl? fais un echo de $query_editeur
    ida sont de type integer?

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut
    ida sont INT(11) tous les 2

    idURL vaut ida qui est INT(10) c a dire la clé de la table auteur

    comment je fais le query et où?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut
    euh je voulais dire : edit ( champs commun)sont tous les deux INT(11)

  12. #12
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    si tu fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT shop_auteurs.ida,shop_auteurs.edit,editeur.edit,editeur.nomedit
    FROM editeur INNER JOIN shop_auteurs ON editeur.edit=shop_auteurs.edit
    WHERE shop_auteurs.ida=1
    tu obtiens un enregistrement?

    si oui, c'est la variable que tu récupères qui n'est pas bonne

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut
    oui je viens de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT shop_auteurs.ida,shop_auteurs.edit,editeur.edit,editeur.nomedit
    FROM editeur INNER JOIN shop_auteurs ON editeur.edit=shop_auteurs.edit
    WHERE shop_auteurs.ida=4
    4 est l ida d un auteur et ça me renvoie le bon résultat, j ai essayé auusi sur phpmyadmin dans l outil SQL et c est impec

    donc il pige pas la variable (idURL). pourquoi?

  14. #14
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    Citation Envoyé par Stéph utilisateur d'acces Voir le message
    donc il pige pas la variable (idURL). pourquoi?
    regarde ce qu'elle vaut en faisant un echo de celle ci juste avant d'exécuter ta requête

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut
    cybher

    je débute. je le mets ou le echo?

  16. #16
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $idURL_editeur = "1";
    if (isset($_get['ida'])) {
      $idURL_editeur = $_get['ida'];
    }
    -> un echo ici pour tester ce que vaut $idURL_editeur
    mysql_select_db($database_bof, $bof);
    $query_editeur = sprintf("SELECT shop_auteurs.ida,shop_auteurs.edit,editeur.edit,editeur.nomedit FROM editeur INNER JOIN shop_auteurs ON editeur.edit=shop_auteurs.edit WHERE shop_auteurs.ida=%s", GetSQLValueString($idURL_editeur, "int"));
    -> un echo ici pour tester ce que vaut $query_editeur
    c'est plus facile pour debugguer
    on affiche les différentes variables et on vérifie qu'elles ont les valeurs attendues


    Edit : d'ailleurs $idUrl_editeur n'est pas la même chose que $colname_auteurs?

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut
    donc j ai fait ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $idURL_auteurs = "-1";
    if (isset($_GET['ida'])) {
      $colname_auteurs = $_GET['ida'];
    }
    echo
    mysql_select_db($database_bof, $bof);
    $query_auteurs = sprintf("SELECT * FROM shop_auteurs WHERE ida = %s", GetSQLValueString($colname_auteurs, "int"));
    echo
    c est ça?

    et ça me retourne sur firefox:
    1111

    ?
    ?

  18. #18
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    Citation Envoyé par Stéph utilisateur d'acces Voir le message
    c est ça?
    non ce n'est pas ça... ici tu fais un echo de rien du tout...

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut
    bon

    la syntaxe c est <?php echo $idURL_editeur;?>

    je coince un peu .

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 386
    Par défaut
    j ai refait la synthaxe

    ça me donne ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1SELECT shop_auteurs.ida,shop_auteurs.edit,editeur.edit,editeur.nomedit FROM editeur INNER JOIN shop_auteurs ON editeur.edit=shop_auteurs.edit WHERE shop_auteurs.ida=1
    c est plus parlant?

Discussions similaires

  1. Requête avec jointure
    Par Maglight dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/11/2005, 09h57
  2. optimisation d'une requête avec jointure
    Par champijulie dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 07/07/2005, 09h45
  3. Requête avec jointures
    Par Corben dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/11/2004, 12h55
  4. Mise à jour de table impossible après requête avec jointure
    Par sto dans le forum Bases de données
    Réponses: 5
    Dernier message: 17/03/2004, 13h24
  5. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33

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