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

    Controllo sul carrello di taglia e colore

    Ciao a tutti,
    nel mio carrello, usando le sessioni, faccio un controllo se il prodotto è già stato inserito allora non me lo deve reinserire.

    Per farlo utilizzo la funzione "addtocart" per aggiungere nel carrello il prodotto e la funzione "product_exists" per verificare che esista quel prodotto con riferimento "PID".

    Il mio problema è questo, ok non mi deve inserire lo stesso prodotto (quindi con lo stesso PID) due volte nel carrello, ma se il prodotto ha lo stesso PID ma taglia o colore diverso allora deve aggiungermelo, e qui mi pianto, ho provato in tutti i modi a modificare la "product_exists" ma proprio non ci salto fuori.

    Avete qualche idea ?
    Grazie.


    codice:
    	function addtocart($pid,$q,$taglia,$colore){
    	$q=1;
    		if($pid<1 or $q<1) return;
    		
    		if(is_array($_SESSION['cart'])){
    			if(product_exists($pid)) return;
    			$max=count($_SESSION['cart']);
    			$_SESSION['cart'][$max]['productid']=$pid;
    			$_SESSION['cart'][$max]['qty']=$q;
    			$_SESSION['cart'][$max]['tgy']=$taglia;
    			$_SESSION['cart'][$max]['cuy']=$colore;
    			$_SESSION['cart'][$max]['cod']=$codice;
    		}
    		else{
    			$_SESSION['cart']=array();
    			$_SESSION['cart'][0]['productid']=$pid;
    			$_SESSION['cart'][0]['qty']=$q;
    			$_SESSION['cart'][0]['tgy']=$taglia;
    			$_SESSION['cart'][0]['cuy']=$colore;
    			$_SESSION['cart'][0]['cod']=$codice;
    		}
    	}
    
    	function product_exists($pid){
    		$pid=intval($pid);
    		$max=count($_SESSION['cart']);
    		$flag=0;
    		for($i=0;$i<$max;$i++){
    			if($pid==$_SESSION['cart'][$i]['productid']){
    				$flag=1;
    				break;
    			}
    		}
    		return $flag;
    	}
    Informazione finanziaria: http://www.dominosolutions.it

  2. #2
    Ciao,
    beh è abbastanza banale la questione
    se vui controllare che (oltre al pid ) taglia e colore siano uguali
    devi aggiungere taglia e colore come parametri alla funzione di controllo
    e poi devi aggiungere il controllo su taglia e colore nella funzione di controllo stessa...

  3. #3
    Eh sarà pure banale ma è da ieri pomeriggio che ci sto provando. O mi aggiunge al carrello due prodotti identici, oppure nessuno .

    Non è che mi daresti una mano a capire come modificare questa funzione ?

    grazie

    codice:
    function product_exists($pid){
    		$pid=intval($pid);
    		$max=count($_SESSION['cart']);
    		$flag=0;
    		for($i=0;$i<$max;$i++){
    			if($pid==$_SESSION['cart'][$i]['productid']){
    				$flag=1;
    				break;
    			}
    		}
    		return $flag;
    	}
    Originariamente inviato da philbert
    Ciao,
    beh è abbastanza banale la questione
    se vui controllare che (oltre al pid ) taglia e colore siano uguali
    devi aggiungere taglia e colore come parametri alla funzione di controllo
    e poi devi aggiungere il controllo su taglia e colore nella funzione di controllo stessa...
    Informazione finanziaria: http://www.dominosolutions.it

  4. #4
    Originariamente inviato da XanderX

    Non è che mi daresti una mano a capire come modificare questa funzione ?

    Ok.
    Non bisogna modificare molto dovrebbe proprio essere sufficiente fare quello che ti ho detto prima, più o meno così:

    Codice PHP:
    function addtocart($pid,$q,$taglia,$colore){
        
    $q=1;
            if(
    $pid<or $q<1) return;
            
            if(
    is_array($_SESSION['cart'])){
                            if(
    product_exists($pid,$taglia,$colore)) return; //aggiung. tag e col
                
    $max=count($_SESSION['cart']);
                
    $_SESSION['cart'][$max]['productid']=$pid;
                
    $_SESSION['cart'][$max]['qty']=$q;
                
    $_SESSION['cart'][$max]['tgy']=$taglia;
                
    $_SESSION['cart'][$max]['cuy']=$colore;
                
    $_SESSION['cart'][$max]['cod']=$codice;
            }
            else{
                
    $_SESSION['cart']=array();
                
    $_SESSION['cart'][0]['productid']=$pid;
                
    $_SESSION['cart'][0]['qty']=$q;
                
    $_SESSION['cart'][0]['tgy']=$taglia;
                
    $_SESSION['cart'][0]['cuy']=$colore;
                
    $_SESSION['cart'][0]['cod']=$codice;
            }
        }


        function 
    product_exists($pid,$taglia,$colore){ //aggiungiamo tag e colore
            
    $pid=intval($pid);
            
    $max=count($_SESSION['cart']);
            
    $flag=0;
            for(
    $i=0;$i<$max;$i++){
                            if(
    $pid==$_SESSION['cart'][$i]['productid']
                               && 
    $taglia == $_SESSION['cart'][$i]['tgy']) //aggiungiamo ctr su tg
                               
    && $colore == $_SESSION['cuy'][$i]['tgy']){//e ctr sul colore
                    
    $flag=1;
                    break;
                }
            }
            return 
    $flag;
        } 

  5. #5
    Fantastico, ora ho capito e funziona bene, per correttezza posto solo il codice corretto perchè c'erano un paio di errori ma cavolate, il succo è che funziona benissimo, ti ringrazio molto.

    codice:
    function addtocart($pid,$q,$taglia,$colore){
        $q=1;
            if($pid<1 or $q<1) return;
            
            if(is_array($_SESSION['cart'])){
                if(product_exists($pid,$colore,$taglia)) return;
                $max=count($_SESSION['cart']);
                $_SESSION['cart'][$max]['productid']=$pid;
                $_SESSION['cart'][$max]['qty']=$q;
                $_SESSION['cart'][$max]['tgy']=$taglia;
                $_SESSION['cart'][$max]['cuy']=$colore;
                $_SESSION['cart'][$max]['cod']=$codice;
            }
            else{
                $_SESSION['cart']=array();
                $_SESSION['cart'][0]['productid']=$pid;
                $_SESSION['cart'][0]['qty']=$q;
                $_SESSION['cart'][0]['tgy']=$taglia;
                $_SESSION['cart'][0]['cuy']=$colore;
                $_SESSION['cart'][0]['cod']=$codice;
            }
        }
    
    
        function product_exists($pid,$colore,$taglia){
            $pid=intval($pid);
            $max=count($_SESSION['cart']);
            $flag=0;
            for($i=0;$i<$max;$i++){
    		if(($pid==$_SESSION['cart'][$i]['productid']) && ($colore == $_SESSION['cart'][$i]['cuy']) && ($taglia == $_SESSION['cart'][$i]['tgy'])) {
    		$flag=1;
                    break;
                }
            }
            return $flag;
        }
    Informazione finanziaria: http://www.dominosolutions.it

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.