Classer un résultat par catégorie !

Répondre
doudi
doudi
Déconnecté
Salut,

J'aimerais afficher une liste de joueurs mais par poste ! Pour l'instant j'arrive à afficher la liste des joueurs comme ça :

Gardien => Bosmel Thomas
Gardien => Perquis Damien
Gardien => Thébaux Alexis
Défenseur => Barzola Pablo
Défenseur => Heurtaux Thomas
Défenseur => Inez Romain
Défenseur => Leca Grégory

Mais moi j'aimerais afficher le résultat en classant par type de poste (gardien, défenseur, milieu, attaquant) de cette façon :

Gardiens
Bosmel Thomas
Perquis Damien
Thébaux Alexis

Défenseurs
Barzola Pablo
Heurtaux Thomas
Inez Romain
Leca Grégory

J'ai un tableau php des postes :

$poste = array(1 =>'Gardiens','Défenseurs','Milieux','Attaquants');

Ma requête sql :

  1.  
  2. $req = mysql_query("SELECT effectif.idjoueur,effectif.num,effectif.nom,effectif.prenom,effectif.arrivee,effectif.poste,saisons.idsaison,saisons.nom AS saison
  3. FROM effectif,saisons,saisons_joueurs
  4. WHERE effectif.idjoueur = saisons_joueurs.idjoueur AND saisons_joueurs.idsaison = saisons.idsaison AND saisons.idsaison = '".(int)$_GET['idsaison']."' ORDER BY effectif.poste,effectif.nom");
  5.  
  6. $last_post='';
  7.  
  8. while($row = mysql_fetch_array($req))
  9. {
  10.       if($last_post!=$row['poste']){
  11.          $categorie = $poste{$row['poste']}.'<br />'; // ajout ligne nom catégorie
  12.       }
  13.       else {
  14.          $categorie = '<br />'; // sinon rien
  15.       }      
  16.       echo $categorie;
  17.       echo ' => '.$row['nom'].' '.$row['prenom'].'<br />';
  18.       
  19. } 
doudi
doudi
Déconnecté
dans la table "effectif" il y a le champ "poste" du joueur :

poste 1 = gardien
poste 2 = défenseur
poste 3 = milieu
poste 4 = attaquant

A chaque passage dans la boucle il faut vérifier si le poste a changé par rapport à la ligne d'avant et si c'est le cas il faut créer une ligne du nom du poste sinon rien. Facile à dire mais dans la pratique... :-x
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Tu étais bien parti avec ton code.

Il faut juste modifier la valeur de $last_post en lui donnant la valeur de $row['poste'] lorsque que ces deux valeurs sont différentes.
doudi
doudi
Déconnecté
oua j'ai réussi merci la globule smiley

  1. $last_post='';
  2.  
  3. while($row = mysql_fetch_array($req))
  4. {
  5.       if($row['poste']!=$last_post){
  6.          $cat = '<font color="red">'.$poste{$row['poste']}.'</font><br />'; // ajout ligne nom catégorie
  7.          $last_post = $row['poste'];
  8.       }
  9.       else {
  10.          $cat = ''; // sinon rien
  11.       }      
  12.       echo $cat;
  13.       echo ' => '.$row['nom'].$row['prenom'].'<br />'; 


c'était tout bête ! j'ai honte d'avoir demandé pour ça smiley
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto - Kit graphique