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 :

Requete sur 2 tables avec champs commun


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Requete sur 2 tables avec champs commun
    Salut, je fais un site sur des groupes musicaux avec leurs fiches respective
    Mais j'ai aussi une autre partie de mon site où il y a des critiques d'albums


    Bon voila j'ai 2 tables une "Groupes" et une autre "CriticCD"

    Lorsque je questionne ma table Groupes, la fiche de celui ci se presente normalement
    ET si celui-çi (le groupe en question) possède une critique sur un de ces disques, je voudrais faire un lien vers ces pages (la critique de son disque) . je sais je me repete mais c'est pour aider à la compréhension

    (à savoir que ma page critique disque s'affiche bien avec un listing des disques repertoriées)


    LE BUT EST DONC d'avoir la possibilité en étant sur ma fiche GROUPE
    de cliquer
    sur un lien pour trouver sur une autre page la critique en question de son album bien
    Mais comme chaques groupes repertoriés dans la base ne possede pas de critique disque IL FAUT QUE CE LIEN S'affiche suivant une condition...

    J'ai plusieurs probs

    1. il me faut donc une boucle de style While... ou IF ...(puisque tous n'ont pas d'albums) et çà j'ai un peu du mal avec...
    2. il me faut utiliser (enfin , je pense et c'est pour ca que je fais appel a vous pro du dev')
      une requete de type INNER JOINT puisque les 2 tables sont liées avec un champ commun et devant posseder la meme valeur

      Ce champ est id_groupe qui portera différente valeur numerique que je lui attribuerai (tout en sachant que je mettrai la meme valeur quand un groupe possede une critique vers son disque
      Groupes.id_groupe = CriticCD.id_groupe

      et cela ne fonctionne pas
      -----------------------
      VOICI MES 2 TABLES
    VOICI la structure de mes 2 tables

    TABLE CriticCD
    ChampTypeNullDéfautid int(11)Non critic_nom varchar(255)Non critic_titre varchar(255)Non critic_enonce textOui NULL critic_photo varchar(255)Oui NULL critic_promo char(3)Non id_groupe varchar(255)Non

    TABLE Groupes
    ChampTypeNullDéfautid int(11)Non nom varchar(255)Non localisation varchar(255)Non departement varchar(255)Non photo varchar(255)Oui NULL style varchar(255)Non bio textOui NULL email varchar(255)Non site varchar(255)Non promo char(3)Non disco textOui NULL lienmp3 varchar(255)Oui NULL id_groupe varchar(255)Non


    Y a t'il une personne calée dans le domaine ?
    pour voir peut etre rapidement OU mon code fait defaut ?

    ------------ QUE VOICI

    <?php

    $dbhost = "*******";
    $dblogin = "********";
    $dbpassword = "********";
    $dbname = "*******";

    $id = $_GET["id"];
    $id_groupe = $_GET["id_groupe"];

    mysql_connect($dbhost,$dblogin,$dbpassword);
    mysql_selectdb($dbname);
    $result=mysql_query("SELECT * FROM Groupes INNER JOIN CriticCD USING(id_groupe) WHERE id='$id'");

    if ($row=mysql_fetch_array($result)) {


    while($row['Groupes.id_groupe'] == $row['CriticCD.id_groupe'])
    {
    echo '<font class=texte>titre :</font>&nbsp;'.$row['critic_titre'].'" <br>'; break;

    }


    } else {
    echo "Désolé, mais cette critique disque n'existe pas<br>";

    } mysql_close();
    ?>


    En esperant que vous ayez compris la chose...
    Merci beaucoup pour votre aide
    Bonne journée

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    et bienvenue !

    Qu'est ce qui te fais dire que ça ne marche pas ?
    en général quand on fait des requêtes il est bon de savoir si mysql a détecté une erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "SELECT * FROM Groupes INNER JOIN CriticCD USING(id_groupe) WHERE id='$id'";
    $result = mysql_query($sql) or die(mysql_error() .'<br>'. $sql);
    Ensuite pour savoir si c'est un problème de requete ou de code php je te conseille d'afficher celle-ci à l'écran :
    Ainsi tu peux la coller directement dans phpMyAdmin ou dans mysql pour savoir si elle retourne les résultats escomptés.

    Enfin, ton while ci dessous est bizarre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while($row['Groupes.id_groupe'] == $row['CriticCD.id_groupe'])
    {
    echo '<font class=texte>titre :</font>&nbsp;'.$row['critic_titre'].'" <br>'; 
    break;
     
    }
    à quoi sert-il ?

  3. #3
    Membre actif Avatar de funckfot
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 221
    Points : 211
    Points
    211
    Par défaut
    (1) je pense que la structure de ta table n'est pas bonne(elle n'est pas normaliser je crois. si je me trompe dites le moi). il vaudrai mieux que tu mettes la clef primaire des ton groupes dans les critiques et non pas 2 champs identiques mais ta sollution n'est pas fausse (2) si j'ai bien comprid sur ta page tu veut seullement savoir ceux qui ont des critique ou pas?ps : j'ai un petit probleme de format dsl
    Rod

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut requete sur 2 tables liées
    Merci pour vos reponses
    mais je suis encore debutant en php


    j'ai bien comprid sur ta page tu veut seullement savoir ceux qui ont des critique ou pas?
    Non je veux afficher mes fiches groupes normalement
    MAIS quand un des groupes possede une critique sur un de ces disques
    Je veux afficher un lien dans cette conditions
    qui emmenera sur sa fiche de son disque

    pour les autres groupes le lien ne s'afficherai pas

    je pense que la structure de ta table n'est pas bonne(elle n'est pas normaliser je crois. si je me trompe dites le moi). il vaudrai mieux que tu mettes la clef primaire des ton groupes dans les critiques et non pas 2 champs identiques mais ta sollution n'est pas fausse
    Question surement tres bête : la clef primaire (si c'est la solution) c'est quoi ?

    --------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     <div style="text-align: left;">while($row['Groupes.id_groupe'] == $row['CriticCD.id_groupe'])
    {
    echo '<font class=texte>titre :</font>&nbsp;'.$row['critic_titre'].'" <br>'; 
    break;
     
    }</div>

    en fait j'essaye d'afficher ici la condition pour l'affichage d'un futur lien vers le titre du disque
    le <a href...> n'est pas present

    j'essaye ici juste d'afficher le titre, pour voir si çà marche...

    J'ai 2 tables avec un champ commun (id_groupe) portant un numero
    exemple : "ACDC" à un id_groupe de 001 et "Higway to Hell" a aussi un id_groupe de 001
    donc comme les 2 id_groupes sont identiques mon lien devrait s'afficher

Discussions similaires

  1. Requete sur plusieurs table avec les memes champs
    Par broule dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/02/2010, 20h57
  2. Erreur sur CREATE TABLE avec champ boolean
    Par codial dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/03/2007, 19h30
  3. Réponses: 4
    Dernier message: 23/10/2006, 10h09
  4. aide pour requete sur 2 tables avec clé étranere
    Par richton95 dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/12/2005, 14h32
  5. besoin d'aide -> requete sur 2 tables avec count()
    Par parksto dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/10/2005, 20h06

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