Il y a actuellement 71 visiteurs
Mardi 03 Août 2021
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 ;)
En cas de problème constaté sur un sujet, contactez un modérateur par MP. N'intervenez pas vous-même. Merci bien.
Aucune aide ni support ne sera fourni par MP.
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...
En cas de problème constaté sur un sujet, contactez un modérateur par MP. N'intervenez pas vous-même. Merci bien.
Aucune aide ni support ne sera fourni par MP.
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.
Libérez-vous : http://www.debian.org
Nobody knows what sysadmin does... until he stops doing it
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 8978
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron... 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.
“It has to start somewhere, it has to start sometime, what better place than here, what better time than now?”
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1932
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 ?
En cas de problème constaté sur un sujet, contactez un modérateur par MP. N'intervenez pas vous-même. Merci bien.
Aucune aide ni support ne sera fourni par MP.
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>";
“It has to start somewhere, it has to start sometime, what better place than here, what better time than now?”
Avatar de l'utilisateur
gael49
Expert(e)
Expert(e)
 
Messages: 1932
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 Problème d'impression avec HP 6525
Bonjour,Je ne pense pas que ça vienne des cartouches , moi j'en ai qui viennent d'un pays lointain et que je peux recharger moi-même.Soucis c'est que l'encre ça tache bien les doigts Chez ma fille c'est qu'elle avait eu auparavant déjà une imprimante HP et qu'au changement de matériel elle n'avai ...
Réponses: 5

Message [Réglé] Latence frappe clavier Messenger Facebook sur Edge
Bonjour,Lorsque je participe à une discussion sur Messenger ou quand je veux écrire sur mon profil Facebook, il y a une latence d'une demi-seconde entre la frappe et l'apparition de la lettre à l'écran.Ce problème ne survient que sur Facebook et Messenger, et seulement sur Edge. Pas de soucis avec C ...
Réponses: 22

Message probleme ecran en veile et ordi qui tourne
jai un probleme avec mon ordi de bureau tout tourne normalement lecran marche bien et quelque jours apres en le ralument lecran reste en veil et lordi tourne bien en le demontent jai toucher un peut la carte graphique jai ralumer lordie et la sa a marcher mais quelques jours apres rebelote ecrant en ...
Réponses: 5

Message probleme age of empires 3 sur steam
Salut tout le monde depuis quelque temps lorsque je joue sur Steam avec age of empire 3 définitive édition pendant le jeu aléatoirement le jeu plante comme si ma carte graphique était soit défaillante, soit le processeur car le jeu est souvent assez lent voici le type de message que j'ai avant que t ...
Réponses: 4

Message [Réglé] marre des fenêtres d'acceptation des cookies ?
bonjour je trouvais insupportable d'avoir a accepter des cookies sur tous les sites et surtout sur ceux ou je ne suis que de passage .après une recherche, j'ai trouvé pour supprimer les "cookies warnings" https://www.presse-citron.net/marre-coo ... barrasser/la solution est peut être (a vo ...
Réponses: 9

Message [Réglé] Installer Office 2007
Bonjour,Je possède la suite Office 2007 avec sa clef d'activation sur CD que j'aimerais installer sur PC portable Windows 10, sans lecteur. Comment puis-je procéder, sachant que je ne suis pas une foudre de guerre en matière informatique?Merci à tous.
Réponses: 9


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


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