Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2010, 15h51   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 19
Points : 3
Points : 3
Par défaut Problème de jointure et affichage de données

Bonjour,

j'ai crée 2 tables dans mysql :
Citation:
travaux(idTravaux,nomTravaux,#FK_idCatTravaux)
cattravaux(idCatTravaux,nomCatTravaux)
Je voudrais donc afficher dans une page PHP les catégories de travaux ainsi que tous les travaux appartenant a cette catégorie.

Pour ce faire j'ai testé plusieurs requete et je suis bloqué ...

dernier test :
Code sql :
SELECT * FROM travaux WHERE FK_idCatTravaux = (SELECT idCatTravaux FROM cattravaux)

cette requete m'affiche l'erreur suivante :
Citation:
Subquery returns more than 1 row
Merci de bien vouloir m'éclairer sur le sujet
italiano1360 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 15h53   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
avec IN
Code sql :
SELECT * FROM travaux WHERE FK_idCatTravaux IN (SELECT idCatTravaux FROM cattravaux)
ou une jointure si tu recupères tout les idCatTravaux
Code sql :
SELECT * FROM travaux JOIN  cattravaux ON FK_idCatTravaux = idCatTravaux
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 16h21   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 19
Points : 3
Points : 3
Merci

Et comment je doit faire pour afficher chaque catégorie avec dedans chaque travaux ?

j'arrive à afficher chaque travaux mais pas sa catégorie...

Code :
1
2
3
4
5
6
7
$sql = mysql_query('SELECT * FROM travaux WHERE FK_idCatTravaux IN (SELECT idCatTravaux FROM cattravaux)')or die(mysql_error());
 
while($data = mysql_fetch_assoc($sql)){
echo '<ul>';
echo '<li>'.$data["nomTravaux"].'</li>';
echo '</ul>';
}
italiano1360 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 16h32   #4
Invité de passage
 
Inscription : décembre 2010
Messages : 19
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 19
Points : 3
Points : 3
j'ai trouvé la solution :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$sql = mysql_query('SELECT * FROM travaux,cattravaux WHERE FK_idCatTravaux=idCatTravaux') or die(mysql_error());
    $cat = ""; // catégorie courante
    $cpt = 0; // compteur de catégories
    echo "<ul>";
 
    while($data = mysql_fetch_assoc($sql)){
       if($cat <> $data['nomCatTravaux']) { // on change de catégorie ou il s'agit de la première catég.
          if($cpt == 0) { // il s'agit de la première catégorie
             echo "<li><h4>".$data['nomCatTravaux']." :</h4>";   // on affiche la 1ère catégorie
          }
          else {
             echo "</ul></li><li><h4>".$data['nomCatTravaux']." :</h4>";   // on ferme la liste de la catégorie précédente et on affiche la nouvelle catégorie
          }
 
          echo "<ul><li>".$data['nomTravaux']."</li>"; // on affiche le premier travail de la catégorie courante
 
          $cat = $data['nomCatTravaux']; // on met à jour la catégorie courante
          $cpt++; // on met à jour le compteur
       } /// fin if
       else { // on est toujours dans la même catégorie
          echo "<li>".$data['nomTravaux']."</li>"; //on affiche le nom du travail
       } // fin else
    } // fin while
     echo "</ul>";
italiano1360 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h43.


 
 
 
 
Partenaires

Hébergement Web