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

  1. mayuri Messages postés 601 Statut Membre 65
     
    Bonjour,

    Pourquoi ne pas changer le while en FOR?
    0
    1. jejew
       
      Le for c'est pas uniquement pour l'incrémentation ?
      0
    2. mayuri Messages postés 601 Statut Membre 65
       
      sisi mais je pensais a autre chose! mais ça fonctionneras pas :S! je bloque dsl
      0
    3. jejew
       
      Pas de soucis ! ;)
      0
  2. jejew
     
    Je deviens complètement dingue. Certaines valeurs s'enregistrent en session, d'autres pas....
    0
  3. Anoen Messages postés 200 Statut Membre 25
     
    T'as pas oublié le session_start() au début de chaque fichier?
    0
    1. 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
    2. Anoen Messages postés 200 Statut Membre 25
       
      Avec un tableau :)
      0
    3. jejew
       
      Oui ! Je suis en train de bosser dessus !

      Merci :)
      0