Il y a actuellement 249 visiteurs
Lundi 29 Avril 2024
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: 9041
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.
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é] isolation impossible du noyau sur mon pc windows 10
Bonsoir heraclesmerci tout d'abord de me répondre aussi vite, j'ai donc effectué les deux lignes de commande comme tu m'as indiqué, voici le fichier texte : https://www.cjoint.com/c/NDluFy2UUrJVoici la capture écran générale de mon gestionnaire de périphériques : si cela peut un petit peu t'aider . ...
Réponses: 22

Message probleme avec mon compte outlook
Salut tout le mondevoilà, je m'explique en espérant que je sois compréhensible : de façon aléatoire et pas systématique, mais c'est récurrent, il ne se passe pas 15 jours, je recoit arriver sur mon bureau après démarrage de mon pc ou parfois même pc allumer et fonctionnel pendant la journée un m ...
Réponses: 12

Message Problème de signatue avec gmail.
Bonsoir, voilà je voudrai mettre une bannière comme signature pour mes emails envoyés avec gmail. Je ne sais pas trop comment faire ? Quelqu'un pourrait il m aider? Merci.
Réponses: 7

Message [Réglé] bloc note sous windows 11
Bonjour, avec Windows 11 le bloc note a changé de comportement. J'aimerai savoir s'il est possible de revenir à l'ancienne méthode, à savoir que lorsqu?on l'ouvre il n'affiche pas systématiquement tous les notes qui ont été crées avant et à la fermeture lors d'une modif qu'il propose d?enregistrer. ...
Réponses: 2

Message [Réglé] casque audio
Bonjour Je posséde un casque audio JBL en bluetuoth sur mon pc qui fonctionnait très bien . Je viens de le recharger et mon PC ne le trouve plus ?Cela ne doit pas être grave mais je ne trouve pas la solution . Merci pour votre aide .
Réponses: 8

Message [Réglé] probleme USB
Bonjour a tous,Je ne sais ou poster mon problème d'USB je le post donc ici . Mon souci vient du fait que lorsque je branche mon intercom SENA SRL 3 sur les USB mon PC sous W10 j'ai l'impression que celui-ci se connecte deux fois car j'entends bien le son de la connexion se faire deux fois et j'ent ...
Réponses: 5


Qui est en ligne

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


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