Ne réaliser une boucle while qu'une fois

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 :
 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   Statut Membre Dernière intervention   65
 
Bonjour,

Pourquoi ne pas changer le while en FOR?
0
jejew
 
Le for c'est pas uniquement pour l'incrémentation ?
0
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
0
jejew
 
Pas de soucis ! ;)
0
jejew
 
Je deviens complètement dingue. Certaines valeurs s'enregistrent en session, d'autres pas....
0
Anoen Messages postés 196 Date d'inscription   Statut Membre Dernière intervention   25
 
T'as pas oublié le session_start() au début de chaque fichier?
0
jejew
 
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   Statut Membre Dernière intervention   25
 
Avec un tableau :)
0
jejew
 
Oui ! Je suis en train de bosser dessus !

Merci :)
0