Ne réaliser une boucle while qu'une fois

Fermé
jejew - Modifié par jejew le 18/11/2011 à 10:58
 jejew - 18 nov. 2011 à 12:20
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 :
 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

3 réponses

mayuri Messages postés 569 Date d'inscription jeudi 17 décembre 2009 Statut Membre Dernière intervention 28 mars 2013 65
18 nov. 2011 à 11:04
Bonjour,

Pourquoi ne pas changer le while en FOR?
0
Le for c'est pas uniquement pour l'incrémentation ?
0
mayuri Messages postés 569 Date d'inscription jeudi 17 décembre 2009 Statut Membre Dernière intervention 28 mars 2013 65
18 nov. 2011 à 11:54
sisi mais je pensais a autre chose! mais ça fonctionneras pas :S! je bloque dsl
0
Pas de soucis ! ;)
0
Je deviens complètement dingue. Certaines valeurs s'enregistrent en session, d'autres pas....
0
Anoen Messages postés 196 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 11 septembre 2013 25
18 nov. 2011 à 11:55
T'as pas oublié le session_start() au début de chaque fichier?
0
Non en fait le problème vient du fait qu'il y a un nombre maximum de variable par session. Dès que tu dépasses, il enregistre plus rien.
Une idée comment je pourrais insérer tous mes ids dans une seule variable ?
0
Anoen Messages postés 196 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 11 septembre 2013 25
18 nov. 2011 à 11:58
Avec un tableau :)
0
Oui ! Je suis en train de bosser dessus !

Merci :)
0