Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 30
  1. #11
    Fai un while.
    Come fai con un FOR a leggere un array che probabilmente non avrà campi precisamente ordinati in modo crescente.
    Ti faccio un esempio, nell'array nella session hai 0, 1, 2.
    Il cliente cancella l'1 perchè non vuole più comprarlo, quindi in session ti rimane 0 e 2.
    Se tu usassi il FOR andresti anche a pescare i dati di 1 che non esiste più (dando un errore di offset array).

    Allora utilizza un while, combinando each e list.

    Codice PHP:
    reset ($_SESSION['shop']);

    while (list (
    $chiave$valore) = each ($_SESSION['shop'])) {
       
    // $chiave è quello che ti serve, la stringa sotto ti darà la lista degli id dei prodotti in session

       
    echo $_SESSION['shop'][$chiave]->id."
    "
    ;

    Marco Bianucci
    marco@phoenixweb.it
    Hosting php
    Programmazione & WebDesign

  2. #12
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    102
    Originariamente inviato da Shores
    Ma lo hai scritto tu prima:

    $_SESSION["carrello"][]=$idarticolo;

    Dov'è il problema?

    ok, ma quando clicco sul link, l'href a cosa porta? quella riga di codice dove la metto?

  3. #13
    ? L'href deve portare a quello che decidi tu...

    Per esempio, potrebbe portare alla stessa pagina in cui sei, ma con un parametro sulla querystring, tipo:

    stessapagina.php?add=14

    Dove il valore di add è l'id dell'articolo che vuoi aggiungere; nel tuo codice controllerai se c'è il parametro add e se ce lo aggiungerai al carrello nella sessione.

    Se fai così, però ricordati di fare immediatamente dopo l'aggiunta dell'articolo al carrello un

    header("Location: stessapagina.php");
    die();

    altrimenti se poi l'utente fa reload sulla pagina continua ad aggiungere quell'articolo al carrello.

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  4. #14
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    102
    Originariamente inviato da Shores
    ? L'href deve portare a quello che decidi tu...

    Per esempio, potrebbe portare alla stessa pagina in cui sei, ma con un parametro sulla querystring, tipo:

    stessapagina.php?add=14

    Dove il valore di add è l'id dell'articolo che vuoi aggiungere; nel tuo codice controllerai se c'è il parametro add e se ce lo aggiungerai al carrello nella sessione.

    Se fai così, però ricordati di fare immediatamente dopo l'aggiunta dell'articolo al carrello un

    header("Location: stessapagina.php");
    die();

    altrimenti se poi l'utente fa reload sulla pagina continua ad aggiungere quell'articolo al carrello.
    Ciao!
    Ok questo fatto, ma come vedo se funziona? Purtroppo la pagina di riepilogo non funziona ho provato a fare una pagina alla veloce per vedere se funzionava. il codice è questo:
    Codice PHP:
    <?
      session_start
    ();
        if (
    $add != ""){
         
    $_SESSION['id'][] = $add;
        
    header("Location: index.php");
      die();
        } 
    ?>
    questo a inizio pagina index.php per controllare se c'e' il valore di add, passato, se uno aggiunge al carrello, in questo modo:

    codice:
    <a href=\"index.php?add=$row[id]\">Aggiungi al carrello</a>
    questo è il codice del link "Aggiungi al carrello", messo di fianco ad ogni prodotto (con tutto il codice per prelevare dal database, ma che mi sembra inutile ricopiare..)

    per scorrere l'array della sessione come faccio? ho fatto anche per prova

    echo $_SESSION['id'][1]

    ma non funziona... come mai?
    anche con list, come suggeriva un utente, non funziona

    HELP!!

  5. #15
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    102
    no scusate mi sbagliavo, con echo $_SESSION['id'][1] funziona, ma come faccio a scorrere tutto l'array? con la list nn va

  6. #16
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    102
    Scusate il pasticcio.. ora funziona tutto, o quasi.
    Rimane il problema di eliminare correttamente un prodotto già inserito nel carrello..
    Pensavo di eliminarlo facendo riferimento all'id ma mi son reso conto che non è possibile!
    Infatti l'id preso dal database è diverso dalla posizione nell'array $_SESSION...
    Come fare per risolvere il problema?

    Grazie infinite!

  7. #17
    Devi usare le funzioni di array:

    Se in $row["id"] hai il codice dell'articolo che vuoi rimuovere,

    $_SESSION["id"]=array_splice($_SESSION["id"],array_search($row["id"],$_SESSION["id"]),1)

    Ciao!

    (Naturalmente ti conviene verificare prima che l'articolo sia nel carrello, sempre con array_search!)
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  8. #18
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    102
    ok funziona tutto...
    un ultimo problema.. qualcuno sa come evitare che ad esempio due persone mettano contemporaneamente nel carrello un pezzo unico? come si potrebbe ovviare a tale problema?

  9. #19
    Originariamente inviato da evil
    ok funziona tutto...
    un ultimo problema.. qualcuno sa come evitare che ad esempio due persone mettano contemporaneamente nel carrello un pezzo unico? come si potrebbe ovviare a tale problema?
    Devi effettuare un controllo sulle giacenze: se la giacenza è >=1 allora metti l'articolo nel carrello e cali di uno la giacenza, altrimenti non puoi metterlo nel carrello...

    Attento anche ai carrelli abbandonati da chi chiude il browser senza fare logout dal tuo sito...

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  10. #20
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    102
    per ora il sito non gestisce accessi con login quindi per quello non c'e' problema.. ci avevo pensato, ma se poi uno mette nel carrello e poi chiude di colpo il browser (volutamente o anche per un crash) come si fa a riaumentare il valore di 1?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.