boucle infinie
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.
Merci d'avance.
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.
houla :)
1) tu dois t'assurer que tu recois bien un int comme valeur:
(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:
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 ) {
- } ?>
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>' ;
- }
- ?>
Accès rapide :
Remonter 

