Salut,
J'essaie depuis quelques jours de modifier (plusieurs fois un des codes de mon script de concours pour "automatiser" le plus possible son utilisation. J'explique un peu plus le bazar...
En fait, j'ai un script pour proposer un concours à mes éventuels futurs membres. Il est question, dans une des parties du script, de récupérer le nombre d'id de chaque critère choisis, via quatre requêtes -une pour chaque critère- puis d'afficher ensuite le résultat de chacune d'entre elles, avec quatre boucles
for.
La première des quatre requêtes :
<?php
$req3a = mysql_query("SELECT COUNT(icv_id)
FROM concours_insc_crit_vot cicv
JOIN concours_inscrits ci
ON cicv.icv_inscrit_id = ci.inscrit_id
JOIN concours_criteres cc
ON cicv.icv_valeur = cc.critere_id
WHERE icv_inscrit_id='".$inscrit_id."'
AND icv_valeur='1'") or die ("erreur3 sql ".mysql_error());
?>
$req3a, req3b, ..c et ..d, en changeant la valeur de `icv_valeur` à chaque fois pour 2, 3, et enfin 4.
Ensuite les boucles :
<?php
for ($i=0;$i<sizeof($resultat3a = mysql_fetch_array($req3a));$i++)
{
echo ' <img src="images/barre_vote_5x10px.gif" height="10" width="'.$resultat3a[$i].'"</img>';
echo ' '.$resultat3a[$i].' choix.<br /><br />';
}
?>
Quatre boucles donc, $resultat3a, b, c, d.
Ce qui me donne :
"Critère 1 : (img barre de progression) tel pourcentage.
tant de choix."
Et ainsi de suite jusqu'au critère 4. Tout ça fonctionne bien.
Mais ici, le nombre de critères est limité à quatre, et j'aimerais qu'il n'y ait plus cette limite et pouvoir en entrer autant que je veux dans mon administration, sans devoir rajouter de requêtes et autres boucles en conséquence dans le fichier. D'où l'intérêt d'avoir les résultats en ayant écrit une seule requête et n'afficher les résultats qu'en une seule boucle.
Ma dernière modification (qui ne fait pas ce que je voudrais et ça me frustre un peu beaucoup) :
La requête répétée plusieurs fois avec le changement de la valeur de $i pour icv_valeur, à chaque fois, et la boucle pour le résultat censé être de chaque requête :
<?php
for ($i=1;$i<$total_criteres+1;$i++)
{
//Récupération des résultats du membre, critère par critère
$req_resultats = mysql_query('SELECT icv_id
FROM concours_insc_crit_vot cicv
JOIN concours_inscrits ci
ON cicv.icv_inscrit_id = ci.inscrit_id
JOIN concours_criteres cc
ON cicv.icv_valeur = cc.critere_id
WHERE icv_inscrit_id="'.$inscrit_id.'"
AND icv_valeur="'.$i.'"')
or die ("erreur sql req_resultats ".mysql_error());
}
for($i=0;$i<sizeof($req_resultats);$i++)
{
for($i=0;$i<sizeof($res_resultats = mysql_num_rows($req_resultats));$i++)
{
$mess_result = ' <img src="../images/concours/barre_vote_gauche_5x10px.png" height="10" />
<img src="../images/concours/barre_vote_5x10px.gif" height="10" width="'.round($i*100/$total, 1).'" />
<img src="../images/concours/barre_vote_droite_5x10px.png" height="10" /> '.round($i*100/$total, 1).'%.<br />'
.intval($i).' choix.<br /><br />';
}
}
?>
Puis l'affichage de ces résultats (le while juste avant sert pour l'affichage du nom de chaque critère) :
<?php
while($res_criteres = mysql_fetch_array($req_criteres))
{
echo protect_var_court(stripslashes($res_criteres['critere_nom'])).' :';
if(isset($mess_result))
{
echo $mess_result;
}
else
{
echo '';
}
}
?>
Ce qui me donne :
"Critère 1 : (img barre de progression) 0%.
0 choix.
Critère 2 : (img barre de progression) 0%.
0 choix.
Critère 3 : (img barre de progression) 0%.
0 choix.
Critère 4 : (img barre de progression) 0%.
0 choix."
Alors que je devrais avoir 3 choix au trois premiers critères, et 2 au dernier, ainsi que les pourcentages qui vont bien. Je n'arrive donc pas à récupérer le résultat de chaque requête. Ma logique a visiblement atteint ses limites...

.
J'espère avoir été assez claire dans mes explications pour avoir un peu d'aide. En vous remerciant

.