Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    54

    Carrello PHP e sessioni

    Ragazzi mi serve aiuto.. ho cercato nelle decine di topic gia' simili, ma non ho trovato la soluzione...
    Sto realizzando un carrello in PHP con le sessioni, senza database...

    Utilizzo 3 pagine:

    -lista-prodotti.php , elenca tutti i prodotti con relativo bottone "aggiungi carrello".
    -memorizza.php , si occupa di avviare le sessioni in base al prodotto
    -carrello.php, mostra tutto il carrello.

    il problema e' che memorizza.php salva correttamente il titolo del libro che ho aggiunto, ma mi mostra infinite x nella pagina...
    la paginazione vorrei che fosse cosi:

    x Titolo libro, prezzo
    x Titolo libro 2, prezzo
    x Titolo libro 3, prezzo

    Invece mi mostra le x infinite...

    I codici che uso sono i seguenti:

    lista-prodotti.php
    codice:
    <?php
    session_start();
    include('pagine/config.php');
    $libri = mysql_query("SELECT * FROM libri");
    while ($row = mysql_fetch_array($libri)) {
    	echo "$row[titolo]
    
    <form method=\"POST\" action=\"memorizza.php\">
    <input type=\"image\" name=\"aggiungi\" src=\"immagini/carrello.gif\" border=\"0\">
    <input type=\"text\" name=\"quantita\" maxlength=\"2\" style=\"width:20; text-align:center\">
    <input type=\"hidden\" name=\"prezzo\" value=\"$row[prezzo]\">
    <input type=\"hidden\" name=\"titolo\" value=\"$row[titolo]\">
    <input type=\"hidden\" name=\"autore\" value=\"$row[autore]\">
    <input type=\"hidden\" name=\"copertina\" value=\"$row[copertina]\">
    </form>
    ";
    }
    ?>
    memorizza.php
    codice:
    <?php
    session_start();
    if (ctype_digit($_REQUEST['quantita']))
    {
    $riga = $_SESSION["riga"];
    $riga++;
    
    $_SESSION["prezzo[$riga]"] = $_REQUEST["prezzo"]; // memorizzo il prezzo nel vettore SESSIONE prezzo
    $_SESSION["titolo[$riga]"] = $_REQUEST["titolo"]; // memorizzo il titolo nel vettore SESSIONE testomarca
    $_SESSION["autore[$riga]"] = $_REQUEST["autore"]; // memorizzo autore nel vettore SESSIONE descrizione
    $_SESSION["copertina[$riga]"] = $_REQUEST["copertina"]; // memorizzo copertina nel vettore SESSIONE descrizione
    
    $_SESSION["riga"] = $riga;
    }
    header("Location: carrello.php");
    ?>
    carrello.php
    codice:
    <?php
    session_start();
    $_SESSION["codice[0]"] = "Carrello vuoto!";
    if ($_SESSION["riga"] == 0) printf($_SESSION["codice[0]"]);
    if ($_SESSION["riga"] > 0)
    {
    // stampa dei prodotti scelti
    for ($riga >= 1; $riga <= $_SESSION["riga"]; $riga++)
    { printf($_SESSION["titolo[$riga]"]);?>
    x<? printf($_SESSION["quantita[$riga]"]); ?>
    
    <? } } ?>

  2. #2
    allora..... non ho capito come fa il il file memorizza.php a funzionare, visto che nn c'è il submit.
    seconda cosa: ti consiglio di iniziare a lavorare con gli oggetti, ti semplifichi la vita.....ci sono parecchi errori nei codici che hai postato.
    in linea di massima dovresti creare 2 classi:

    Libri (ovvero una classe che si occupi di creare e memorizzare all'interno di ogni oggetto libro le informazioni inierenti ad ogni libro)

    Carrello (ovvero una classe che si occupi di memorizzare all'interno di un oggetto istanziato una lista di libri)

    e poi dovresti creare una pagina mostracarrello.php che si occupi della visualizzazione

    se non ti è chiaro fammi sapere che ti posto un esempio
    V.I.S.T.A. --> Virus Inside, Switch To Apple

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    54
    Ciao mr.click grazie mille, gentilissimo...
    Per il carrello ho risolto usando un altro codice che ho trovato in rete, semplicissimo... mi studiero' quello.

    Riguardo l'esempio saresti cosi gentile da postarmelo? grazie

  4. #4
    questo è il codice di un progetto che ho fatto tempo fa....era per una videoteca online


    film.class.php
    Codice PHP:
    <?php
      
    class Film 
    {
             private 
    $id_film;
         private 
    $titolo;
         private 
    $regista;
         private 
    $anno;
         private 
    $genere;      
         private 
    $durata
         private 
    $prezzo;      
         private 
    $n_copie
         
         public function 
    __construct() {}
         
         
    //set get id_film
         
    public function setIDfilm($id)
         {
             
    $this->id_film=$id;
         }
         
         public function 
    getIDfilm()
         {
             return 
    $this->id_film;
         }
         
         
    //set get titolo
         
    public function setTitolo($tit)
         {
            if (
    $tit=="") {
                
    $this->titolo="undefined";
            }
            else 
    $this->titolo=$tit;
         }
         
         public function 
    getTitolo()
         {
             return 
    $this->titolo;
         }
         
         
    //set get regista
         
    public function setRegista($reg)
         {
            if (
    $reg=="") {
                
    $this->regista="undefined";
            }
            else 
    $this->regista $reg;
        }
        
        public function 
    getRegista ()
        {
            return 
    $this->regista;
        }
         
         
    //set get anno
         
    public function setAnno($year)
         {
         if (
    $year=="") {
             
    $this->anno="undefined";
             }
         else 
    $this->anno=$year;
         }
         
         public function 
    getAnno()
         {
             return 
    $this->anno;
         }
         
         
         
    //set get genere
         
    public function setGenere($tipologia)
         {
            if (
    $tipologia=="") {
                
    $this->genere="undefined";
             }
            else 
    $this->genere=$tipologia;
         }
         
         public function 
    getGenere()
         {
             return 
    $this->genere;
         }
         
         
    //set get durata
         
    public function setDurata($min)
         {
            if (
    $min=="") {
                
    $this->durata="undefined";
            }
            else 
    $this->durata=$min;
         }
         
         public function 
    getDurata()
         {
             return 
    $this->durata;
         }
         
         
    //set e get copie
         
    public function setCopie($copie)
         {
            if (
    $copies=="") {
                
    $this->n_copie="no quantit‡";
            }
            else 
    $this->n_copie=$copie;
         }
         
         public function 
    getCopies()
         {
             return 
    $this->n_copie;
         }
         
         
    //set e get prezzo
         
    public function setPrezzo($eur)
         {
            
    $this->prezzo=$eur;
         }
         
         public function 
    getPrezzo()
         {
             return 
    $this->prezzo;
         }
         
    }
    ?>

    cart.class.php
    Codice PHP:
    <?php

    //inclusione della classe film
    require_once('film.class.php');

    class 
    cart {

        private 
    $mov = array();
        private 
    $qt = array();
        private 
    $numeroarticoli;
        
        public function 
    __construct() { 
        
            
    $this->numeroarticoli 0;
        }

        public function 
    getNumeroarticoli() { return $this->numeroarticoli; }
        
        public function 
    getMov() { return $this->mov; }
        
        public function 
    getQt() { return $this->qt; }
        
        public function 
    add_film($mov) {

            
    //Ottengo la lunghezza dell'array
            
    $position=count($this->mov);
            
    $trovato=0;

            for (
    $i=0;$i<count($this->mov);$i++) {
                
    //Verifico se il prodotto √® presente nel carrello
                
    if ($this->mov[$i]==$mov$trovato=1;
            }

            
    //Se il prodotto √® gi√† presente aggiorno quantit√† e variante
            
    if ($trovato==1$this->aggiungi_copia($mov);
            
            else {
    //altrimenti aggiungo il prodotto al carrello
                
                
    $this->mov[$position]=$mov;
                
    $this->qt[$position]=1;
                
    $this->numeroarticoli $this->numeroarticoli 1;
            }

        }
        
        public function 
    aggiungi_copia($mov) {

            
    $position = -1;

            for (
    $i=0;$i<count($this->mov);$i++) {
                
    //Prelevo la posizione del prodotto nell'array
                
    if ($this->mov[$i]==$mov$position=$i;
            }
        
            if (
    $position==-1) echo "Impossibile aggiornare il prodotto,prodotto non trovato!

    "
    ;
            else {
            
    //Aggiorno le informazioni del prodotto
            
    $this->qt[$position]++;
            
    $this->numeroarticoli $this->numeroarticoli 1;
            }
            

        }
        
        public function 
    delete_film($mov) {

            
    $position = -1;

            for (
    $i=0;$i<count($this->mov);$i++) {
                
    //Prelevo la posizione del prodotto nell'array
                
    if ($this->mov[$i]==$mov$position=$i;
            }

            if (
    $position!=-1) {

                
    $this->numeroarticoli $this->numeroarticoli -($this->qt[$position]);
                
    $cont=0;

                for (
    $i=0;$i<count($this->mov);$i++) {

                    if (
    $this->mov[$i]!=$mov) {
                    
                    
    //creo 2 nuovi array in cui andro a copiare $mov, e $qt  tutti gli indici meno l'indice da eliminare
                    
    $app_mov[$cont]=$this->mov[$i];
                    
    $app_qt[$cont]=$this->qt[$i];
                    
    $cont++;
                    }

                }
                
                
    //rimuovo il contenuto degli array
                
    unset($this->mov);
                unset(
    $this->qt);

                for (
    $i=0;$i<count($app_mov);$i++) {
                    
                    
    //riverso il contenuto degli array sopra creati in $mov e $qt
                    
    $this->mov[$i]=$app_mov[$i];
                    
    $this->qt[$i]=$app_qt[$i];
                }

            }
            else echo 
    "Impossibile cancellare il prodotto,prodotto non trovato!

    "
    ;

        }
    }

    ?>
    mostra_carrello.php
    Codice PHP:
    <?php
        
        
    //avvio della sessione
        
    session_start();

        
    //inclusione file impostazione smarty e creazione oggetto smarty
        
    require('setup.php');
        
    $smarty = new Smarty_OMR;
        require_once (
    'blowfish.php');

        require_once(
    'film.class.php');
        require_once(
    'cart.class.php');
        
    //inclusione del file redirect
        
    require('redirect.php');
        
        if (isset(
    $_SESSION['spesa'])){
            
    // trasformazione della stringa variabile di sessione nell'oggetto carrello
            
    $car unserialize($_SESSION['spesa']);
            if (
    $car->getNumeroarticoli()==0) {
                
                
    $smarty->display('index_header.tpl');
                
    $smarty->display('index_left.tpl');
                
    $smarty->display('carrellovuoto.tpl');
                if(isset(
    $_COOKIE['login'])) {

                    
    $user $_COOKIE['login'];
                    
    $key="OMR";
                    
    $username PMA_blowfish_decrypt($user$key);
                    
    $smarty->assign ('usernameonline'$username);
                    
    $smarty->caching false;
                    
    $smarty->display('index_right_login.tpl');
                }
                else {

                    
    $smarty->display('index_right.tpl');
                }
                
    $smarty->display('index_bottom.tpl');
            }
            else {

                
    $smarty->assign('numeroarticoli',$car->getNumeroarticoli());
                
    $f=$car->getMov(); //contiene l'array dei film memorizzati nel carrello e quindi un array di oggetti di classe film
                
    $qta=$car->getQt(); //contiene l'array relativo alle quantita di ogni film
                
    $numerocopie 0;
                
    $totaledapagare 0;
                
    $numerofilm 0;
                
                foreach (
    $f as $j => $value ) {   //j contiene l'indice della variabile corrente mentre value contiene il valore della variabile corrente
                
                    
    $id_film[]= $value->getIDfilm();
                    
    $titolo[] = $value->getTitolo();
                    
    $regista[] = $value->getRegista();
                    
    $genere[] = $value->getGenere();
                    
    $anno[] = $value->getAnno();
                    
    $prezzo[] = $value->getPrezzo();
                    
    $durata[] = $value->getDurata();
                    
    $copie[]=$qta[$j];
                    
    $totprezzo[]=$qta[$j]*$value->getPrezzo();
                    
    $totaledapagare $totaledapagare + ($qta[$j]*$value->getPrezzo());
                    
    $numerocopie $numerocopie + ($qta[$j]);
                    
    $numerofilm $numerofilm 1;
                    
                    
    $smarty->assign('id_film',$id_film);
                    
    $smarty->assign('titolo',$titolo);
                    
    $smarty->assign('genere',$genere);
                    
    $smarty->assign('anno',$anno);
                    
    $smarty->assign('prezzo',$prezzo);
                    
    $smarty->assign('totaledapagare',$totaledapagare);
                    
    $smarty->assign('durata',$durata);
                    
    $smarty->assign('regista',$regista);
                    
    $smarty->assign('copie',$copie);
                    
    $smarty->assign('totprezzo',$totprezzo);
                    
    $smarty->assign('numerocopie',$numerocopie);
                    
    $smarty->assign('numerofilm',$numerofilm);
                    
                }
                
                
    $smarty->display('index_header.tpl');
                
    $smarty->display('index_left.tpl');
                
    $smarty->caching false;
                
    $smarty->display('carrello.tpl');
                if(isset(
    $_COOKIE['login'])) {

                    
    $user $_COOKIE['login'];
                    
    $key="OMR";
                    
    $username PMA_blowfish_decrypt($user$key);
                    
    $smarty->assign ('usernameonline'$username);
                    
    $smarty->caching false;
                    
    $smarty->display('index_right_login.tpl');
                }
                else {

                    
    $smarty->display('index_right.tpl');
                }
                
    $smarty->display('index_bottom.tpl');
            }
        }
        else {
        
            
    $smarty->display('index_header.tpl');
            
    $smarty->display('index_left.tpl');
            
    $smarty->display('carrellovuoto.tpl');
            if(isset(
    $_COOKIE['login'])) {

                
    $user $_COOKIE['login'];
                
    $key="OMR";
                
    $username PMA_blowfish_decrypt($user$key);
                
    $smarty->assign ('usernameonline'$username);
                
    $smarty->caching false;
                
    $smarty->display('index_right_login.tpl');
            }
            else {
                    
    $smarty->display('index_right.tpl');
            }
            
    $smarty->display('index_bottom.tpl');
        }
    ?>
    in questo progetto avevo fatto uso di un motore per la gestione dei template (SMARTY) e di una libreria per la criptazione dei dati (BLOWFISH), quindi se non ti è chiaro tutto quello che c'è nel file mostra_carrello.php è normale
    V.I.S.T.A. --> Virus Inside, Switch To Apple

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    54
    infatti si vede che e' parte di smarty... grazie, studiero' anche questo

    Grazie ancora, problema risolto!

    Per chi ha la mia stessa difficolta' basta che cercate con google "php cart with session" ed esce quello che ho trovato io

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    54
    altro aiuto piccolino... non riesco ad inviare tramite email gli ordini scelti dal cliente...

    ho il file delle funzioni (funzioni.php) che contiene la seguente funzione:

    codice:
    function showOrdiniCart() {
    	global $db;
    	$cart = $_SESSION['cart'];
    	if ($cart) {
    		$items = explode(',',$cart);
    		$contents = array();
    		foreach ($items as $item) {
    			$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
    		}
    		$output[] = '<form action="http://***********ordina.html" method="post" id="cart">';
    		$output[] = '<table>';
    		foreach ($contents as $id=>$qty) {
    			$sql = 'SELECT * FROM libri WHERE id = '.$id;
    			$result = $db->query($sql);
    			$row = $result->fetch();
    			extract($row);
    			$titolo = str_replace("_"," ",$titolo);
    			$output[] = '<tr>';
    			$output[] = '<td>'.$titolo.' di '.$autore.'</td>';
    			$output[] = '<td>Quantita\': '.$qty.'</td>';
    			$output[] = '<td>Prezzo: &euro;'.$prezzo. '</td>';
    			$total += $prezzo * $qty;
    			$output[] = '</tr>';
    		}
    		$output[] = '</table>';
    		$output[] = '
    
    Totale: &euro;'.$total.'</p>
    
    ';
    		$output[] = '<input type="submit" value="ordina prodotti">';
    		$output[] = '</form>';
    	} else {
    		$output[] = '';
    	}
    	return join('',$output);
    }
    ?>
    questo mi mostra gli articoli che stanno per essere ordinati cliccando il tasto "ordina" con l'azione ordina.php

    Ordina.php dovrebbe prendere i dati della sessione e inviarli via email ...
    non ci riesco

    In pratica, via email vorrei che il sistema invii il riepilogo dell'ordine... ma non riesco a capire come fare...

    ho fatto var_dump($_SESSION) e mi esce questo:

    codice:
    array(1) { ["cart"]=> &string(2) "64" }

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.