web-dev-qa-db-fra.com

Tableau en tant que variable de session

Est-il possible de transformer un tableau en variable de session en PHP?

La situation est que j'ai un tableau (page 1) avec certaines cellules ayant un lien vers une page particulière. La page suivante contient une liste de noms (page 2, que je souhaite conserver dans un tableau de session) avec leurs cases à cocher respectives. En soumettant ce formulaire, vous accédez à une page de transaction (page 3, où les valeurs des cases à cocher affichées sont conservées dans une base de données pour les noms correspondants). Maintenant, si je reviens à la première page et clique sur une autre cellule, le tableau de session contiendra-t-il la nouvelle liste de noms ou les anciens?

63
anurag-jain

Oui, PHP prend en charge les tableaux en tant que variables de session. Voir cette page pour un exemple.

En ce qui concerne votre deuxième question: une fois que vous avez défini la variable de session, elle restera la même jusqu'à ce que vous la changiez ou que unset le. Donc, si la 3ème page ne change pas la variable de session, elle restera la même jusqu'à ce que la 2ème page la modifie à nouveau.

67
Kaleb Brasee

Oui, vous pouvez mettre des tableaux en sessions, par exemple:

$_SESSION['name_here'] = $your_array;

Maintenant, vous pouvez utiliser le $_SESSION['name_here'] Sur n'importe quelle page de votre choix, mais assurez-vous de bien mettre la ligne session_start() avant d'utiliser une fonction de session. Votre code devrait donc ressembler à ceci:

 session_start();
 $_SESSION['name_here'] = $your_array;

Exemple possible:

 session_start();
 $_SESSION['name_here'] = $_POST;

Maintenant, vous pouvez obtenir des valeurs de champ sur n'importe quelle page comme ceci:

 echo $_SESSION['name_here']['field_name'];

En ce qui concerne la deuxième partie de votre question, les variables de session restent là sauf si vous affectez des données de tableau différentes:

 $_SESSION['name_here'] = $your_array;

La durée de vie d'une session est définie dans le fichier php.ini .

Plus d'infos ici

73
Sarfraz
session_start();          //php part
$_SESSION['student']=array();
$student_name=$_POST['student_name']; //student_name form field name
$student_city=$_POST['city_id'];   //city_id form field name
array_Push($_SESSION['student'],$student_name,$student_city);   
//print_r($_SESSION['student']);


<table class="table">     //html part
    <tr>
      <th>Name</th>
      <th>City</th>
    </tr>

    <tr>
     <?php for($i = 0 ; $i < count($_SESSION['student']) ; $i++) {
     echo '<td>'.$_SESSION['student'][$i].'</td>';
     }  ?>
    </tr>
</table>
4
Sanjoy

Commencez par changer le tableau en chaîne en utilisant la fonction implode (). E.g $number=array(1,2,3,4,5,...); $stringofnumber=implode("|",$number); puis passez la chaîne à une session. Par exemple, $_SESSION['string']=$stringofnumber;, lorsque vous accédez à la page sur laquelle vous souhaitez utiliser le tableau, il suffit d'exploser votre chaîne. Par exemple, $number=explode("|", $_SESSION['string']); enfin le nombre est votre tableau, mais souvenez-vous de démarrer le tableau sur chaque page.

1
muhammad sirajo