Il y a actuellement 347 visiteurs
Vendredi 11 Septembre 2026
accueilactualitésdossierscomparer les prixtélécharger gratuitement vos logicielsoffres d'emploiforum informatique
Connexion
Créer un compte

Problème de jointure et affichage de données [Réglé]

Besoin d'aide pour configurer un serveur ? Vous souhaitez obtenir des conseils pour référencer votre site ? Un petit souci pour accéder à votre FTP ? Des soucis de programmation en PHP / ASP / HTML / XHTML / XML / XSLT / CSS / ReactJS / AngularJS / VueJS / CGI / PERL / C / MySQL / PostgreSQL ??? Nous avons peut-être la solution dans ce forum ...

Problème de jointure et affichage de données [Réglé]

Message le 15 Déc 2010 16:49

Bonjour,

j'ai crée 2 tables dans mysql :

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: Tout sélectionner
 $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>';
}


cela me permet d'afficher tous les travaux alors que je voudrais afficher les catégories de travaux ainsi que dedans tous les travaux qu'elle contient ...

Merci de votre aide :wink:
Avatar de l'utilisateur
italiano1360
Visiteur Confirmé
Visiteur Confirmé
 
Messages: 15
Inscription: 02 Mar 2010 08:13
 


Re: Problème de jointure et affichage de données

Message le 15 Déc 2010 17:06

Salut,

Rien ne s'affiche du tout ?

Sinon, tu peux essayer ça :

Code: Tout sélectionner
SELECT *
FROM cattravaux
LEFT JOIN cattravaux ON cattravaux.idCatTravaux = travaux.idTravaux


Si je ne me plante pas, ça devrait marcher ;)
Avatar de l'utilisateur
H3bus
Moderateur
Moderateur
 
Messages: 12195
Inscription: 08 Avr 2008 15:13
Localisation: /home/h3bus
 

Re: Problème de jointure et affichage de données

Message le 15 Déc 2010 17:18

si sa affiche :

travaux1
travaux2
travaux3
...

mais je voudrais afficher :

categorie1

travaux1
travaux2

categorie2

travaux3
travaux4

Je ne vois pas comment faire ...
Avatar de l'utilisateur
italiano1360
Visiteur Confirmé
Visiteur Confirmé
 
Messages: 15
Inscription: 02 Mar 2010 08:13
 

Re: Problème de jointure et affichage de données

Message le 15 Déc 2010 17:32

Hum, il faut que tu fasse l'affichage en php, parce que dans mon éditeur PostgreSQL, ça fonctionne très bien...
Avatar de l'utilisateur
H3bus
Moderateur
Moderateur
 
Messages: 12195
Inscription: 08 Avr 2008 15:13
Localisation: /home/h3bus
 

Re: Problème de jointure et affichage de données

Message le 15 Déc 2010 17:58

j'affiche comme sa

Code: Tout sélectionner
$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>';
}


mais la il y a que les travaux de toutes les sortes qui apparaissent et je voudrait les classer par catégorie en mettant :

categorie1 : travaux,travaux,travaux

categorie2 : travaux,travaux,travaux

categorie3 : travaux,travaux,travaux

Je n'arrive pas a afficher pour chaque catégorie tous les travaux dedans ...
Avatar de l'utilisateur
italiano1360
Visiteur Confirmé
Visiteur Confirmé
 
Messages: 15
Inscription: 02 Mar 2010 08:13
 

Re: Problème de jointure et affichage de données

Message le 15 Déc 2010 18:07

italiano1360 a écrit:j'affiche comme sa
Code: Tout sélectionner
$sql = mysql_query('SELECT * FROM travaux WHERE FK_idCatTravaux IN (SELECT idCatTravaux FROM cattravaux)')or die(mysql_error());


mais la il y a que les travaux de toutes les sortes qui apparaissent et je voudrait les classer par catégorie en mettant :
categorie1 : travaux,travaux,travaux
categorie2 : travaux,travaux,travaux
categorie3 : travaux,travaux,travaux

