Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1

    [carrello] con array di sessione

    Ho cecato in rete ed anche nel forum ma nessun topic riportava un codice funzionante...
    Dovrei realizare un array multi dimensione che contenga:
    id_prodotto e quantita ed aggungere ad ogni invio il nuovo id_prodotto e relativo quantita, il tutto in $_SESSIN in modo da mantenere l'array degli articoli selezionati durante la navigazione.
    potreste farmi qualche esempio funzionante...????
    Grazie
    cichity74 :quipy:

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    immaginando un'id_prodotto univoco puoi fare una cosa di qst tipo:
    $_SESSION[id_prodotto] = $quantita;

    eventualmente, se preferisci:
    $_SESSION[]=array($id_prodotto,$quantita);
    think simple think ringo

  3. #3

    Grazie per il suggerimento.....

    ma ora ho un altro problema ...
    come posso increnetare l'indice in moda da assegniare i nuovi valori ad ogni $_POST attualmente tutto rimane ferma all'indice 0 e viene sempre ri aggiornato con il nuovo post.
    posto il codice per un riferimento comune:
    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Funzione Carrello</title>
    </head>
    <body>
    <?php 
    //--------------------------------------------------------------------------|
    //  FUNZIONE CARRELLO
    //--------------------------------------------------------------------------|
        
    function Carrello($id_prodotto,$quantita) {
                
    $_SESSION['id_prodotto']=array($id_prodotto);
                
    $_SESSION['quantita']=array($quantita);
                echo 
    'dim_carrello=' count($_SESSION['id_prodotto']);
        }
    //--------------------------------------------------------------------------|
    if (isset($_POST['action']) && $_POST['action'] == 'submitted') {
        
    $id_prodotto $_POST['id_prodotto'];
        
    $quantita $_POST['quantita'];
        
    Carrello($_POST['id_prodotto'],$_POST['quantita']);
    } else {
        
    // solo all'avvio.
        
    $id_prodotto NULL;
        
    $quantita NULL;
    // END $_POST
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
        id prodotto:<input name="id_prodotto" type="text" value="<?= $id_prodotto?>">
        quantita:<input name="quantita" type="text" value="<?= $quantita?>">
        <input type="hidden" name="action" value="submitted">
        <input name="submit" type="submit" value="INVIA">
    </form>
    <?php 
        
    /*--------------------------------------------------------- 
        Report Variabili
        -----------------------------------------------------------*/
        
    echo '<hr>';
        print 
    '<pre>';
            echo 
    '|<- $_POST - ================================ ->|
    '
    ;
            
    print_r($_POST);
            echo 
    '|<- $_GET - ================================= ->|
    '
    ;
            
    print_r($_GET);
            echo 
    '|<- $_SESSION - ============================= ->|
    '
    ;
            
    print_r($_SESSION);
        print 
    '</pre>';
        echo 
    '<hr>';
    ?>
    </body>
    </html>
    grazie cichity74 :quipy:

  4. #4
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    c'è qualcosa nel tuo codice che non mi è chiaro...

    Codice PHP:
    <?php
    session_start
    ();
    function 
    Carrello($id_prodotto,$quantita) {
        if (
    count($_SESSION['prodotti']) > 0){
            
    $temp=array('idprodotto'=>$id_prodotto,'quantità'=>$quantita);
            
    array_push($_SESSION['prodotti'],$temp);
        } else {
            
    $_SESSION['prodotti'][0]=array('idprodotto'=>$id_prodotto,quantità=>$quantita);
        }
    }
    Carrello("1","2");
    Carrello("10","50");
    print_r($_SESSION);
    ?>
    think simple think ringo

  5. #5
    Ti ringrazzio tantissimo per l'esempio riportato ora è tutto un pò piu chiaro.... alcune domande:
    1: c'è qualcosa nel tuo codice che non mi è chiaro... COSA..???
    2: impostando error_reporting (E_ALL);
    in avvo mi riporta i seguenti errori:
    1:Notice: Undefined index: on line 6
    2:Use of undefined constant quantità - assumed 'quantità' on line 10
    --------------------------------------------------------------------
    codice:
    <?php
    error_reporting (E_ALL); 
    
    session_start();
    function Carrello($id_prodotto,$quantita) {
        if (count($_SESSION['prodotti']) > 0){
            $temp=array('idprodotto'=>$id_prodotto,'quantità'=>$quantita);
             array_push($_SESSION['prodotti'],$temp);
        } else {
             $_SESSION['prodotti'][0]=array('idprodotto'=>$id_prodotto,quantità=>$quantita);
        }
    }
    Carrello("1","2");
    Carrello("10","50");
    	/*--------------------------------------------------------- 
    	Report Variabili
    	-----------------------------------------------------------*/
    	echo '<hr>';
    	print '<pre>';
    	print_r($_SESSION);
    	print '</pre>';
    	echo '<hr>';
    ?>
    3 ho fatto delle prove e sono riusito ad
    codice:
    <?php /*  -test-  */ 
    	//-----------------------------------------------------------
    	//test_1 Richiama elemento 1.
    	echo $_SESSION['prodotti'][1]['idprodotto'];
    	echo '
    ';
    	echo $_SESSION['prodotti'][1]['quantità']; 
    	//-----------------------------------------------------------
    	//test_2 Elimino elemento.
    	unset ($_SESSION['prodotti'][1]['idprodotto']);
    	unset ($_SESSION['prodotti'][1]['quantità']); 
    	//-----------------------------------------------------------
    	//test_3 cambio valore ad elemento.
    	$_SESSION['prodotti'][1]['idprodotto'] = '12';
    	$_SESSION['prodotti'][1]['quantità'] = '8';
    	//-----------------------------------------------------------
    ?>
    nel test 2 tramite unset() viene elininato il contenuto ma non l'indice come posso eliminare l'indice ed riordinare l'array???
    ------------------------------------------------------------
    4: ed ultima domanda.... :gren:
    Se volesso comparare il contenuto dell'array con un nuovo elemento
    prima di inserirlo, in modo che se l' idprodotto è gia presente aggiorna la quantita....?????
    con quale funzione posso comparare un valore con quelli dell'array???? :master:
    Grazie cichity74 :quipy:

  6. #6
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    codice:
    <?php
    error_reporting (E_ALL); 
    session_start();
    function esiste($id_prodotto){
    	for ($i=0;$i<count($_SESSION['prodotti']);$i++){
    		$flag= false;
    		if (in_array($id_prodotto,$_SESSION['prodotti'][$i]))
    			$flag = true;
    	}
    	return $flag;
    }
    function Carrello($id_prodotto,$quantita) {
    	if (array_key_exists('prodotti',$_SESSION)){
    		if (!esiste($id_prodotto)){
    			$temp=array('idprodotto'=>$id_prodotto,'quantità'=>$quantita);
    			array_push($_SESSION['prodotti'],$temp);
    		} else
    			echo "ID PRODOTTO ESISTENTE";
    	} else {
    		$_SESSION['prodotti'][0]=array('idprodotto'=>$id_prodotto,'quantità'=>$quantita);
    	}
    }
    
    
    unset($_SESSION['prodotti']);
    Carrello("1","2");
    Carrello("10","50");
    Carrello("10","20");
    Carrello("11","20");
    unset($_SESSION['prodotti'][1]);
    	/*--------------------------------------------------------- 
    	Report Variabili
    	-----------------------------------------------------------*/
    	echo '<hr>';
    	print '<pre>';
    	print_r($_SESSION);
    	print '</pre>';
    	echo '<hr>';
    ?>
    think simple think ringo

  7. #7
    prima di tutto ti ringrazio tantissimo per il tuo esempio
    ---------------------------------------------------------------------------------------------------------------------------------------------
    io stavo tentando in questo modo:
    CODE]
    <?php
    error_reporting (E_ALL);

    session_start();
    function Carrello($id_prodotto,$quantita) {
    if (array_key_exists('prodotti',$_SESSION)){
    //----------------------------------------------------------------
    for ($i = 0; $i <= count($_SESSION['prodotti']) ; $i++) {
    // verifico se idprodotto gia esiste
    if ($_SESSION['prodotti'][$i]['idprodotto'] == $id_prodotto) {
    $_SESSION['prodotti'][$i]['quantità'] += $quantita;
    break;
    } else {
    $temp=array('idprodotto'=>$id_prodotto,'quantità'= >$quantita);
    array_push($_SESSION['prodotti'],$temp);
    //break;
    }
    }
    //----------------------------------------------------------------
    } else {
    $_SESSION['prodotti'][0]=array('idprodotto'=>$id_prodotto,'quantità'=>$qua ntita);
    }
    }
    Carrello(1,2);
    Carrello(10,50);

    /*---------------------------------------------------------
    Report Variabili
    -----------------------------------------------------------*/
    echo '<hr>';
    print '<pre>';
    print_r($_SESSION);
    print '</pre>';
    echo '<hr>';
    ?>
    [/CODE]
    Aggiorna il valore quantita all'id [0] ed [1] ma continua ad generare nuevi indici......
    mi sapresti dire dove sbaglio..... :master:
    Grazie
    cichity74 :quipy:

  8. #8
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    Originariamente inviato da cichity74
    Aggiorna il valore quantita all'id [0] ed [1] ma continua ad generare nuevi indici......
    mi sapresti dire dove sbaglio..... :master:
    Grazie
    cichity74 :quipy:
    se id_prodotto esiste già vorresti semplicemente aggiungere la nuova quantità passata alla funzione, giusto??
    think simple think ringo

  9. #9
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    codice:
    <?php
    error_reporting (E_ALL); 
    session_start();
    function esiste($id_prodotto){
    	for ($i=0;$i<count($_SESSION['prodotti']);$i++){
    		$flag= false;
    		if  (in_array($id_prodotto,$_SESSION['prodotti'][$i])){
    			$flag = true;
    			break;
    		}
    	}
    	$flag=array('esiste'=>$flag,'pos'=>$i);
    	return $flag;
    }
    function Carrello($id_prodotto,$quantita) {
    	if  (array_key_exists('prodotti',$_SESSION)){
    		$flag=esiste($id_prodotto);
    		if (!$flag['esiste']){
    			$temp=array('idprodotto'=>$id_prodotto,'quantità'=>$quantita);
     			array_push($_SESSION['prodotti'],$temp);
    		} else {
    			$_SESSION['prodotti'][$flag['pos']]['quantità'] +=$quantita;
    			echo "ID PRODOTTO ESISTENTE, QUANTITA' AGGIUNTA";
    		}
    	} else {
     		$_SESSION['prodotti'][0]=array('idprodotto'=>$id_prodotto,'quantità'=>$quantita);
    	}
    }
    
    
    unset($_SESSION['prodotti']);
    Carrello("1","2");
    Carrello("10","50");
    Carrello("10","50");
    //unset($_SESSION['prodotti'][1]);
    	/*--------------------------------------------------------- 
    	Report Variabili
    	-----------------------------------------------------------*/
    	echo '<hr>';
    	print '<pre>';
    	print_r($_SESSION);
    	print '</pre>';
    	echo '<hr>';
    ?>
    think simple think ringo

  10. #10
    Ti ringrazio tantissino per l'ultima revisione (perfettamente funzionante)... :gren:
    ma vorrei imparare e capire dai miei sbagli....
    e non Ctrl+c / Ctrl+v
    potresti revisonare questo codice e dirmi dove sbaglio....
    il codice sguente aggiorna solo l'id [0] e continua a sfornare nuovi id
    grazie
    codice:
    <?php 
    error_reporting (E_ALL); 
    
    session_start(); 
    function Carrello($id_prodotto,$quantita) { 
    	if (array_key_exists('prodotti',$_SESSION)){ 
    		//---------------------------------------------------------------- 
    		for ($i = 0; $i <= count($_SESSION['prodotti']) ; $i++) { 
    			// verifico se idprodotto gia esiste 
    			if ($_SESSION['prodotti'][$i]['idprodotto'] == $id_prodotto) { 
    				$_SESSION['prodotti'][$i]['quantità'] += $quantita; 
    				//break; 
    			} else { 
    				$temp=array('idprodotto'=>$id_prodotto,'quantità'=>$quantita); 
    				array_push($_SESSION['prodotti'],$temp);
    				break; 
    			} 
    		} 
    	//---------------------------------------------------------------- 
    	} else { 
    	$_SESSION['prodotti'][0]=array('idprodotto'=>$id_prodotto,'quantità'=>$quantita); 
    	} 
    } 
    Carrello(1,2); 
    Carrello(10,50); 
    
    /*--------------------------------------------------------- 
    Report Variabili 
    -----------------------------------------------------------*/ 
    echo '<hr>'; 
    print '<pre>'; 
    print_r($_SESSION); 
    print '</pre>'; 
    echo '<hr>'; 
    ?>

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.