Count, Distinct sql

Résolu/Fermé
Valitox - Modifié par Valitox le 8/09/2012 à 14:50
 Valitox - 9 sept. 2012 à 15:18
Bonjour,

Je dév mon site perso actuellement et j'au un petit soucis concernant l'affichage des certaines informations. Est-ce que quelqu'un peut m'aider?

Alors je m'explique j'ai une table "ETUDIANT" et je voudrais afficher tous les Etudiants sans doublons et afficher le nombres de ses articles à côté de son nom.

Voilà ma requête sql

<?php

$sql = "SELECT COUNT(article) as nbrarticle, etudiant from etudiant WHERE etudiant LIKE'".$_GET['etudiant']."%' ORDER by etudiant ASC";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$n=0;
while($data = mysql_fetch_array($req)) {

?>
<li class="small-<?php echo $n++ % 2; ?>">
<a class="color" href="etudiant/afficher.php?idetudiant=<?php echo $data['idetudiant']; ?>" title="<?php echo $data['etudiant'];?>"><?php echo $data['etudiant'];?></a>
<?php echo $data['nbrarticle']; ?></li>
<?php
} ;?>


Mais le problème, ça affiche juste:

- Benoit : 13 articles

au lieu de:

-Benoit: 5 articles
-Francois: 1article
etc....

Un peu d'aide s'il vous plaît!!!!!
A voir également:

2 réponses

0x40 Messages postés 65 Date d'inscription vendredi 7 septembre 2012 Statut Membre Dernière intervention 14 septembre 2012 41
Modifié par 0x40 le 8/09/2012 à 19:30
Je ne suis pas chez moi et le SQL je ne suis pas un grand lover de cette syntaxe, sinon pourquoi ne pas faire ton traitement en PHP ?
 $req = mysql_query( "SELECT * from tab ORDER by etudiant ASC"); 
 $i =0; 
 $currentU ="";  
  
 while( $data = mysql_fetch_array($req))  
 { 
  if ( $i == 0){ 
   $currentU = $data['etudiant']; 
   ++$i; 
  } elseif ( $currentU == $data['etudiant']) { 
   ++$i; 
  } else { 
   echo $currentU." - ".$i."<br/>"; 
   $currentU = $data['etudiant']; 
   $i = 1; 
  } 
 } 
 echo $currentU." - ".$i."<br/>"; 


C'est fait à l'arrache mais ça doit fonctionner ><
De plus on peut l'optimiser très simplement !
1
c'est tout à fait ca que je voulais faire... Je te remercie beaucoup
0
0x40 Messages postés 65 Date d'inscription vendredi 7 septembre 2012 Statut Membre Dernière intervention 14 septembre 2012 41
8 sept. 2012 à 19:41
De rien ;)
0
0x40 j'ai besoin un peu de ton aide stp

ton script ca marche super bien et je te remercie encore mais sauf que j'ai rencontré un petit soucis au fait j'ai mit un lien vers une autre page pour voir les articles des étudiants mais le problème c'est que ca n'affiche pas le bon truc une fois je clic sur l'étudiant .
Par exemple quand je clic sur Benoit ca affiche les articles de francois, quand je clic sur francois ca affiche les article de francis. Ca décale au fait. Voila ce que j'ai fait

<ul class="list">
<?php
$req = mysql_query( "SELECT * from etudiant ORDER by etudiant ASC");
$i =0;
$n = 0;
$currentU ="";
while( $data = mysql_fetch_array($req))
{
if ( $i == 0){
$currentU = $data['etudiant'];
++$i;
} elseif ( $currentU == $data['etudiant']) {
++$i;
} else {
?>
<li class="small-<?php echo $n++ % 2; ?>">
<a class="color" href="/etudiant/afficher.php?idetudiant=<?php echo $data['idetudiant']; ?>" title="<?php echo $data['etudiant'];?>">
<?php echo $currentU;?></a> - <?php echo $i ; ?> Article<?php if ( $i > 1 ) { ?>s<?php } ?>
</li>
<?php
$currentU = $data['etudiant'];
$i = 1;
}
}

?>
<li class="small-<?php echo $n++ % 2; ?>">
<a class="color" href="/etudiant/afficher.php?idetudiant=<?php echo $data['idetudiant']; ?>" title="<?php echo $data['etudiant'];?>">
<?php echo $currentU;?></a> - <?php echo $i ; ?> Article<?php if ( $i > 1 ) { ?>s<?php } ?>
</li>

</ul>
0
0x40 Messages postés 65 Date d'inscription vendredi 7 septembre 2012 Statut Membre Dernière intervention 14 septembre 2012 41
8 sept. 2012 à 17:58
Bonjour,
C'est possible d'avoir un screen du nom des colonnes y compris 1 ou 2 lignes de votre table car sans en voir le contenu c'est difficile :)

Et vous désirez afficher tout ou alors seulement quelques lignes en fonction d'un champ de recherche ou d'un début de mot ?

Car pour moi, la requête est en grande partie basé sur LIKE paramètre :
.... LIKE '".$_GET['etudiant']."%' ....
0
idetudiant - etudiant - article
1 - Benoit - Test
2 - Francois - Info
3 - Benoit - Cours
4 - Benoit - Cours_info
5 - Francois - Cours
6 - Chris - Test
... ... ...


Et je veux afficher Chaque Etudiant par ordre alphabetique et à coté de son non le nombre de son article.

PAr exemple Benoit - 3articles
0