Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    60

    Problema aggiornamento indice Sessioni

    Ciao, ho creato un carrello con le sessioni:
    questa( $_SESSION['cart']) contiene un array per ogni prodotto inserito nel carrello, contenente a sua volta codice, quantità e categoria. Per spiegarmi meglio, vi inserisco un pezzo del codice di estrazione degli elementi:

    <? $i=0;

    $prodotti=count ($_SESSION['cart']);

    //display CART LIST

    $visualizza ="Articoli nel carrello
    ";
    $prezzototcart=0;
    if ($prodotti== 0) { $visualizza="Carrello vuoto <img src=\"http://localhost/live2/Immagini/gifs/hr.gif\">"; }

    require_once('../../Connections/Conn_articoli.php');

    while ($i!=$prodotti) //per ogni riga della tabella cart
    { // esegue una query d'estrazione al db articoli

    $arr=$_SESSION['cart'][$i];
    $codice=$arr['cod'];
    $quantita=$arr['qta'];
    $tabella=$arr['categoria'];
    $visualizza.= "$codice X $quantita in $tabella etc...";
    $i=$i+1;

    etc...

    } etc...
    ?>



    Quando però rimuovo un item dal carrello
    ( cioè così:

    // ricezione variabili POST [indice]
    $c=$_POST['indice'];

    //rimozione totale

    unset ($_SESSION['cart'][$c]);

    header ("location: http://localhost/live2/sezioni/cart/show.php");

    } )

    poi nell' estrazione degli elementi mi da un problema di offset sull'indice che ho appena cancellato; immagino dipenda dal fatto che quell'indice non esiste più ma cmq lo script cerca di estrarlo. Infatti se cancello l'ultimo item non ho problemi perchè si ferma prima
    ( $i== count($_SESSION['cart']))
    Ed ora la tanto attesa domanda:
    Come faccio ad eliminare un item e riaggiornare la sessione in modo che tutti gli indici successivi a quello eliminato scattino indietro di uno?
    Esiste un modo semplice o lo devo fare tramite dei cicli? Pensavo magari nella pagina di estrazione di controllare l'esistenza dell'indice ( else{ $i=+1;} ), ma credo mi dia problemi lo stesso...
    grazie ciao
    Non esiste niente di più serio dell'arte; e non esiste niente di meno serio dell'artista. (O.Wilde)

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    60
    nessuno può darmi una mano? dai fate i bravi

    Non esiste niente di più serio dell'arte; e non esiste niente di meno serio dell'artista. (O.Wilde)

  3. #3
    Ciao,
    gli array, anche numerici, in PHP sono tutti associativi, quindi l'unset di un elemento non comporta la reindicizzazione

    Soluzione

    $x = array('a','b','c','d') ;

    unset($x[2]) ; //elimina c

    $x = array_values($x) ; //reindicizza
    per favore NIENTE PVT TECNICI da sconosciuti

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    60
    Quindi se ho capito bene, dato un array all'interno di una sessione associativa a sua volta ad es. $_SESSION['cart'][$i]
    1) elimino l'indice con

    $i=2;
    unset ($_SESSION['cart'][$i]);

    2)reindicizzo con

    $_SESSION['cart']=array_values($_SESSION['cart']);

    funziona cioè anche sugli array di array come in questo caso?
    grazie
    Non esiste niente di più serio dell'arte; e non esiste niente di meno serio dell'artista. (O.Wilde)

  5. #5
    Originariamente inviato da Giakie

    funziona cioè anche sugli array di array come in questo caso?
    grazie
    Sì, ma nel dubbio prova
    per favore NIENTE PVT TECNICI da sconosciuti

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    60
    ok, funziona, grazie ancora;
    in effetti crcavo di fare proprio quello, mi mancava il comando array_values
    speravo proprio di non dovere estrarre tutto e reinserirlo uno alla volta nella sessione... che sbattimento
    ciao
    Non esiste niente di più serio dell'arte; e non esiste niente di meno serio dell'artista. (O.Wilde)

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.