Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    eliminare variabile di sessione

    Codice PHP:
    $_SESSION['a'.$i]['quantita'] = $ct_qty;

    foreach(
    $_SESSION as  $key =>$value ){
          if (
    is_array($value)) {

      echo 
    $value['nome_pd']."
    \n"
    ;
      }

    adesso avrei bisogno di distruggere la variabile di sessione $value['nome_pd']

    ho provato con unset(), ma non funziona.
    com'è la sintassi?

    :master:

  2. #2
    Ho letto qua e là xò non sò se stò ricordando male.. c'era anche un thread in cui ne parlano:

    $value['nome_pd'] = array();

    Ti dico prendilo con le pinze xò xke ho vaghi ricordi.. oppure cerca nel forum un thread in cui parlano se è meglio distruggere le variabili con unset() o con altre funzioni e mi sembrava che quella sintassi lì fosse la migliore anche x liberare la memoria e altre cose..

    Questa volta, più che un voto.. è favoreggiamento.

  3. #3

    Re: eliminare variabile di sessione

    Originariamente inviato da blur
    adesso avrei bisogno di distruggere la variabile di sessione $value['nome_pd']

    ho provato con unset(), ma non funziona.
    com'è la sintassi?

    :master:
    quella non e' una variabile di sessione, ma un normalissimo array in cui hai trasferito dei valori prelevati da $_SESSION. La variabile di sessione e' $_SESSION oppure le variabili dichiarate espressamente con session_register.

    $value = array();

    e rifai l'array bello e nuovo.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Codice PHP:
     foreach($_SESSION as  $key =>$value ){
          if (
    is_array($value)) {

      echo 
    $value['nome_pd']."
    \n"
    ;
      echo 
    $value['quantita']."
    \n"
    ;
      echo 
    $value['lingua_pd']."
    \n"
    ;
      echo 
    $value['prezzo_unitario']."</p>\n";

    $value = array();

      }

    non funziona, non svuota nulla.
    se all'inizio ho inserito 5 prodotti nel carrello e poi svuotato il carrello ( quindi l'array dovrebbe essere vuoto ) ne reinserisco uno solo, mi rimangono nell' array sessione gli ultimi 4 prodotti dell' inserimento precedente e soltanto il primo mi viene sovrascritto dal prodotto dell'ultimo inserimento...
    non so se mi sono spiegato....
    :master:

  5. #5
    Originariamente inviato da blur
    non so se mi sono spiegato....
    :master:
    Assolutamente no. l'array di sessione e' $_SESSION. Non lo svuoti certo con un foreach.

    Se vuoi vuotare l'array di sessione $_SESSION farai

    $_SESSION = array();

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    non posso usare
    $_SESSION = array();

    perchè mi svuoterebbe anche altre sessioni che invece devo tenere.
    allora ho provato solo con l'array di sessione originario, cioè

    $_SESSION['a'.$i]['nome_pd'] = array()

    ma mi da questi notice
    Notice: Undefined variable: i in c:\....

    Notice: Array to string conversion in c:\....

    ovviamente $_SESSION['a'.$i]['nome_pd'] è valorizzato

    boh!

  7. #7
    vabbè,
    ho risolto salvando prima le sessioni che mi interessavano.
    poi ho svuotato tutto con array() e di seguito ripristinato le sessioni salvate.

  8. #8
    Credo continui ad esserci una poca chiarezza su cosa sia una variabile di sessione.

    La variabile di sessione e' quella che viene salvata nel file di sessione (tutta). Puo' essere $_SESSION (sempre registrato) oppure altra variabile registrata con session_register().

    Se vuoi "resettare" come nuovo un array userai $array = array().

    Se vuoi eliminare un "indice" da un array oppure eliminare una variabile o piu' variabili devi usare UNSET() , che non e' una funzione ma un costrutto del linguaggio.

    Ci sono comportamenti diversi a seconda se la variabile o array e' in una funzione oppure no. Se vuoi chiamare SESSIONE un qualcosa che fai tu evidenzialo o dagli un altro nome, altrimenti non ci si capisce piu'....


    .

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    ok piero,
    vediamo di fare un pò di chiarezza:

    Codice PHP:
    $_SESSION['lingua'] = $_GET['lingua']; 
    quindi è un normalissimo array in cui ho inserito dei valori?
    Codice PHP:
    $_SESSION['a'.$i]['quantita'] = $ct_qty
    è esattamente la stesa cosa, giusto?

    se io ho queste variabili registrate dentro a $_SESSION:
    dopo aver eseguito il foreach
    Codice PHP:
    $_SESSION['a'.$i]['quantita'] = $ct_qty
    foreach($_SESSION as  $key =>$value ){
          if (
    is_array($value)) {
    echo 
    $value['nome_pd']; 

    {

    come svuoto un valore $value? con un unset() ? ma come?

    come dicevo la soluzione, dato che la variabile registrata dentro alle sessione, da salvare è una sola, ho preferito fare
    Codice PHP:
    $lingua $_SESSION['lingua'];
    $_SESSION = array();// <-- le resetto tutte!
    $_SESSION['lingua'] = $lingua
    forse è un modo "vigliacco" per liquidare la questione e non pensare a trovare una soluzione più da "manuale", ma purtroppo questo so fare...

  10. #10
    Originariamente inviato da blur
    ok piero,
    vediamo di fare un pò di chiarezza:

    Codice PHP:
    $_SESSION['lingua'] = $_GET['lingua']; 
    quindi è un normalissimo array in cui ho inserito dei valori?
    Codice PHP:
    $_SESSION['a'.$i]['quantita'] = $ct_qty
    è esattamente la stesa cosa, giusto?
    Assolutamente no. il primo e' un valore indicato da un indice monodimensionele, l'altro con un indice multidimensionale.

    se io ho queste variabili registrate dentro a $_SESSION:
    dopo aver eseguito il foreach
    Codice PHP:
    $_SESSION['a'.$i]['quantita'] = $ct_qty
    foreach($_SESSION as  $key =>$value ){
          if (
    is_array($value)) {
    echo 
    $value['nome_pd']; 

    {

    come svuoto un valore $value? con un unset() ? ma come?
    il foreach scorre l'array e via via sovrascrive $key e $value e quindi rimarra' solo l'ultimo trovato che verra' perso con la fine dello script.


    come dicevo la soluzione, dato che la variabile registrata dentro alle sessione, da salvare è una sola, ho preferito fare
    Codice PHP:
    $lingua $_SESSION['lingua'];
    $_SESSION = array();// <-- le resetto tutte!
    $_SESSION['lingua'] = $lingua
    forse è un modo "vigliacco" per liquidare la questione e non pensare a trovare una soluzione più da "manuale", ma purtroppo questo so fare...
    assolutamente corretto e senza alcuna vigliaccheria. Si deve fare proprio cosi'. Qualsiasi altra cosa peserebbe di piu' in carico elaborativo.


    .

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.