IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Boucle infinie for


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 155
    Points : 65
    Points
    65
    Par défaut Boucle infinie for
    Bonjour.

    Voici un extrait de mon premier formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <tr>
    						<td>Lieux proches</td>
    						<td> : </td>
    						<td>
    						<select name="lieux">
    							<?
    							for($i=0; $i<10; $i++)
    								{
    									echo "<option>".$i."</option>";
    								}
    							?>
    						</select>
    						</td>
    						<td>&nbsp;</td>
    					</tr>
    					<tr>
    					<td><input type ='submit' name="send" value= "Selectionner" ></td>
    				</tr>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <? 
    	for ($i=0; $i= $_POST['lieux']; $i++) //erreur probable
    			{
    				echo
    					"<tr>
    						<td>lieux proches</td>
    						<td> : </td>
    						<td><input type ='text' name='lieu<?=$i?>' /></td>
    						<td>&nbsp;</td>
    					</tr>";
    			}
    ?>
    Le 2e code est une boucle qui est sensée s'arrêter à la variable dont on a entré la valeur dans la 1ere partie de code mais malheureusement la boucle ne s'arrête pas à cette valeur et se répète de manière indéfinie il est fort probable que cette erreur se situe là où j'ai laissé mon commentaire.

    Si quelqu'un peut m'aider à stoper cette boucle, je lui en remercie d'avance.

    PS: Je précise qu'il s'agit de 2 formulaires différents.

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut, il faudrait voir la boucle en question.
    D'autre part, tu devrais tester que la valeur est bien numérique et qu'elle est bien comprise entre 1 et 10.
    Bye

    [edit]
    La condition d'arrêt devrait être $i <= $_POST['lieux']
    Pour le test que je te disais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!is_numeric($_POST['lieux']) || $_POST['lieux'] > 0 || $_POST['lieux'] >10) {
    $_POST['lieux'] = 0; // ou ce que tu veux mais kkchose qui permette à la boucle de s'arrêter
    }

  3. #3
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Il faudrait regarder le contenu de $_POST['lieux']. Ensuite ton test, pour ta boucle for est bizarre. Moi j'aurais plutôt fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for($i=0;$i<$_POST['lieux'];$i++){

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 155
    Points : 65
    Points
    65
    Par défaut
    edit: j'ai rien dis

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 155
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par FCYPBA
    Il faudrait regarder le contenu de $_POST['lieux']. Ensuite ton test, pour ta boucle for est bizarre. Moi j'aurais plutôt fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for($i=0;$i<$_POST['lieux'];$i++){
    c'était effectivement ça ça marche cette fois.

    Merci

  6. #6
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Citation Envoyé par shnouf
    c'était effectivement ça ça marche cette fois.

    Merci
    ouais mais je te conseil également de faire la validation du type de variable comme l'a mentionné Djakisback un peu plus haut
    surtout si c'est un champs de saisi fait par l'utilisateur

    ainsi ca fonctionne quand tu fais tes teste car t'écris par ex 23 mais si l'usager inscrit q3 ca va te faire planter ton application et tu voudrais surment pas ca..
    on essaie tous de coder sans bug non?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Boucle infinie While et for
    Par achrafkaran dans le forum C
    Réponses: 11
    Dernier message: 28/09/2013, 14h12
  2. symptome de la boucle infinie dans une requete
    Par ouam81 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 27/05/2005, 12h10
  3. Réponses: 15
    Dernier message: 24/05/2005, 08h34
  4. [Socket] Pb de boucle infinie
    Par Myogtha dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 10/06/2004, 14h10
  5. [C#] Comment eviter les boucles infinies ?
    Par Thomas Lebrun dans le forum C#
    Réponses: 12
    Dernier message: 09/06/2004, 00h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo