[MYSQL/PHP] Comment réduire ce code
antic80
Messages postés
4877
Statut
Contributeur
-
antic80 Messages postés 4877 Statut Contributeur -
antic80 Messages postés 4877 Statut Contributeur -
bonjour a tous
voila j'ai une table eleve avec les colonnes suivantes
Note1,Note2,Note3,.....Note8
je cherche a connaitre le nombre de fois que la note1 est inferieur a 5, puis pareil pour les autres notes
j'ai mis ca comme code
$Liste représente la classe en question
ensuite j'ai le traitement de la requete
$req = mysql_query($rqNote1) or die('Erreur SQL !<br>'.$rqNote1.'<br>'.mysql_error());
$test=mysql_fetch_row($req);
$resultat=$test[0];
parti comme je suis c 3 lignes vont aussi etre repeter 8 fois
comment je peux simplifier tout ce code
voila j'ai une table eleve avec les colonnes suivantes
Note1,Note2,Note3,.....Note8
je cherche a connaitre le nombre de fois que la note1 est inferieur a 5, puis pareil pour les autres notes
j'ai mis ca comme code
$rqNote1="SELECT COUNT(*) FROM apprenant WHERE Classe='$Liste' and Note1 <= '5' "; $rqNote2="SELECT COUNT(*) FROM apprenant WHERE Classe='$Liste' and Note2 <= '5' "; $rqNote3="SELECT COUNT(*) FROM apprenant WHERE Classe='$Liste' and Note3 <= '5' "; $rqNote4="SELECT COUNT(*) FROM apprenant WHERE Classe='$Liste' and Note4 <= '5' "; $rqNote5="SELECT COUNT(*) FROM apprenant WHERE Classe='$Liste' and Note5 <= '5' "; $rqNote6="SELECT COUNT(*) FROM apprenant WHERE Classe='$Liste' and Note6 <= '5' "; $rqNote7="SELECT COUNT(*) FROM apprenant WHERE Classe='$Liste' and Note7 <= '5' "; $rqNote8="SELECT COUNT(*) FROM apprenant WHERE Classe='$Liste' and Note8 <= '5' ";
$Liste représente la classe en question
ensuite j'ai le traitement de la requete
$req = mysql_query($rqNote1) or die('Erreur SQL !<br>'.$rqNote1.'<br>'.mysql_error());
$test=mysql_fetch_row($req);
$resultat=$test[0];
parti comme je suis c 3 lignes vont aussi etre repeter 8 fois
comment je peux simplifier tout ce code
9 réponses
-
Bonjour!
il me semble que ça marcherait
SELECT COUNT(*) FROM apprenant WHERE Classe='$Liste' and (Note1 <= '5' or Note2 <= '5' or Note3 <= '5' or Note4 <= '5' or Note5 <= '5' or Note6 <= '5' or Note7 <= '5' or Note8 <= '5' )
Mais c'est à tester! -
Salut,
Avec uen boucle et un tableau de resultats:for($i=1; $i<9;$i++) { $rq="SELECT COUNT(*) FROM apprenant WHERE Classe='$Liste' and Note$i <= '5' "; $res=mysql_query($rq); $result[$i]=mysql_result($rq,0); }
De $result[1] à $result[8] tu as tes resultats.
En fait le soucis avec ta requête maily, c'est que le count rassemblera le nombre de resultats inférieurs à 5 pour toutes les notes confondues.
J'ai pensé à un group by mais je ne crois aps que ça soit faisable ici. -
mais comment afficher le resultat en séparer car j'aimerai obtenir
Note inférieur a 5
Note 1 : ...
Note 2 : ...
etc...
.... etant le nombre pour chaque note -
bon alors j'ai essayer de remettre par rapport a ce que j'ai le bout de code de killian
for($i=1; $i<9;$i++) { $rq="SELECT COUNT(*) FROM apprenant WHERE Classe='$Liste' and Note$i <= '5' "; $res=mysql_query($rq)or die('Erreur SQL !<br>'.$rq.'<br>'.mysql_error()); $result[$i]=mysql_fetch_row($res); echo $result[$i]; }
mais j'obtient comme resultat
ArrayArrayArrayArray....
pourquoi-
moi je modifierais un peu :
for($i=1; $i<9;$i++)
{
$Note="Note".$i;
$rq="SELECT COUNT(*) FROM apprenant WHERE Classe='$Liste' and $Note <= '5' ";
$res=mysql_query($rq)or die('Erreur SQL !<br>'.$rq.'<br>'.mysql_error());
while ($note = mysql_fetch_array($req))
echo "note=".$note->[$Note];
}
Mais bon pareil c à tester...
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Oui parce que tu utilises mysql_fetch_row qui renvoie un tableau et non pas le résultat directement, c'est pour ça que j'ai pris mysql_result.
Pas de soucis, change juste deux lignes pour chercher ta valeur dans le tableau:for($i=1; $i<9;$i++) { $rq="SELECT COUNT(*) FROM apprenant WHERE Classe='$Liste' and Note$i <= '5' "; $res=mysql_query($rq)or die('Erreur SQL !<br>'.$rq.'<br>'.mysql_error()); $result=mysql_fetch_row($res); echo $result[0]; } -
en fait j'avais mis mysql_fetch_row car avec mysql_result j'avais un message d'erreur
Warning: Wrong parameter count for mysql_result() in /home/lyceebai/www/Spip/Satisfaction/StatApprenant.php on line 62
que ve dire cette erreur ??
sinon maintenant ca marche nickel
-
j'aimerai aussi adapter ce code a a un autre morceau de code
echo "Accueil : ".$data3[1]; echo "<br />"; echo "Information et communication interne : ".$data3[2]; echo "<br />"; echo "Equipements pédagogiques : ".$data3[3]; echo "<br />"; echo "Locaux : ".$data3[4]; echo "<br />"; echo "Qualité de formation : ".$data3[5]; echo "<br />"; echo "Hébergement et Restauration : ".$data3[6]; echo "<br />"; echo "Aide à l'insertion Professionnelle : ".$data3[7]; echo "<br />"; echo "Prestations offertes par l'établissements (foyer, sorties pédagogiques, voyages, visites, etc.) : ".$data3[8]; echo "<br />"; echo "<br />";
j'aimerai par exemple avoir pour la 1ere Note
echo "Accueil : ".$data3[1] ." ". ici;
a la place de ici j'aimerai mettre le nombre de fois que la note 1 est inférieur a 5
et pareil pour les autres lignes-
En ce cas, tu stockes les infos dans un tableau au lieu de les afficher directement:
for($i=1; $i<9;$i++) { $rq="SELECT COUNT(*) FROM apprenant WHERE Classe='$Liste' and Note$i <= '5' "; $res=mysql_query($rq)or die('Erreur SQL !<br>'.$rq.'<br>'.mysql_error()); $data3[$i]=mysql_result($res,0); }
Puis à la suite tu mets ton code.
-
-
ok je verrais ca demain
mais ce morceau de code me renvoie une erreur celle que j'ai cité plus haut
$data3[$i]=mysql_result($res,0); -
je te tiens au courant demain
merci pour ton aide