Je n'arrive pas a afficher pour chaque catégorie tous les travaux dedans ...


Ben c'est normal je pense... à froid tu n'affiche que la table "travaux" avec ton "SELECT * FROM travaux"... normal que tes catégories ne sortent pas.
Peut-être un ...
Code: Tout sélectionner
SELECT travaux.nomtravaux, cattravaux.nomCatTravaux  FROM travaux, cattravaux WHERE blablabla...

...marcherait mieux.
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 9090
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron, perle de Provence... et jamais loin d'une Debian
 

Re: Problème de jointure et affichage de données

Message le 15 Déc 2010 18:34

Oui j'ai ceci maintenant :

Code: Tout sélectionner
$sql = mysql_query('SELECT *  FROM travaux,cattravaux WHERE FK_idCatTravaux=idCatTravaux AND 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>';
}


Je souhaite maintenant savoir comment j'affiche la catégorie ?

si je met
Code: Tout sélectionner
 echo $data["nomCatTravaux"]
dans la boucle sa s'affiche a chaque travaux et je veux l'afficher qu'une fois, je ne vois pas comment faire ... :oops:
Avatar de l'utilisateur
italiano1360
Visiteur Confirmé
Visiteur Confirmé
 
Messages: 15
Inscription: 02 Mar 2010 08:13
 

Re: Problème de jointure et affichage de données

Message le 15 Déc 2010 19:46

Salut,

J'ai ptet pas été au plus simple, mais essaye ce code ça devrait t'afficher une liste avec la structure suivante :

Code: Tout sélectionner
<ul>
   <li> Catégorie 1
      <ul>
         <li> travail 1  </li>
         <li> travail 2  </li>
      </ul>
   </li>
   <li> Catégorie 2
      <ul>
         <li> travail 1  </li>
      </ul>
   </li>
</ul>


