Visualizzazione dei risultati da 1 a 3 su 3

Discussione: aggiorna quantità

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275

    aggiorna quantità

    Salve a tutti
    sono giorni che sto cercando di capire come risolvere, ma non credo che ce la farò...
    in pratica sto facendo un semplice carrello, in cui l'utente, dopo aver fatto le proprie scelte, può visualizzare gli ordini in una pagina cart.php.
    Tutto parte da una pagina shop.php dove, grazie a un file flash, l'utente può "combinare" il proprio articolo; dopo la scelta, c'è una pagina di riepilogo yourchoice.php in cui l'utente può vedere le scelte compiute e infine c'è questo cart.php (il carrello vero e proprio). Non esistono articoli diversi con diversi id, ma un unico articolo che può essere modificato a piacere in diversi parametri:
    il disegno, il colore, l'alieno e la quantità.
    Ora per i primi 3 non ci sono problemi, riesco a far passare tutto con il $_POST. Anche la quantità passa tranquillamente con il POST, il problema si pone quando devo aggiornare la quantità stessa.

    Faccio un esempio pratico:
    l'articolo "1" scelto ha:
    disegno A, alieno B, colore Bianco, quantità 2;

    l'articolo "2" scelto ha:
    disegno B, alieno B, colore Bianco, quantità 2; (<---in questo caso è ok perchè va a posizionarsi correttamente dopo l'articolo "1" grazie al ciclo);

    l'articolo "3" scelto ha:
    disegno A, alieno B, colore Bianco, quantità 3; (<---identico all'articolo "1" ma con una diversa quantità, che ora dovrebbe andare a sommarsi a quella dell'articolo "1")

    Il problema è che non ho id, quindi avevo pensato una cosa tipo:
    if (colore, alieno e disgeno della SESSION = colore, alieno e disegno del POST) {incrementa quantità dell'articolo già esistente}

    ma non so come farlo praticamente.

    il file in questione (cart.php) è questo:


    <?php
    session_start();
    function Carrello($designScelto,$alienScelto,$coloreScelto, $quantity){
    if (count($_SESSION['carrello']) > 0){
    $temp=array('designScelto'=>$designScelto,'alienSc elto'=>$alienScelto,'coloreScelto'=>$coloreScelto, 'quantity'=>$quantity);
    array_push($_SESSION['carrello'],$temp);
    } else {
    $_SESSION['carrello'][0]=array('designScelto'=>$designScelto,'alienScelto' =>$alienScelto,'coloreScelto'=>$coloreScelto,'quan tity'=>$quantity);
    }
    }
    Carrello("$designScelto","$alienScelto","$coloreSc elto","$quantity");
    print_r($_SESSION);
    echo '
    ';

    if(isset($_SESSION["carrello"])){
    $posizione=count($_SESSION["carrello"]);
    echo "posizione: $posizione</br>";
    }


    for($i = 0; $i<=$posizione; $i++)


    {
    echo $i;
    echo $_SESSION['carrello'][$i]['designScelto'];
    echo $_SESSION['carrello'][$i]['alienScelto'];
    echo $_SESSION['carrello'][$i]['coloreScelto'];
    echo $_SESSION['carrello'][$i]['quantity'];
    echo '
    ';

    }
    ?>

    grazie mille!

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275

  3. #3
    ragionamento un po' complicato...
    vediamo se questo ti risolve qualcosa
    codice:
    <?
         function carrello($new=array()) {
                  if(!is_array($new)) {
                       return;
                  }
                  $update = false;
                  if(count($_SESSION['carrello']) > 0) {
                     foreach($_SESSION['carrello'] as $key=>$articolo) {
                             $result = array_diff_assoc($articolo, $new);
                             if(count($result) == 1 && array_key_exists('quantity', $result)) {
                                $_SESSION['carrello'][$key]['quantity'] += $new['quantity'];
                                $update = true;
                             }
                     }
                  }
    
                  if($update === false) {
                     array_push($_SESSION['carrello'], $new);
                  }
         }
    
    session_start();
    carrello(array('designScelto'=>$designScelto,'alienScelto'=>$alienScelto,'coloreScelto'=>$coloreScelto,'quantity'=>$quantity));
    
    print_r($_SESSION['carrello']);
    ?>
    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

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.