Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 36
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    125

    Problema pulsante cancella del carrello

    Buonasera a tutti,

    ho una pagina (atti.php) in cui dò la possibilità all'utente di personalizzare la sua cartellina, riempiendo dei campi di testo e scegliendo dei valori da menù a tendina.
    Da atti.php, mando a riepilogo.php.
    Qui l'utente visualizza un riepilogo delle scelte fatte e se vuole inserisce il prodotto scelto in un carrello.
    In carrello.php, dò all'utente la possibilità di scegliere se continuare la spesa ed aggiungere altri prodotti al carrello, oppure se avviare la procedura di checkout andando in cassa.
    Supponiamo che la persona scelga di mettere più di un prodotto nel carrello, memorizzo i vari prodotti in un array, poichè mi serve recuperarli successivamente.
    Ciascun prodotto, infatti, una volta terminata la procedura di checkout, verrà scritto in una tabella ordini del mio DB; in più per ogni prodotto partirà una mail indirizzata al proprietario del negozio ed un'altra al compratore, con il riepilogo di ciò che si è scelto.

    Così facendo però, si genera un problema con il pulsante cancella del carrello stesso.
    Nel carrello, infatti, c'è un pulsante che dà la possibilità all'utente di togliere un prodotto.
    In effetti, quando viene operata questa scelta, il prodotto sparisce sì dalla visualizzazione del carrello, ma non si toglie dall'array; dunque quando si completa la procedura di checkout, vengono scritte nel DB delle righe corrispondenti ai prodotti eliminati dall'utente dal carrello ed allo stesso modo partono le mail.

    Posto il codice dell'array e quello del carrello, chiedendovi la cortesia di aiutarmi a risolvere questo problema che, tra l'altro, si genera anche premendo il pulsante aggiorna del carrello stesso.

    Codice array:

    Codice PHP:
    if (!isset($_SESSION['prodotti'])) $_SESSION['prodotti'] = array();     
    $prodotti $_SESSION['prodotti'];     
    $prodotto = array('nomecart' => $f['nome'],                       
    'colorecarta' => $_POST['colorecarta'],                       
    'colorestampa' => $_POST['colorestampa'],                       
    'carattere' => $_POST['carattere'],                       
    'quantita' => $_POST['quantita'],                       
    'titolo' => $_POST['titolo'],                        
    'caratteretitolo' => $_POST['caratteretitolo'],                       
    'sottotitolo' => $_POST['sottotitolo'],                       
    'caratteresottotitolo' => $_POST['caratteresottotitolo'],                       'indirizzocart' => $_POST['indirizzocart'],                       
    'carattereindirizzocart' => $_POST['carattereindirizzocart'],                       'telfaxcell' => $_POST['telfaxcell'],                       
    'caratteretelfaxcell' => $_POST['caratteretelfaxcell'],                        'emailsito' => $_POST['emailsito'],                        
    'carattereemailsito' => $_POST['carattereemailsito'],                        
    'subtotaleco' => $f['prezzo'],                       
    'modello' => $_POST['modello'],                       
    'layout' => $_POST['layout']);     
    $prodotti[] = $prodotto;      
    $_SESSION['prodotti'] = $prodotti
    Codice carrello:

    Codice PHP:
    $carrello $_SESSION['carrello'];     
    if(@isset(
    $_GET['action'])) {        
    $action $_GET['action'];       
    switch (
    $action)       
    {         
    case 
    'aggiungi':         
    if (
    $carrello) {           
    $carrello .= ','.$_GET['id'];         
    } else {           
    $carrello $_GET['id'];       
    }         
    break;         
    case 
    'cancella':           
    if (
    $carrello) {             
    $prodotti = @explode(',',$carrello);             
    $acquisto '';             
    foreach (
    $prodotti as $prodotto) {               
    if (
    $_GET['id'] != $prodotto) {                 
    if (
    $acquisto != '') {                   
    $acquisto .= ','.$prodotto;                 
    } else {                   
    $acquisto $prodotto;                     
    }                     
    }                  
    }                 
    $carrello $acquisto;            
    }              
    break;          
    case 
    'aggiorna':            
    if (
    $carrello) {                
    $acquisto '';                
    foreach (
    $_POST as $key=>$value) {                
    if (@
    stristr($key,'quantita')) {                    
    $id = @str_replace('quantita','',$key);                    
    $prodotti = ($acquisto != '') ?                     
    @
    explode(',',$acquisto) : @explode(',',$carrello);                    
    $acquisto '';                    
    foreach (
    $prodotti as $prodotto) {                      
    if (
    $id != $prodotto) {                              
    if (
    $acquisto != '') {                          
    $acquisto .= ','.$prodotto;                          
    } else {                            
    $acquisto $prodotto;                            
    }                        
    }                        
    }                        
    for (
    $i=1;$i<=$value;$i++) {                        
    if (
    $acquisto != '') {                            
    $acquisto .= ','.$id;                        
    } else {                              
    $acquisto $id;                          
    }                          
    }                      
    }                      
    }                 
    }                 
    $carrello $acquisto;                 
    break;                 
    }             
    }   
    $_SESSION['carrello'] = $carrello
    Scusate la lunghezza del mio messaggio, ma ho cercato di essere quanto più dettagliato possibile.

    Grazie,
    Marco

  2. #2
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Mi stava venendo il mal di testa a cercare di capire la logica che hai messo in piedi. Mi pare ti capire che stai gestendo l'eliminazione attraverso un campo denominato acquisto se la vista non mi inganno e questo spiega il perché l'elemento non viene eliminato ovvero non stai effettuando nessuna unset. Unset è il metodo da usare per rimuovere elementi da un array.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    125
    Purtroppo non ho gran dimestichezza con il PHP e la logica è quella degli script che prendo fatti e tanto di adattare alle mie necessitá.
    L'unset è una funzione che conosco e che ho utilizzato al termine del checkout per svuotare il carrello.
    Presumendo di doverla utilizzare anche in questo caso, ho creduto che andasse nello switch case cancella del carrello. Ho provato ma senza successo; forse sbaglio qualcosa io nella sintassi.
    Potreste per favore cedrini dove devo mettere l'unset?

    Grazie,
    Marco

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    125
    Mi aiutate per favore?

  5. #5
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Scusa ma ero a Nottingham e non avevo modo i connettermi. Domani ti butto giù scrivo due righe di codice.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    125
    Grazie per la disponibilità.
    Se ti è possibile, ti chiedo la cortesia di darmi una mano anche per il pulsante aggiornamento del carrello.
    Sono veramente in difficoltà

    Grazie mille,
    Marco

  7. #7
    Unset è il metodo da usare per rimuovere elementi da un array.[im*g]http://www.###########/g.gif[/img]

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    125
    Help Mr. _debo please

  9. #9
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Questa modifica dovrebbe risolvere il problema della cancellazione:
    Codice PHP:
            case 'cancella':
                if (
    $carrello) {
                    
    $prodotti = @explode(',',$carrello);
                    foreach (
    $prodotti as $prodotto) {
                        if (
    $_GET['id'] == $prodotto) {
                            unset(
    $prodotti[$_GET['id']]);
                    }
                    
    $carrello implode(',',$prodotti);
                }
                break; 

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    125
    Purtroppo non funziona _debo.
    Non mi togli più neanche i prodotti dal carrello.

    Aiutooooooo!!!!!!!!!

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.