Le code :
Code: Tout sélectionner
    $sql = mysql_query('SELECT * FROM travaux,cattravaux WHERE FK_idCatTravaux=idCatTravaux AND FK_idCatTravaux IN (SELECT idCatTravaux FROM cattravaux)') 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>".$data['nomCatTravaux']   // on affiche la 1ère catégorie
          }
          else {
             echo "</ul></li><li>".$data['nomCatTravaux'];   // 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>";


J'enregistre une catégorie courante $cat pour savoir quand on passe à la suivante, et un compteur $cpt pour savoir s'il s'agit de la première ligne.
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1935
Inscription: 07 Sep 2004 20:11
Localisation: Les Mauges
 

Re: Problème de jointure et affichage de données

Message le 15 Déc 2010 20:00

ça ne fonctionne pas car pour chaque travaux sa me met la catégorie au dessus et je souhaite afficher la catégorie une seul fois puis lister les travaux ...
Avatar de l'utilisateur
italiano1360
Visiteur Confirmé
Visiteur Confirmé
 
Messages: 15
Inscription: 02 Mar 2010 08:13
 

Re: Problème de jointure et affichage de données

Message le 15 Déc 2010 20:51

Actuellement j'ai ça :

Code: Tout sélectionner
$sql = mysql_query('SELECT *  FROM travaux,cattravaux WHERE FK_idCatTravaux=idCatTravaux')or die(mysql_error());

while($data = mysql_fetch_assoc($sql)){
echo $data["nomCatTravaux"];
echo '<ul>';
echo '<li>'.$data["nomTravaux"].'</li>';
echo '</ul>';
}


qui me donne :

Façades

* Crépi taloché

Façades

* Crépi gratté

Petits Travaux

* placoplatre

Petits Travaux

* carrelage


Je voudrais n'afficher qu'une seule fois Façade avec Crépi taloché dedans et Crépi gratté
puis Petits Travaux avec dedans placoplatre et carrelage

Je peut pas etre plus clair :D
Avatar de l'utilisateur
italiano1360
Visiteur Confirmé
Visiteur Confirmé
 
Messages: 15
Inscription: 02 Mar 2010 08:13
 

Re: Problème de jointure et affichage de données

Message le 15 Déc 2010 21:19

Su tu rajoutes DISTINCT après ton SELECT, ça change quoi ?
Avatar de l'utilisateur
H3bus
Moderateur
Moderateur
 
Messages: 12195
Inscription: 08 Avr 2008 15:13
Localisation: /home/h3bus
 

Re: Problème de jointure et affichage de données

Message le 15 Déc 2010 21:34

ça ne change absolument rien :-?
Avatar de l'utilisateur
italiano1360
Visiteur Confirmé
Visiteur Confirmé
 
Messages: 15
Inscription: 02 Mar 2010 08:13
 

Re: Problème de jointure et affichage de données

Message le 15 Déc 2010 22:04

Effectivement en déroulant mon code j'ai vu 2/3 erreurs, essaye ce nouveau code :

Code: Tout sélectionner
    $sql = mysql_query('SELECT * FROM travaux,cattravaux WHERE FK_idCatTravaux=idCatTravaux AND FK_idCatTravaux IN (SELECT idCatTravaux FROM cattravaux)') 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>".$data['nomCatTravaux'];   // on affiche la 1ère catégorie
          }
          else {
             echo "</ul></li><li>".$data['nomCatTravaux'];   // 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>";
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1935
Inscription: 07 Sep 2004 20:11
Localisation: Les Mauges
 

Re: Problème de jointure et affichage de données

Message le 15 Déc 2010 22:09

Il manquait un point virgule a la fin de la ligne 16 mais sinon ce code fonctionne parfaitement.
Je vous remercie de votre aide :wink:

Sujet Réglé
Avatar de l'utilisateur
italiano1360
Visiteur Confirmé
Visiteur Confirmé
 
Messages: 15
Inscription: 02 Mar 2010 08:13
 



Sujets similaires

Message [Réglé] le figement dans un j vidéo et en jeux est revenu
Bonjour,Comme convenu en privée voici les résultats de la procédure :Whocrashed : https://pjjoint.malekal.com/files.php?r ... e18fedf218SynativeFileCollectionApp : https://gofile.io/d/iI2uO6jL
Réponses: 15

Message [Réglé] spybot search and destroy
Salut tout le mondeJ'utilise MALWAREBYTES version gratuite, je n'ai pour l'instant aucuns problèmes, je le précise, mais étant curieux, j'ai vu dans votre logithèque ce logiciel Spybot - Search & Destroy 1.6.2 la version semble datée suspecte et inaccessible, il y a un site en anglais/allemand, ...
Réponses: 2

Message [Réglé] imprimante canon TS 205
Bonjour,Avec mon imprimante canon ts205 j’ai un soucis d'impression,Lorsque j''imprime elle imprime 1 ligne par feuilles au lieu de remplir la page, je ne crois pas avoir modifié quelque chose, avez-vous une idée du soucis.Cdt
Réponses: 10

Message [Réglé] perte de wifi pc
re,J'ai un soucis lorsque je renseigne mon ID et mot de passe pour accéder a mon compte PC-infopratique, je clic connexion, la page s'ouvre ou je vois écrit" voir mes messages" je clic dessus et c'est a nouveau la page d'identification qui apparait, que faire svp.
Réponses: 9

Message [Réglé] toujours le même problème de figement dans une vidéo
Bonjour xxgregoryxx38 , Est-ce que tu as déjà changer la pâte thermique de ton processeur ? Le dépoussiérage des ventilateurs as-t-il été fait ? Pour aller plus loin dans ton problème, effectue ceci (cela va permettre de récupérer les dump, et autres fichiers relatif à ton problème) Lance Powershe ...
Réponses: 22


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


.: Nous contacter :: Flux RSS :: Données personnelles :.