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

    Utilizzo di foreach.... HELP ME! :(

    Salve a tutti...
    a forza di sbatterci la testa sto riuscendo a realizzare il semplice carrello in php usando solo un array di sessione.

    In ogni pagina prodotto ho un pulsante che aggiunge una unità di quel prodotto al carrello.
    La aggiungo in questo modo:

    Codice PHP:
    $_SESSION['cart'][$IDaggiungi]++ 
    In pratica nell'array di sessione $_SESSION['cart'] incremento di una unità il valore corrispondente all'indice (univoco e corrispondente all'indice nel db) del prodotto.


    Nella pagina di visualizazione del carrello però ho un problema. Con il seguente codice riesco a vedere solo le quantità contenute nei vari indici, ma io vorrei visualizzare anche l'indice stesso, per potergli assegnare nome e prezzo (pescandoli nel db):


    Codice PHP:
    foreach ( $_SESSION['cart'] as $key 
           { 
                 echo 
    'Quantità di ' $key ': ' $_SESSION['cart'][$key] . '
    '
    ;
           } 
    Help me... sono fuso non riesco a capire dove sbaglio

  2. #2
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    Ciao fante1998,

    prova a stampare il contenuto dell'array con:

    Codice PHP:
    echo 'SESSION: <PRE>'.print_r($_SESSIONtrue).'</PRE>'
    e posta il risultato.

    La key di un array la puoi anche leggere con:

    Codice PHP:
    key($Array); 

  3. #3
    Sembra che vada! Ecco il risultato:

    SESSION:
    Array
    (
    [cart] => Array
    (
    [1] => 4
    [2] => 6
    )

    )
    Ora me lo vedo bene e cerco di adattarlo. Voglio vedere cosa capita in caso di buchi nell'array (per esempio non ho prodotto tre ma inserisco un 4)...
    Vi tengo informati

  4. #4
    :rollo:

    Mi sa che print_r non fa a caso mio... potrebbe essere utile in fase di debug, ma non in questo caso...
    Invece il tuo secondo consiglio (usare key ) non riesco a metterlo in pratica.
    Ecco cosa scrivo nel codice:

    Codice PHP:
    <?php
    foreach ( $_SESSION['cart'] as $key 
           { 
              echo 
    'Quantità di ' $key ': ' key($_SESSION['cart']) . '
    '

           }
    ?>



    Seconda prova:</p>

    <?php
    echo 'SESSION: <PRE>'.print_r($_SESSIONtrue).'</PRE>';
    ?>
    Ed ecco il risultato che ottengo dopo avere inserito nel carrello tre prod1 e sette prod2:
    Quantità di 3: 2
    Quantità di 7:

    Seconda prova:

    SESSION:
    Array
    (
    [cart] => Array
    (
    [1] => 3
    [2] => 7
    )

    )
    Come vedi la seconda parte del codice, prodotta con print_r è corretta. La prima parte invece, quella con key, non la capisco... cosa sbaglio?

  5. #5
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    allora che casino, io con print_r intendevo solo farti controllare la struttura dell'array, infatti non fa altro che stampare in chiaro l'array e nient'altro.

    Poi una volta stampato l'array vedi come è costruito ma lo vedevi anche senza print_r che si tratta di un array dentro un array (bidimensionale), quindi lo puoi sciogliere con 2 cicli di foreach:

    Codice PHP:
    foreach($_SESSION as $key)
    {
        foreach(
    $key as $prodotto => $quantita)
        {
            echo 
    "Quantità in prodotto ".$prodotto.": ".$quantita."
    "
    ;
        }


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.