Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1112 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [résolu] Requete MySQL : problème d'affichage par catégorie

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] Requete MySQL : problème d'affichage par catégorie

n°1255911
fafane84
Posté le 30-11-2005 à 11:35:12  profilanswer
 

Salut à tous  :hello:  
 
Je me suis jusqu'à maintenant contenté de créer des requêtes simples du genre SELECT avec classemment DESC ou ASC, dés fois même avec un WHERE.
 
Mais je bloque sur une requête et j'ai besoin de votre aide.
 
J'ai une table "user" qui contient les champs "noms", "prenom", "pseudo", "categorie", etc...  
 
Ce que je voudrais réaliser c'est une requete affichant la categorie en en-tête et le nom, le prenom et le pseudo se rapportant à cette categorie.
 
Comme par exemple :
 
Administrateur
   fafane84
Moderateurs
   bidule
   machin
   truc
Membres
   jules
   henri
   seb
 
J'ai donc essayé d'utiliser GROUP BY qui effectivement regroupe bine par catégorie, mais n'affiche qu'une seule ligne par categorie.
 
Voici le code où je suis resté bloqué :

Code :
  1. // on se connecte à MySQL et on séléctionne la base
  2. connecter($hote, $utilisateur, $pass, $database, $db);
  3. // on crée la requête SQL
  4. $sql = 'SELECT * FROM '.$prefix.'user GROUP BY categorie';
  5. // on envoie la requête
  6. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  7. // on fait une boucle qui va faire un tour pour chaque enregistrement
  8. while($data = mysql_fetch_assoc($req))
  9.     {
  10. // on affiche les informations de l'enregistrement en cours
  11.     echo "<h2>".$data['categorie']."</h2>\n<ul>\n<li>"
  12.     .$data['prenom']
  13.     ." "
  14.     .$data['nom']
  15.     ." "
  16.     .$data['pseudo']
  17.     ."</li>\n</ul>\n";
  18.     }
  19. // on ferme la connexion
  20. mysql_close();


 
Merci d'avance pour vos réponses et vos bons conseils.
 
[:fafane84]


Message édité par fafane84 le 01-12-2005 à 14:18:44

---------------
Mon Topic de Vente Hardware
mood
Publicité
Posté le 30-11-2005 à 11:35:12  profilanswer
 

n°1255916
anapajari
s/travail/glanding on hfr/gs;
Posté le 30-11-2005 à 11:51:04  profilanswer
 

Vu la structure de ta table tu vas pas pouvoir faire ça dans ta requete, c'est ton script php qui doit le faire.
 
Remplace ton while par:

Code :
  1. $prevCat = '';
  2. while($data = mysql_fetch_assoc($req)){
  3.    if ( $data['categorie'] != $prevCat){
  4.      // on affiche les informations de l'enregistrement en cours
  5.      print "<h2>",$data['categorie'],"</h2>";
  6.   }
  7.   print "\n<ul>\n<li>", $data['prenom'], " ", $data['nom'], " ", $data['pseudo'], "</li>\n</ul>\n";
  8.   $prevCat = $data['categorie'];
  9. }


Message édité par anapajari le 30-11-2005 à 11:51:59
n°1255937
fafane84
Posté le 30-11-2005 à 12:32:16  profilanswer
 

Merci de ta réponse  anapajari [:b-rabbit]  
 
Je viens d'essayer ton code, il m'a fallut remplacer les , par des . car sinon j'avais une parse error.
 
J'ai aussi retiré le GROUP BY dans la requete.
 
Voici dons le nouveau code :

Code :
  1. $prevCat = '';
  2. while($data = mysql_fetch_assoc($req)){
  3.    if ( $data['categorie'] != $prevCat){
  4.      // on affiche les informations de l'enregistrement en cours
  5.       print "<h2>".$data['categorie']."</h2>";
  6.    }
  7.    print "\n<ul>\n<li>". $data['prenom']. " ". $data['nom']. " ". $data['pseudo']. "</li>\n</ul>\n";
  8.    $prevCat = $data['categorie'];
  9. }


Mais cela ne marchais pas comme prévu, alors j'ai rajouté  ORDER BY categorie ASC dans ma requete et tout semble s'afficher comme souhaité.
 
 [:athome]


---------------
Mon Topic de Vente Hardware
n°1255966
anapajari
s/travail/glanding on hfr/gs;
Posté le 30-11-2005 à 13:36:50  profilanswer
 

fafane84 a écrit :

Merci de ta réponse  anapajari [:b-rabbit]  
Je viens d'essayer ton code, il m'a fallut remplacer les , par des . car sinon j'avais une parse error.


 
C'est parce que j'avais bouletté et mis 'print' au lieu de 'echo'.
Pour l'anecdote, echo avec virgule est censé être un peu plus rapide que print avec concatenation.

n°1256120
fafane84
Posté le 30-11-2005 à 16:22:16  profilanswer
 

Arggggg !!! Quel idiot je suis !!!  :fou:  
 
Je pensais pouvoir régler ce problème facilement, une fois que l'affichage ce ferait comme il faut, mais je n'y arrive pas.
 
En fait le champs "categorie" de la table "user" est un champs numérique qui renvoie au champs "cat_id" de la table "categories".
 
Et donc par conséquent grâce au code de anapajari tout s'affiche comme je le voulais mais au lieu du libellé de la catégorie il y a un joli numéro  :(  
 
Comment relie-t-on des tables dans une requête MySQL ?
 
Comment puis-je faire pour faire correspondre l'affichage du numéro de la catégorie de la table "user" avec le libellé de la catégorie de la table "categories" ?
 
Merci d'avance pour votre aide.


---------------
Mon Topic de Vente Hardware
n°1256647
anapajari
s/travail/glanding on hfr/gs;
Posté le 01-12-2005 à 10:29:36  profilanswer
 

Code :
  1. sql = 'SELECT * FROM user inner join categorie on ( user.categorie= categorie.cat_id)';
  2. // OU  
  3. sql = 'SELECT * FROM user, categorie  where user.categorie= categorie.cat_id';


Attention les deux requêtes ci-dessus ne te remonteront pas le user si il n'existe pas de categorie correspondate dans la table catégorie.
Si cela s'averait necessaire, renseigne toi sur les "jointures externes" ( outer join)

n°1256818
fafane84
Posté le 01-12-2005 à 14:17:59  profilanswer
 

Merci beaucoup  [:athome]


---------------
Mon Topic de Vente Hardware

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [résolu] Requete MySQL : problème d'affichage par catégorie

 

Sujets relatifs
Problème idiot avec "_blank"[résolu]probleme operateur matrice [i][j]
Problème de submit sous IE[php] Programmation objet, probleme d'inclusion
[resolu]repetition dun eregi_replace()j'ai un probleme avec un exo en matlab
Exécution à distance, problème de répertoireProblème de bordure en HTML
RESOLU inscription commentaire selon critère 
Plus de sujets relatifs à : [résolu] Requete MySQL : problème d'affichage par catégorie


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR