[PHP] fonction count() et Group By

Résolu
Bonjour à tous,

Je cherche avec compter le nombre de territoire possédant chaques équipe :
Le porbleme est que ca ne m'affiche qu'une équipe sur les 10 existante :( :

$mafia1 = "SELECT *"
. "\n FROM #__wub_equipe"
;	
	
$database->setQuery( $mafia1 );

if ( $database->loadResult() ) 
{
	$mafia1 = $database->loadObjectList();
	}
				$n = 0;
      foreach($mafia1 as $list )
        {
    		echo $list->id; 
$mafia = "SELECT *, COUNT(*) as compte"
. "\n FROM #__wub_carte_victoire"
. "\n WHERE equipe = '".$list->id."' GROUP BY equipe"
;

}


if ( $database->loadResult() ) 
{
	$liste = $database->loadObjectList();
	} ?>
	<table class="tablesorter" border="0" cellpadding="0" cellspacing="1">
  <thead>
    <tr>
      <th></th>
      <th>Mafia</th>
      <th>Nbr territoire</th>
    </tr>
  </thead>
  <tbody>
    <?php
		$n = 0;
        foreach($liste as $list )
        {
    		$n++;
        ?>
          <tr>
            <td><?php echo $n; ?></td>
            
            <td nowrap="nowrap"><span class="blocequipe" style="background-color:<?php echo $equipe->CouleurEquipe($list->equipe); ?>;">&nbsp;</span> <?php echo $equipe->NomEquipe($list->equipe); ?></td>
            <td><?php echo number_format($list->compte); ?> pts</td>
          </tr>
        <?php
        }
		?>
  </tbody>
  
</table>


Merci pour l'aide que vous m'apporterez
Configuration: Windows XP
Firefox 3.0.13

9 réponses

  1. C'est bon j'ai réglé mon pb en faisant autrement : J'ai enlevé la verification de l'id de l'equipe et la 1ére requête. Utiliser un DISTINCT et voilà

    Encore merci pour ton aide :)

    Je peux pas mettre en résolu, j'ai posté en tant que invité

    <table class="tablesorter" border="0" cellpadding="0" cellspacing="1">
      <thead>
        <tr>
          <th></th>
          <th>Nom des equipes</th>
          <th>Nombre de territoire</th>
        </tr>
      </thead>
    <?php 
    
    $mafia = "SELECT DISTINCT (equipe) as team, equipe, COUNT(*) as compte "
    . "\n FROM #__wub_carte_victoire"
    . "\n GROUP BY team ORDER by compte DESC"
    ;
    $database->setQuery( $mafia );
    
    
    if ( $database->loadResult() ) 
    {
    	$clan = $database->loadObjectList();
    	} ?>
    
      <tbody>
        <?php
    		$n = 0;
    
            foreach($clan as $como )
            {
        		$n++;
            ?>
              <tr>
                <td><?php echo $n; ?></td>
                
                <td nowrap="nowrap"><span class="blocequipe" style="background-color:<?php echo $equipe->CouleurEquipe($como->equipe); ?>;">&nbsp;</span> <?php echo $equipe->NomEquipe($como->equipe); ?></td>
                <td><?php echo number_format($como->compte); ?> pts</td>
              </tr>
            <?php
            } 
    		?>
      </tbody>
      
    </table>
    1. Contributeur
      Re,

      Pourrais tu me donner la structure exacte de ta table, ainsi qu'une liste de quelques enregistrement, de manière à créer la table en local chez moi pour tester des requetes SQL, ce sera plus pratique.
      1. Bonjour à tous,

        J'ai donc mis un HAVIS count(*) >= 1 aprés le ORDY by
        mais il me sort pas toutes les valeurs comme il faut

        Au lieu de me mettre :

        A
        B
        C
        D
        E

        Il va me mettre

        A
        A
        A
        C
        C
        E

        :-/ si vous voiyez ce que je veux dire :(

        merci de votre aide
        1. Oui je peux Voici le tableau :

           	Mafia  	Nbr territoire
          1 	  La famille montana 	0 pts
          2 	  Les affranchis 	0 pts
          3 	  Les affranchis 	0 pts
          4 	  Tueur de flic 	0 pts
          5 	  Tueur de flic 	0 pts
          6 	  La main noire 	0 pts
          7 	  Les affranchis 	0 pts
          8 	  Habitant 	0 pts
          9 	  Habitant 	0 pts
          10 	  Habitant 	0 pts
          11 	  Les affranchis 	0 pts
          12 	  Les affranchis 	0 pts
          13 	  Habitant 	0 pts
          14 	  Habitant 	0 pts
          15 	  Habitant 	0 pts
          1 	  Habitant 	39 pts
          1 	  Tueur de flic 	27 pts
          1 	  Tueur de flic 	27 pts
          1 	  Tueur de flic 	27 pts
          1 	  La famille montana 	62 pts
          1 	  Les affranchis 	39 pts
          1. Contributeur
            Quels sont les doublons exactement, peux tu mettre la liste des résultats histoire d'avoir un visu.
            1. Contributeur
              Mum... si tu place un "DISTINCT" juste après le "SELECT" dans ta seconde requête, ça supprime les doublons ?
              1. Merci pour ta réponse.
                Ca fonctionne mais il y a des doublons dans le tableau. Sais-tu comment faire pour ne pas en avoir ?

                Merci d'avance.
                1. Contributeur
                  Bonjour,

                  Tu as mal placé une fermeture '}'

                  Ici :
                      		echo $list->id; 
                  $mafia = "SELECT *, COUNT(*) as compte"
                  . "\n FROM #__wub_carte_victoire"
                  . "\n WHERE equipe = '".$list->id."' GROUP BY equipe"
                  ;
                  
                  }
                  
                  


                  Supprime cette fermeture et mets là à la fin.