IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Aide pour group by


Sujet :

PHP & Base de données

  1. #1
    Membre émérite Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Par défaut Aide pour group by
    Salut ! J'ai besoin de vous !

    Voila j'ai une table entraineurs_2006

    id | nom | prenom | equipe | telephone | email

    or il peut y avoir 2 entraineurs pour une meme equipe et donc dans ce cas j'aimerais faire un colspan="2" vous voyez ? Je pense qu'il faut se servir du GROUP BY mais bon j'arrive pas a exploiter ce qui sort de la requete

    Merci

  2. #2
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Bonjour,

    le group by SQL te permet de grouper des données suivant une ou des colones clés par exmple pour compter tous les entraineurs de nantes.

    Par contre si tu veux afficher tous les entraineurs d'un club, il faut bien que tu les extrait de la base.

    Ensuite pour les afficher dans la page web, et c'est cela la partie interressante, il te fauit parcourir l'enregistrement +1 pour savoir si l'entraineur est de la même équipe et ainsi fair un colspan.

    En gros , il faudrait que l'on sache ce que tu vas mettre dans ta page.

  3. #3
    Membre émérite Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Par défaut
    La table contient les entraineurs du club
    Or certaines lignes (entraineurs en fait) entrainent la meme equipe donc j'aimerai savoir comment faire pour grouper et faire un tableau presentable

    PS : en evitant les 20 000 if else

  4. #4
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Cela dépend beaucoup de la facon dont tu présentes les données dans ta page ( fiche club, liste des entraineurs/club , etc...)

  5. #5
    Membre émérite Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Par défaut
    fetch_array basique de la table !

  6. #6
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Ok, donc ton problème ne concerne que la prtie affichage car ta requete te donne bien les données que tu veux mais avec 2 entraineurs pour certain club.

    Ta requete doit trier par club, comme ca les entraineurs d'un meme club se suivent dans le jeu de résultat.

    Ensuite, tout le reste ce gere au moment de l'affichage, il faut que tu détermine si l'enregistrement suivant concerne le meme club.

    Généralement, je parcours le jeu de résultat et le stocke dans un tableau ce qui permet ensuite de regarder la ligne suivante et ainsi de savoir s'il faut faire un rowspan

  7. #7
    Membre émérite Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Par défaut
    Deja je fais le site de mon equipe de hand donc les entraineurs peurvent entrainer plusieurs equipes (niveux en fait : seniors, - de 18ans, ...)
    Pourre tu me donner une requete avec un GROUP BY equipe en fait ?

  8. #8
    Membre émérite Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Par défaut
    Un truc du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM entraineurs_2006 GROUP BY equipe
    mais je sais pas coment exploiter ca apres

  9. #9
    Membre émérite
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Par défaut
    Oublie le GROUP BY, il sert juste à pouvoir utiliser des fonctions d'agrégat (SUM, AVG, MAX, ...) à partir de groupes des données.

    Comme l'a dit FCYPBA, le plus simple est de faire un ORDER BY, par exemple ORDER BY equipe ASC. Si tu as deux entraîneurs, tu auras deux lignes qui se suivront dans les résultats.

    Si tu veux ensuite faire un affichage spécial quand il y a plusieurs entraineurs, tu dois le gérer dans ton code PHP. Une solution serait de garder après avoir traité chaque ligne, l'identifiant de la dernière équipe concernée. Et pour la ligne suivante, si l'équipe n'a pas changé alors tu fais ton affichage spécial.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $derniereEquipe = 0;
     
    $res = mysql_query("SELECT * FROM entraineurs ORDER BY equipe, nom");
    while ($row = mysql_fetch_array($res))
    {
      if ($row['equipe'] != $derniereEquipe) // Traitement d'une nouvelle équipe
      {
          ........ ;
          $dernierEquipe = $row['equipe'];
       }
     
      else  // On est toujours en train de traiter la même équipe (donc : plusieurs entraineurs)
       ....;
    }

  10. #10
    Membre émérite Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Par défaut
    D'accord merci a vos deux SQL ne peut pas regler ce probleme et renvoyer ce que je veux, il faut donc creer un petit script maison
    A bientot

  11. #11
    Membre émérite Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Par défaut
    Ah ouai mais non probleme : si une equipe a deux entraineurs alors je fais un colspan ... La je vois pas comment faire ...

  12. #12
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    La solution que j'ai donné plus haut doit pouvoir t'aider.

    Tu parcours le jeu de résultat en stockant les infos dans un tableau ou mieux une petite classe style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while($res=mysql_fetch_array()){
    $Infos[]=$res;
    }
    là $infos contient toutes les lignes de ta base ordonnées suivant le order

    ensuite au moment de l'affichage tu gères le fait d'avoir deux entraineurs de cette facon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if $idequipe = $Infos[$i]['idequipe'] 
    alors on a un deuxieme entraineur et il faut faire ce que tu as a faire
    Si tu veux plus de détails, il va falloir nous produire un peu de code pour voir ce qui te gènes car là on code un peu dans le vide

    @+

  13. #13
    Membre émérite Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Par défaut
    Si il y a 2 equipes pour un entraineur alors je fais un colspan="2". Peux tu me proposer un code ?

  14. #14
    Membre émérite Avatar de fallais
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2006
    Messages : 858
    Par défaut
    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    echo'<table class="table" align="center">';
    echo'<tr>';
    echo'<td width="55%">Equipe</td>';
    echo'<td width="45%">Entraineur</td>';
    echo'</tr>';
     
    $derniereEquipe = 0;
    while($while1 = mysql_fetch_array($query1)){
    $equipe = $while1['equipe'];
    $equipe = $titre[$equipe];
    echo'<tr>';
               if ($while1['equipe'] == $derniereEquipe){
               echo'<td rowspan="2">'.$equipe.'</td>';
               }
               else{
               echo'<td>'.$equipe.'</td>';
               }
               $derniereEquipe = $while1['equipe'];
    echo'<td><a href="index.php?partie=club&type=entraineurs&id='.$while1['id'].'">'.$while1['nom'].' '.$while1['prenom'].'</a></td>';
    echo'</tr>';
    }
    echo'</table>';
    et ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query1 = mysql_query("SELECT * FROM entraineurs_2006 ORDER BY equipe DESC");
    Mais voici ce qui m'arrive : http://hbcmuret.free.fr/index.php?pa...pe=entraineurs

    Aidez moi !!

Discussions similaires

  1. Aide pour comprendre un "group by" dans un exemple
    Par Johann7751 dans le forum Linq
    Réponses: 3
    Dernier message: 19/07/2011, 17h07
  2. LDAP : aide pour création de users, groups etc
    Par longbeach dans le forum Sécurité
    Réponses: 0
    Dernier message: 23/05/2009, 08h34
  3. aide pour utilisation group by
    Par rlnd23 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/10/2006, 00h54
  4. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05
  5. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo