Taulukoiden tallentaminen PHP:n sessioon
Tarkastellaan koodia, jonka teimme edellisessä oppitunnissa:
<?php
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Itse asiassa olisi voinut ottaa ja tallentaa
kaikki lomakkeen tiedot heti $_SESSION:iin:
<?php
if (!empty($_GET)) {
$_SESSION = $_GET;
}
?>
Ja tiedostossa test2.php tehdä näin:
<?php
if (!empty($_SESSION)) {
echo array_sum($_SESSION);
}
?>
Tämän lähestymistavan etuna on, että koodimme toimii riippumatta lomakkeen input-kenttien määrästä.
Siinä on kuitenkin myös haittapuoli: korvaamalla
$_SESSION:n me ylikirjoitamme kaikki tiedot,
jotka siellä aiemmin olivat. Kuka tietää mitä
toinen skriptimme on sinne tallentanut? Ja me poistamme sen.
Tehdään toisin:
<?php
if (!empty($_GET)) {
$_SESSION['nums'] = $_GET;
}
?>
Kuten näette, sessio-muuttujaan tallensimme
ei yhden arvon, vaan kokonaisen taulukon.
Nyt tiedostossa test2.php voimme laskea
tämän taulukon elementtien summan:
<?php
if (!empty($_SESSION)) {
echo array_sum($_SESSION['nums']);
}
?>
Kysy yhdellä sivulla lomakkeen avulla
käyttäjältä nimi, ikä, palkka ja vielä
jotain muuta. Tallenna nämä tiedot yhteen
session muuttujaan taulukon muodossa. Kun siirryt
toiselle sivulle, käy läpi tallennetut tiedot
silmukalla ja tulosta jokainen taulukon elementti
omassa li-tagissaan ul-tagin sisällä.