[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
A voir également:
- [MYSQL/PHP] Comment réduire ce code
- Comment réduire la taille d'un fichier - Guide
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Reduire taille image - Guide
- Code puk bloqué - Guide
9 réponses
Bonjour!
il me semble que ça marcherait
Mais c'est à tester!
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:
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.
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
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
mais j'obtient comme resultat
ArrayArrayArrayArray....
pourquoi
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...
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:
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
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
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
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:
Puis à la suite tu mets ton code.
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.