Count, Distinct sql [Résolu/Fermé]

Signaler
-
 Valitox -
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!!!!!

2 réponses

Messages postés
65
Date d'inscription
vendredi 7 septembre 2012
Statut
Membre
Dernière intervention
14 septembre 2012
40
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 internautes nous ont dit merci ce mois-ci

c'est tout à fait ca que je voulais faire... Je te remercie beaucoup
Messages postés
65
Date d'inscription
vendredi 7 septembre 2012
Statut
Membre
Dernière intervention
14 septembre 2012
40
De rien ;)
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>
Messages postés
65
Date d'inscription
vendredi 7 septembre 2012
Statut
Membre
Dernière intervention
14 septembre 2012
40
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']."%' ....
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