Ne réaliser une boucle while qu'une fois
jejew
-
jejew -
jejew -
Bonjour à tous,
J'utilise les sessions pour savoir quels articles un visiteur n'a pas encore lu. Je stock donc les IDs des articles non vus dans une session (en comparant avec la date de dernière visite contenue dans un cookie). Chaque fois qu'un visiteurs lit un post je unset l'id de ce post dans ma session.
J'ai juste un problème. J'utilise une boucle pour placer chaque ID dans une session mais je n'aimerais que cette boucle ne soit réalisée qu'une fois (en effet si elle se réalise à chaque rechargement de page, on réassigne tous les ids des posts non vus en Session et donc ça reviens à chaque fois comme si le lecteur n'avait lu aucun des nouveaux posts).
Voilà mon code :
Première visite, si la variable de session 'checkin' est différente de un, on définit tous les ids en session. Une fois que c'est fait je définit la variable checkin étant 1. La boucle ne devrait ensuite plus être réalisée. Le problème c'est que ça ne marche pas.
Si je prend le même code pour un if simple ça fonctionne :
Ca me rend dingue !!! Quelqu'un a une idée ? :)
Merci d'avance
J'utilise les sessions pour savoir quels articles un visiteur n'a pas encore lu. Je stock donc les IDs des articles non vus dans une session (en comparant avec la date de dernière visite contenue dans un cookie). Chaque fois qu'un visiteurs lit un post je unset l'id de ce post dans ma session.
J'ai juste un problème. J'utilise une boucle pour placer chaque ID dans une session mais je n'aimerais que cette boucle ne soit réalisée qu'une fois (en effet si elle se réalise à chaque rechargement de page, on réassigne tous les ids des posts non vus en Session et donc ça reviens à chaque fois comme si le lecteur n'avait lu aucun des nouveaux posts).
Voilà mon code :
if($_SESSION['checkin'] != '1') { $query = 'SELECT * FROM songs WHERE pub_date < \''.$current_date.'\' AND pub_date > \''.$last_visit.'\' ORDER BY songs.pub_date DESC'; $result = mysql_query($query); while ($data = mysql_fetch_assoc($result)) { $id = $data['id']; $var= 'song_'.$id; $_SESSION[$id] = $id; } $_SESSION['checkin'] = '1'; }
Première visite, si la variable de session 'checkin' est différente de un, on définit tous les ids en session. Une fois que c'est fait je définit la variable checkin étant 1. La boucle ne devrait ensuite plus être réalisée. Le problème c'est que ça ne marche pas.
Si je prend le même code pour un if simple ça fonctionne :
echo 'Checkin est égal à '.$_SESSION['checkin'].'<br>'; if($_SESSION['checkin'] != '1') { echo 'Checkin est différent de 1 !<br>'; echo '<a href="bonjour.php">Recommencer ! </a><br>'; $_SESSION['checkin'] = '1'; } echo 'Checkin est égal à '.$_SESSION['checkin'];
Ca me rend dingue !!! Quelqu'un a une idée ? :)
Merci d'avance
A voir également:
- Ne réaliser une boucle while qu'une fois
- Réaliser un organigramme - Guide
- Mon pc s'allume et s'éteint en boucle - Forum Matériel & Système
- Je suis une chose que les garçons utilisent deux fois par jour et les filles une fois toute leur vie - Forum Loisirs / Divertissements
- Paiement 4 fois cdiscount impossible - Forum Consommation & Internet
- Sonne une fois et messagerie - Forum Mobile
3 réponses
Bonjour,
Pourquoi ne pas changer le while en FOR?
Pourquoi ne pas changer le while en FOR?
jejew
Le for c'est pas uniquement pour l'incrémentation ?
mayuri
Messages postés
569
Date d'inscription
Statut
Membre
Dernière intervention
65
sisi mais je pensais a autre chose! mais ça fonctionneras pas :S! je bloque dsl
jejew
Pas de soucis ! ;)