Comment retourner une valeur dans un while ?
Résolu/Fermé
tgos93
Messages postés
83
Date d'inscription
vendredi 28 décembre 2012
Statut
Membre
Dernière intervention
9 juillet 2014
-
28 mars 2013 à 18:50
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 29 mars 2013 à 13:06
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 29 mars 2013 à 13:06
A voir également:
- Comment retourner une valeur dans un while ?
- Retourner ecran windows - Guide
- Comment retourner une video - Guide
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Excel renvoyer la valeur d'une cellule en fonction d'une autre - Forum Logiciels
- Valeur ascii - Guide
6 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
28 mars 2013 à 22:34
28 mars 2013 à 22:34
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
Flachy Joe
Messages postés
2103
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
21 novembre 2023
260
28 mars 2013 à 19:31
28 mars 2013 à 19:31
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.
tgos93
Messages postés
83
Date d'inscription
vendredi 28 décembre 2012
Statut
Membre
Dernière intervention
9 juillet 2014
28 mars 2013 à 19:51
28 mars 2013 à 19:51
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.
tgos93
Messages postés
83
Date d'inscription
vendredi 28 décembre 2012
Statut
Membre
Dernière intervention
9 juillet 2014
28 mars 2013 à 19:54
28 mars 2013 à 19:54
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
tgos93
Messages postés
83
Date d'inscription
vendredi 28 décembre 2012
Statut
Membre
Dernière intervention
9 juillet 2014
29 mars 2013 à 10:36
29 mars 2013 à 10:36
Merci de ta réponse. Le $cpt2 3 et 4 c'était pour la méthode du rand que j'avais oublié d'enlevé, dsl.
J'ai débuté recemment le php et je ne savais pas que le compteur aller être transmit à chaque boucle, je n'avais même pas essayé.
J'essai ta méthode, je vous tiens au courant.
Merci.
J'ai débuté recemment le php et je ne savais pas que le compteur aller être transmit à chaque boucle, je n'avais même pas essayé.
J'essai ta méthode, je vous tiens au courant.
Merci.
tgos93
Messages postés
83
Date d'inscription
vendredi 28 décembre 2012
Statut
Membre
Dernière intervention
9 juillet 2014
29 mars 2013 à 10:40
29 mars 2013 à 10:40
Ca fonctionne comme je le souhaite, encore merci pour tout. :D
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
29 mars 2013 à 13:06
29 mars 2013 à 13:06
si ça fonctionne mets en résolu