Αποθήκευση πινάκων στις συνεδρίες PHP
Ας δούμε τον κώδικα που φτιάξαμε στο προηγούμενο μάθημα:
<?php
if (!empty($_GET)) {
$_SESSION['num1'] = $_GET['num1'];
$_SESSION['num2'] = $_GET['num2'];
}
?>
Στην πραγματικότητα, θα μπορούσαμε να πάρουμε και να αποθηκεύσουμε
όλα τα δεδομένα της φόρμας αμέσως στο $_SESSION:
<?php
if (!empty($_GET)) {
$_SESSION = $_GET;
}
?>
Και στο αρχείο test2.php να κάνουμε το εξής:
<?php
if (!empty($_SESSION)) {
echo array_sum($_SESSION);
}
?>
Το πλεονέκτημα αυτής της προσέγγισης είναι ότι ο κώδικάς μας θα λειτουργεί ανεξάρτητα από τον αριθμό των πεδίων εισόδου στη φόρμα.
Ωστόσο, υπάρχει και ένα μειονέκτημα: ξαναγράφοντας
το $_SESSION διαγράφουμε όλα τα δεδομένα
που υπήρχαν προηγουμένως εκεί. Ποιος ξέρει τι μπορεί
να έχει γράψει εκεί ένα άλλο σενάριό μας; Και εμείς τα διαγράφουμε.
Ας κάνουμε κάτι διαφορετικό:
<?php
if (!empty($_GET)) {
$_SESSION['nums'] = $_GET;
}
?>
Όπως βλέπετε, στη μεταβλητή της συνεδρίας αποθηκεύσαμε
όχι μια μόνο τιμή, αλλά έναν ολόκληρο πίνακα.
Τώρα στο αρχείο test2.php μπορούμε να βρούμε
το άθροισμα των στοιχείων αυτού του πίνακα:
<?php
if (!empty($_SESSION)) {
echo array_sum($_SESSION['nums']);
}
?>
Σε μια σελίδα, χρησιμοποιώντας μια φόρμα, ρωτήστε
τον χρήστη για το όνομά του, την ηλικία του, τον μισθό του και κάτι
άλλο. Αποθηκεύστε αυτά τα δεδομένα σε μια μεταβλητή
συνεδρίας με τη μορφή πίνακα. Όταν μεταβείτε σε άλλη
σελίδα, διατρέξτε τα αποθηκευμένα δεδομένα με βρόχο
και εμφανίστε κάθε στοιχείο του πίνακα στη δική του
ετικέτα li της ετικέτας ul.