Insrire piu dati in un array durante una sessione

di il
3 risposte

Insrire piu dati in un array durante una sessione

Buon giorno a tutti, premetto che sono uno smanettone fai da te....
(quindi per favore quando sparerò castronate non sparate sul pianista...)

Sto cercando di salvare su un array associativo, più valori digitati dalla stessa form...
mi spiego meglio in pratica in una pagina ho una form in cui inserisco alcuni dati

nome studente
email
data di nascita

che con il metodo post vengono reinviati alla pagina stessa....

nella pagina in cui ho sempre la sessione aperta con session_start() ho poi

$Alunni = array();

//creo il singolo evento
$alunno = array();
$alunno['nome'] = $_REQUEST['nome']; //potrei usare anche =$_POST;
$alunno['mail'] = $_REQUEST['mail'];

//inserisco per il giorno di nascita (chiave dell'array associativo un nuovo evento
$Alunni[$_REQUEST['data']][] = $alunno;  
solo che in questo modo facendo un var dump dell'array Alunni vedo solo l'ultimo inserito e non l'elenco di tutti quelli inseriti nella sessione

Dove toppo?

3 Risposte

  • Re: Insrire piu dati in un array durante una sessione

    Session_start() assolve due possibili casi, creazione di una sessione e recupero di essa, quindi su pagina crea_sessione.php usi session_start() per creare la sessione in questa medesima nel caso di esito positivo aggiungi alcuni dettagli tra cui anche la variabile $_SESSION e puoi impostare la sessione su cookie invece che tramite SID (url) , devi creare anche un periodo di validità che indica che la sessione esiste però semplicemente l'utente ha lasciato la pagina aperta o comunque php non controlla la validità. Per recuperare la sessione nell'altra pagine usi session_start();
    La mia domanda è vuoi recuperare tutti gli utenti attivi della sessione? In questo caso effettuo un loop sulla variabile di sessione per un certo periodo di tempo con usleep() altrimenti se devi recuperare nome , mail e data indistintamente dalla sessione il codice è più rilassato.
    $_REQUEST potrebbe essere $_GET $_POST e difficilmente $_COOKIE.
    Comunque quando lavori con variabili esterne e non puoi avere la certezza che i dati siano attendibili li devi dapprima controllare e anche sanificare.
    <?php
    $array = array(); // inizializzazione a un array vuoto solo per il formato semplice altrimenti va aggiunto un'altra volta la funzione array dentro la medesima funzione
    //$array_multi = array(array());
    $array = array('zero' => 0, 'uno' => 1); // array associativo semplice
    $array_multi = array('zero' => array('zero' => 0, 'uno' => 1)); // array associativo multidimensionale,  cioè superiore a una dimensione/livello
    var_dump($array, $array_multi);
    $array['zero'] = 1; // sovrascrivo la chiave zero al nuovo valore 1
    Nota* nel caso si scelga il cookie dovrai effettuare un redirect da crea_sessione.php altrimenti il browser non ha ancora memorizzato il cookie (sarà solamente inviato). // array semplice singola lettura $array['zero'] o $array['uno']
    // array multidimensionale singola lettura $array_multi['zero']['zero'] o $array_multi['zero']['uno']
  • Re: Insrire piu dati in un array durante una sessione

    
    //Pagina alltogheter.php
    
    <?php 
    session_start(); //apre sessione
    ?>
    <body>
    <h1>Inserisci i dati</h1>
    <p>inserisci e visulaizza i dati HTML!</p>
    <form name="invio_dati" action="alltogheter.php" method="post">
    <p><input name="nome" placeholder="Nome"></p>
    <p><input name="mail" placeholder="Email"></p>
    <p> <input name="data" type="date"></p>
    <p>
    <input name="sesso" type="radio" value="maschio" checked> maschio
    <input name="sesso" type="radio" value="femmina"> femmina
    </p>
    <p>
    <input name="invia" type="submit"></p>
    </form>
     
    
    </body>
    
     <?php 
        $Alunni((array ()));
        $scolaro =array ();
        $scolaro['nome']=$_POST["nome"];
        $scolaro["mail"]=$_POST["mail"];
        
        $Alunni [$_POST['data']][] = $scolaro; 
        echo "<br>";
        echo "<br>";
        
        var_dump($Alunni);
        
        ?>
    
    In pratica vorrei mettere tutto in una pagina...
    Se funziona ovviamente farò tutti i passaggi di pulizia e controllo dei campi...

    L'idea è avere una pagina di inserimento dei deti che contemporaneamente di volta in volta mi faccia vedere quelli che ho inserito, magari in ordine di data di nascita o similare...

    Dovrebbe servire per non inserire due volte lo stesso nome... o per vedere dove uno è arrivato nell'inserimento...
  • Re: Insrire piu dati in un array durante una sessione

    Ci siamo quasi, il markup html inizia dal doctype, solo dopo il body (dopo header etc).
    Certamente è fattibile inviare e ricevere i dati via POST anche nella stessa pagina però se crei la sessione in quella pagina dovrai reindirizzare un'altra pagina per verificare il COOKIE. (altrimenti non sarà presente alla prima visualizzazione dell'utente ma sarà semplicemente inviando dal browser).
    Dovrai comunque memorizzare i dati da qualche parte (in un database o sconsigliato in un file txt).
    Hai quattro elementi nel tuo form tra cui 2 di tipo input text un input tipo data e un radio button, l'agente utente invierà
    nome=hormus&mail=example%40mail.com&data=202020-12-21 00:00:00&sesso=maschio
    PHP crea un array associativo con la chiave contenente il valore del tuo attributo name.
    // super globale che contiene i dati inviati
    $_POST['nome'] //hormus
    $_POST['mail'] //example@mail.com
    $_POST['data'] //2020-12-21 00:00:00
    $_POST['sesso'] //maschio
    Normalmente dovrai verificare con la funzione isset su ogni chiave.
    Puoii indistintamente creare un'ulteriore involucro (una variabile che contiene un valore) dove memorizzare l'array associativo $_POST.
Devi accedere o registrarti per scrivere nel forum
3 risposte