boucle infinie

Répondre
Keika
le 22/04/2008 à 15:35
Keika
salut, voila j'ai cette boucle que j'essaye de faire tourner comme je l'entends, seulement elle fait des siennes !

Je recois un temps timestamp via une variable $_GET['jour']. Apres je veux faire une liste deroulante sur 14 jours a partir de cette date. Seulement mon script tourne a l'infinie a chaque fois. Et quand je le verifie ca me montre qu'il recommence la meme boucle ssans cesse, sans ajouter la valeur que je veux.

<?php
$i = 0 ;
//On va faire une liste deroulante de dates sur deux semaines.
//Avec une boucle dont le $i commence a $_GET['jour'] et fini a ($_GET['jour']+(3600s*24h)*14j) avec un ajout de 3600s+24h par boucle
for($i == $_GET['jour'] ; $i == ($_GET['jour']+1209600) ; $i+86400){

//On formate la date de la meme facon qu'au dessus
$jour_fin = date('d/m/Y', $i) ;

//Et on fait les options
echo '<option value="'.$i.'">'.$jour_fin.'</option>' ;

}

?>


Merci d'avance.
Le PHP --> C'est dur !
lordgun
le 22/04/2008 à 16:49
lordgun
houla :)

1) tu dois t'assurer que tu recois bien un int comme valeur:

<?php if ( intval($_GET['jour']) == $_GET['jour'] ) {
} ?>


(et encore, tu devrais vérifier que ce n'est pas un nombre trop grand pour ne pas trop boucler, etc.)

Ensuite, tu utilises mal la boucle for:
la première expression est exécutée (tu as ici une comparaison, mais tu n'assignes rien)
la seconde est une comparaison qui détermine si sort ou pas de la boucle,
la troisieme est éxecutée à chaque itération

le code correct est le suivant: compare avec la logique de ta proposition:

<?php for ( $i=$_GET['jour']; $i>=($_GET('jour']+1209600); $i+=86400 ) {
} ?>
Keika
le 22/04/2008 à 17:04
Keika
Merci pour ta reponse lordgun, j'avais trouve quelques minutes plus tard, a force d'essais.

<?php
$i = 0 ;
//On va faire une liste deroulante de dates sur deux semaines.
//Avec une boucle dont le $i commence a $_GET['jour'] et fini a ($_GET['jour']+(3600*24)*14) avec un ajout de 3600+24 par boucle
for($i = $_GET['jour'] ; $i <= ($_GET['jour']+1209600) ; $i+=86400){

//On formate la date de la meme facon qu'au dessus
$jour_fin = date('d/m/Y', $i) ;

//Et on fait les options
echo '<option value="'.$i.'">'.$jour_fin.'</option>' ;

}

?>
Le PHP --> C'est dur !
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours