Fermeture de session

Résolu/Fermé
rafale69300 Messages postés 84 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 15 juin 2010 - 7 juil. 2009 à 10:36
rafale69300 Messages postés 84 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 15 juin 2010 - 9 juil. 2009 à 12:21
Bonjour tout le monde,
J'ai un petit problème, je n'arrive pas à placer mon unset($_SESSION['choix']);dans ma page car je la détruit trop tôt donc si quelqu'un pouvait m'aider merci d'avance.

<p><!--Formulaire-->

   
<form name="formulaire" action="./index.php?page=test&categorie=search" method="post" id="site">
</p>
<p align="center"><?php $requete='SELECT id_site,lib_site FROM sites order by lib_site';
			$resultat= mysql_query($requete);?>
   <select name="choix" onChange="document.forms['site'].submit();">
    <option value="0">Choisissez un site</option>
      <?php
				while ($donnees = mysql_fetch_array($resultat)){
                echo '<option value='.$donnees[0].'>';
             	echo $donnees[1];
				echo'</option>';
    			}
			?>
  </select>  </form>
<?php
// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
if(isset($_POST['choix']))
 $_SESSION['choix'] = $_POST['choix'] ;{
 if(isset($_SESSION['choix'])){
$sql = 'SELECT count(*) FROM batiments where id_site = '.$_SESSION['choix'].' ';  
 
// on exécute cette requête  
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
 
// on récupère le nombre d'éléments à afficher  
$nb_total = mysql_fetch_array($resultat);  
 
// on teste si ce nombre de vaut pas 0  
if (($nb_total = $nb_total[0]) == 0) {  ?>
<div> Aucune r&eacute;ponse </div> <?php
}  
else { ?>
	<p align="center">
<p align="center">
<p align="center">
<?php if(isset($_POST['choix']))
	 $_SESSION['choix'] = $_POST['choix'] ;{
	$requete2="SELECT lib_site FROM sites
			WHERE id_site ='".$_SESSION['choix']."'
			";
	$resultat2=mysql_query($requete2);
while ($donnees2 = mysql_fetch_array($resultat2)){
?>

Voici tous les b&acirc;timents du site suivant : <strong><?php echo $donnees2['lib_site'];?></strong><br><br>Pour plus d'informations sur un b&acirc;timent, cliquez sur son nom.<br><br><?php } 

   echo '<div align="center"><table width="500px" border="1" align="center">
    <tr>
      <td><div align="center"><strong>Code B&acirc;timent</strong></div></td>
        <td><div align="center"><strong>Nom B&acirc;timent</strong></div></td>
        <td><div align="center"><strong>Nb Etage B&acirc;timent</strong></div></td>
         <td><div align="center"><strong>Fonction B&acirc;timent</strong></div></td>
      </tr>'; 
   
// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0  
if (!isset($_GET['debut'])) $_GET['debut'] = 0; 
   
   $nb_affichage_par_page = 1; 
   
// Préparation de la requête avec le LIMIT  
$sql = 'SELECT code_bat, nom_bat, nbEtage_bat, fct_bat, id_bat, lib_site FROM batiments B, sites S
 WHERE B.id_site='.$_SESSION['choix'].' 
 AND S.id_site = B.id_site
 ORDER BY code_bat ASC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page; 
  
 
// on exécute la requête  
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
 
// on va scanner tous les tuples un par un  
while ($data = mysql_fetch_array($req)) {  
// on affiches les résultats dans la <table> ?>
 <tr><td><div align="center"><?php echo $data['code_bat'];?></div></td><td><div align="center"><?php
	echo '<a href="./index.php?page=info_bat&categorie=batiment&choix='.$data['id_bat'].'">'.$data['nom_bat'].'</a>';?></div></td><td><div align="center"><?php
	echo $data['nbEtage_bat'];?></div></td><td><div align="center"><?php
	echo $data['fct_bat'];?></div></td></tr><?php
}  
 
// on libère l'espace mémoire alloué pour cette requête  
mysql_free_result ($req); 
   echo '</table><br />'; 
 
   // on affiche enfin notre barre 
   echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 1).'</span>';
  
}  
// on libère l'espace mémoire alloué pour cette requête  
mysql_free_result ($resultat);  
 
echo '</table><br />';   
}
?>
</p></div>
<?php }
}
?>
</p></p>
A voir également:

5 réponses

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
9 juil. 2009 à 10:40
Bonjour,

Dans ce cas là tu remove les variable de ta session en début de page tout simplement.
1
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
7 juil. 2009 à 12:03
Bonjour,

Encore faut-il savoir précisément ce que tu souhaites faire.
De ce que j'ai pu lire du code, tu récupère $_POST["choix"] pour le mettre en session et l'utiliser tout au long de ton code.

Première remarque, à plusieurs endroit tu fais les mêmes instructions alors qu'elles peuvent être faite une seule fois au début de ton script :
- récupération de $_POST["choix"]
- stockage dans $_SESSION["choix"]

Ces instructions sont à faire au début de ton script.

Ensuite, pourquoi vouloir libérer $_SESSION["choix"] si tu l'utilise tout au long de ton script ?
Si tu souhaite réellement le supprimer, alors pourquoi mettre "choix" en session si ce n'est utiliser que dans cette page là, c'est totalement inutile, autant stocker dans une variable PHP locale à ta page.

Dans tous les cas, si tu souhaite vider de la session ta variable "choix", puisque tu l'utilise jusqu'à casiment la fin, je dirai qu'il te faut faire un 'unset' à la fin de ton programme.
0
rafale69300 Messages postés 84 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 15 juin 2010 2
7 juil. 2009 à 14:43
Merci pour ton aide, je t'explique la situation , cette page est inclus dans la page index grâce à ce code :

<?php
if(isset($_GET['page'])){
	include("./".$_GET['categorie']."/".$_GET['page'].".php");
}else{
	if(!isset($_SESSION['identifiant']) && !isset($_SESSION['motdepasse'])){
			include("./accueil.php"); 
	}else{
			include("./accueil.php"); ?>
           <?php
	}
}

?>



donc pour cette page la catégorie est search et la page test.

Dans la page d'index, j'ai ma fonction qui permet de faire un affichage page par page.

Donc dans le code du précédent poste je met ma variable POST ['choix'] en sessions pour qu'elle puisse etre gardé en mémoire sur la page 1 mais aussi la page 2 puis la page 3 et ainsi de suite.
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
7 juil. 2009 à 16:47
Ok, dans ce cas ce que je ne comprends pas c'est pourquoi tu souhaite détruire ta variable de session "choix" ?
Puisque le but semble de la garder au fil des pages.
0
rafale69300 Messages postés 84 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 15 juin 2010 2
9 juil. 2009 à 09:40
Désolé de te répondre que maintenant. Mais enfaite c'est que je souhaite que la session reste ouverte durant la pagination, donc une fois que le visiteur a fini, il va visité une autre page puis s'il désire revenir sur la page de pagination bah la session est toujours en mémoire donc cela ne me va pas je voudrais que la session ne soit plus en mémoire s'il retourne sur cette page.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rafale69300 Messages postés 84 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 15 juin 2010 2
9 juil. 2009 à 12:21
Merci c'est bien cela je n'avais pas du tout pensé à supprimer la session en début de page.
0