Comment retourner une valeur dans un while ?
Résolu
tgos93
Messages postés
83
Date d'inscription
Statut
Membre
Dernière intervention
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Tout est dans le titre. En effet j'ai besoin de retourner un compteur dans un while pour avoir un id qui est différent pour chaque <input> (au nombre de 4) de mon while.
Je vous remercie !
Bonne soirée.
Tout est dans le titre. En effet j'ai besoin de retourner un compteur dans un while pour avoir un id qui est différent pour chaque <input> (au nombre de 4) de mon while.
Je vous remercie !
Bonne soirée.
A voir également:
- Comment retourner une valeur dans un while ?
- Retourner ecran pc - Guide
- Comment retourner une video - Guide
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Valeur ascii - Guide
- Formule excel si contient texte alors valeur ✓ - Forum Excel
6 réponses
pourquoi vouloir faire un return $cpt sur une boucle while (ce n'est pas une fonction) ?
lorsque tu fais une boucle, à chaque "tour" de la boucle la valeur du compteur "suit"
dans ton cas si tu as les 4 input
- au départ $cpt=0
- au premier passage de la boucle il est incrémenté de 4
- donc en fin de 1ière boucle il est à 4
- au début du deuxième passage de la boucle ce compteur est donc à 4 (la variable $cpt n'a aucune raison de revenir à 0 puisque $cpt=0 est en dehors de la boucle while)
- au 2 ième passage de la boucle il est incrémenté de 4
- donc en fin de 2 ière boucle il est à 8
etc...
les input ce n'est pas comme ça:
<input ......></input>
mais
<input ............ />
pas de balise fermante mais /> à la fin de l'ouvrante
lorsque tu fais une boucle, à chaque "tour" de la boucle la valeur du compteur "suit"
dans ton cas si tu as les 4 input
- au départ $cpt=0
- au premier passage de la boucle il est incrémenté de 4
- donc en fin de 1ière boucle il est à 4
- au début du deuxième passage de la boucle ce compteur est donc à 4 (la variable $cpt n'a aucune raison de revenir à 0 puisque $cpt=0 est en dehors de la boucle while)
- au 2 ième passage de la boucle il est incrémenté de 4
- donc en fin de 2 ière boucle il est à 8
etc...
les input ce n'est pas comme ça:
<input ......></input>
mais
<input ............ />
pas de balise fermante mais /> à la fin de l'ouvrante
<?php mysql_connect($hote, $utilisateur, $mPasse); mysql_select_db("qcm"); $reqsql="SELECT * FROM questionnaire"; $resbase=mysql_query($reqsql) or die ("Echec de $sqlquest"); //un id doit être unique donc le div id="content" doit être en dehors de ta boucle echo '<div id="content">'; $cpt=0; //init du cpt while ($quizz=mysql_fetch_assoc($resbase)) { $num=$quizz['numquest']; // numéro de question $question=$quizz['question']; // question $reponse1=$quizz['rep1']; $reponse2=$quizz['rep2']; $reponse3=$quizz['rep3']; $reponse4=$quizz['rep4']; $repexact=$quizz['rep']; // reponse exacte echo '<ul class="choices-border">'; //Affichage à l'ecran du numero de la question + question echo $num.") ".$question."<br />"; //Affichage du choix des réponses avec les bouton radio echo "<li>"; //mettre des {} sur les if(...) et des values aux bts radio if($reponse1!=NULL){ $cpt++; echo'<input type="radio" name="rep'.$num.'" id="radio-'.$cpt.'" value="'.$reponse1.'" checked="checked" /><label for="radio-'.$cpt.'">'.$reponse1.'</label><br/>'; } if($reponse2!=NULL){ $cpt++; //d'où tu sort $cpt2 etc... ? echo'<input type="radio" name="rep'.$num.'" id="radio-'.$cpt.'" value="'.$reponse2.'" /><label for="radio-'.$cpt.'">'.$reponse2.'</label><br/>'; } if($reponse3!=NULL){ $cpt++; echo'<input type="radio" name="rep'.$num.'" id="radio-'.$cpt.'" value="'.$reponse3.'" /><label for="radio-'.$cpt.'">'.$reponse3.'</label><br/>'; } if($reponse4!=NULL){ $cpt++; echo'<input type="radio" name="rep'.$num.'" id="radio-'.$cpt.'" value="'.$reponse4.'" /><label for="radio-'.$cpt.'">'.$reponse4.'</label><br/>'; } echo"</li>"; echo "</ul>"; } echo "</div>"; //en dehors de la boucle while
Salut,
C'est pas très compréhensible ton histoire.
Si c'est pour sortir de la fonction, tu peux utiliser return, même dans la boucle.
Si c'est pour sortir uniquement de la boucle c'est break qu'il faut utiliser, exemple:
Bonne continuation.
C'est pas très compréhensible ton histoire.
Si c'est pour sortir de la fonction, tu peux utiliser return, même dans la boucle.
Si c'est pour sortir uniquement de la boucle c'est break qu'il faut utiliser, exemple:
val_retour=0; while true{ n++; if (n==5){ val_retour=n; break; } }
Bonne continuation.
Merci de ta réponse.
Si tu préfère je suis en train de réaliser un qcm que j'aimerai faire correspondre avec ma bdd, cependant dans mes input j'ai un id (et de ce fait un label) qui doit être différent a chaque fois. Je sais c'est peu commun de vouloir faire ceci mais c'est pour mon style css sur mes boutons radio.
j'avais pensé à ceci :
mysql_connect($hote, $utilisateur, $mPasse);
mysql_select_db("qcm");
$reqsql="SELECT * FROM questionnaire";
$resbase=mysql_query($reqsql) or die ("Echec de $sqlquest");
$cpt=0;
while ($quizz=mysql_fetch_assoc($resbase))
{
$num=$quizz['numquest']; // numéro de question
$question=$quizz['question']; // question
$reponse1=$quizz['rep1'];
$reponse2=$quizz['rep2'];
$reponse3=$quizz['rep3'];
$reponse4=$quizz['rep4'];
$repexact=$quizz['rep']; // reponse exact
echo '<div id="content">
<ul class="choices-border">';
//Affichage à l'ecran du numero de la question + question
echo $num.") ".$question."<br />";
//Affichage du choix des réponses avec les bouton radio
echo "<li>";
if($reponse1!=NULL)
echo'<input type="radio" name="rep'.$num.'" id="radio-'.$cpt++.'" checked="checked" ><label for="radio-'.$cpt.'">'.$reponse1.'</label></input><br/>';
if($reponse2!=NULL)
echo'<input type="radio" name="rep'.$num.'" id="radio-'.$cpt++.'" ><label for="radio-'.$cpt2.'">'.$reponse2.'</label></input><br/>';
if($reponse3!=NULL)
echo'<input type="radio" name="rep'.$num.'" id="radio-'.$cpt++.'" ><label for="radio-'.$cpt3.'">'.$reponse3.'</label></input><br/>';
if($reponse4!=NULL)
echo'<input type="radio" name="rep'.$num.'" id="radio-'.$cpt++.'" ><label for="radio-'.$cpt4.'">'.$reponse4.'</label></input><br/>';
echo"</li>";
echo "</ul>";
echo "</div>";
return $cpt;
}
PS : ma question était : comment récupéré le $cpt ( à la valeur 4 en l'occurrence ici) pour ainsi avoir dans mes input 5,6,7 et 8 pour la boucle suivante. Le cpt serait donc à 8 pour la 3 ème boucle while ... etc
J'avais également une autre idée, celle d'initialiser 4 $cpt au début de la boucle qui vaudraient une valeur aléatoire ( avec la fonction rand) ce qui fonctionnerai mais serait assez dérangeant dans le sens où, par malheur un rand serait équivalent à un autre et ne serait pas correct et science exact de faire ceci.
Merci.
Si tu préfère je suis en train de réaliser un qcm que j'aimerai faire correspondre avec ma bdd, cependant dans mes input j'ai un id (et de ce fait un label) qui doit être différent a chaque fois. Je sais c'est peu commun de vouloir faire ceci mais c'est pour mon style css sur mes boutons radio.
j'avais pensé à ceci :
mysql_connect($hote, $utilisateur, $mPasse);
mysql_select_db("qcm");
$reqsql="SELECT * FROM questionnaire";
$resbase=mysql_query($reqsql) or die ("Echec de $sqlquest");
$cpt=0;
while ($quizz=mysql_fetch_assoc($resbase))
{
$num=$quizz['numquest']; // numéro de question
$question=$quizz['question']; // question
$reponse1=$quizz['rep1'];
$reponse2=$quizz['rep2'];
$reponse3=$quizz['rep3'];
$reponse4=$quizz['rep4'];
$repexact=$quizz['rep']; // reponse exact
echo '<div id="content">
<ul class="choices-border">';
//Affichage à l'ecran du numero de la question + question
echo $num.") ".$question."<br />";
//Affichage du choix des réponses avec les bouton radio
echo "<li>";
if($reponse1!=NULL)
echo'<input type="radio" name="rep'.$num.'" id="radio-'.$cpt++.'" checked="checked" ><label for="radio-'.$cpt.'">'.$reponse1.'</label></input><br/>';
if($reponse2!=NULL)
echo'<input type="radio" name="rep'.$num.'" id="radio-'.$cpt++.'" ><label for="radio-'.$cpt2.'">'.$reponse2.'</label></input><br/>';
if($reponse3!=NULL)
echo'<input type="radio" name="rep'.$num.'" id="radio-'.$cpt++.'" ><label for="radio-'.$cpt3.'">'.$reponse3.'</label></input><br/>';
if($reponse4!=NULL)
echo'<input type="radio" name="rep'.$num.'" id="radio-'.$cpt++.'" ><label for="radio-'.$cpt4.'">'.$reponse4.'</label></input><br/>';
echo"</li>";
echo "</ul>";
echo "</div>";
return $cpt;
}
PS : ma question était : comment récupéré le $cpt ( à la valeur 4 en l'occurrence ici) pour ainsi avoir dans mes input 5,6,7 et 8 pour la boucle suivante. Le cpt serait donc à 8 pour la 3 ème boucle while ... etc
J'avais également une autre idée, celle d'initialiser 4 $cpt au début de la boucle qui vaudraient une valeur aléatoire ( avec la fonction rand) ce qui fonctionnerai mais serait assez dérangeant dans le sens où, par malheur un rand serait équivalent à un autre et ne serait pas correct et science exact de faire ceci.
Merci.
Cela fonctionne avec les rand je viens de vérifier ! Cependant s'il existe une méthode plus exacte, je suis preneur ;)
Merci.
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question