Viewing file: class.carrello.php (11.51 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?
/*
* analisi e note
quando un utente visita il sito il carrello normalmente non esiste. Nel momento in cui inserisce il primo oggetto
il carrello viene creato e memorizzato nella sessione dell'utente e automaticamente e riempito con l'oggetto selezionato.
Il parametro Tshop->loginObbligatorio definisce se la creazione del carrello è consentita a tutti gli utenti
o solamente agli utenti che hanno fatto il login (quindi già registrati).
*/
class TshopSTD extends Tshop
{
public function stampaDettagliCarrello()
{
$lCarrelloVuoto=true;
if (isset($_SESSION['carrello']))
{
$lCarrelloVuoto=false;
$carrelloTemp = new Tcarrello();
echo "Contenuto del carrello<br /><br />";
$carrelloTemp = unserialize($_SESSION['carrello']);
$nElementi=count($carrelloTemp->carrello);
echo "numero voci: ".$nElementi.'<br />';
//scorro tuto l'array per stamparne il contenuto
for($i=0;$i<$nElementi;$i++)
{
/*
sono costretto a verificare l'esistenza di ogni elemento in quanto la cancellazione di una voce
dal carrello lascia un buco e non riordina l'array. questo crea un problema quando il ciclo
passa su un "buco" in quanto è una variabile che non esiste.
*/
if ($carrelloTemp->carrello[$i]->qta>0)
{
echo "idprodotto: ".$carrelloTemp->carrello[$i]->idProdotto.'<br />';
echo "qta: ".$carrelloTemp->carrello[$i]->qta.'<br /><br />';
}
}
}
if ($lCarrelloVuoto)
{
//qui il carrello non esiste oppure è vuoto quindi stampo il messaggio che avvisa che il carrello non contiene elementi
//todo: sostituire con la formattazione giusta
echo "carrello vuoto";
}
}
public function stampaDettagliCarrelloLista()
{
$lCarrelloVuoto=true;
if (isset($_SESSION['carrello']))
{
$totalecarrello = 0;
$lCarrelloVuoto=false;
$carrelloTemp = new Tcarrello();
$carrelloTemp = unserialize($_SESSION['carrello']);
$nElementi=count($carrelloTemp->carrello);
$prodottiValidi = 0;
//scorro tuto l'array per stamparne il contenuto
for($i=0;$i<$nElementi;$i++)
{
/*
sono costretto a verificare l'esistenza di ogni elemento in quanto la cancellazione di una voce
dal carrello lascia un buco e non riordina l'array. questo crea un problema quando il ciclo
passa su un "buco" in quanto è una variabile che non esiste.
*/
if ($carrelloTemp->carrello[$i]->qta>0)
{
$sql = 'select
contenuti.id,
contenuti.prezzo,
contenuti.codice_articolo,
contenuti.titolo_it AS nome_prodotto,
contenuti.desc_breve_it,
contenuti.desc_lunga_it,
contenuti.id_categoria,
quantita.titolo as titoloQuantita,
durata.titolo as titoloDurata,
categorie_contenuti.titolo_it AS titolo_categoria
from contenuti
inner join categorie_contenuti ON contenuti.id_categoria=categorie_contenuti.id
inner join durata ON contenuti.id_durata=durata.id
inner join quantita ON contenuti.id_quantita=quantita.id
where contenuti.id = '.$carrelloTemp->carrello[$i]->idProdotto;
GetRecord( $sql , $row);
$totaleProdotto=$row['prezzo']*$carrelloTemp->carrello[$i]->qta;
?>
<div class="top-cart-item clearfix">
<div class="top-cart-item-desc">
<a href="#"><?=$row['titolo_categoria']?><br /><?=$row['titoloQuantita']?> <?=$row['titoloDurata']?></a>
<span class="top-cart-item-price"><?=number_format($row['prezzo'],2,',','.')?> Euro</span>
<span class="top-cart-item-quantity">x <?echo $carrelloTemp->carrello[$i]->qta?></span>
</div>
</div>
<?
$totalecarrello = $totalecarrello+$totaleProdotto;
$prodottiValidi++;
}
}
if ($prodottiValidi>0)
{?>
<div class="top-cart-action clearfix">
<span class="fleft top-checkout-price"><?=number_format($totalecarrello,2,',','.')?> Euro</span>
<a href="carrello.php" class="button button-small nomargin fright" style="color: #fff;">ORDINA</a>
</div>
<?
}
else
{
$lCarrelloVuoto = true;
}
}
if ($lCarrelloVuoto)
{
//qui il carrello non esiste oppure è vuoto quindi stampo il messaggio che avvisa che il carrello non contiene elementi
//todo: sostituire con la formattazione giusta
echo "<li>Nessun articolo presente nel carrello</li>";
echo"<li> </li>";
}
}
public function stampaNumeroProdotti()
{
$lCarrelloVuoto=true;
if (isset($_SESSION['carrello']))
{
$lCarrelloVuoto=false;
$carrelloTemp = new Tcarrello();
$carrelloTemp = unserialize($_SESSION['carrello']);
$nElementi=count($carrelloTemp->carrello);
//scorro tuto l'array per stamparne il contenuto
$qtaTotale = 0;
for($i=0;$i<$nElementi;$i++)
{
/*
sono costretto a verificare l'esistenza di ogni elemento in quanto la cancellazione di una voce
dal carrello lascia un buco e non riordina l'array. questo crea un problema quando il ciclo
passa su un "buco" in quanto è una variabile che non esiste.
*/
if ($carrelloTemp->carrello[$i]->qta>0)
{
$qtaTotale=$qtaTotale+$carrelloTemp->carrello[$i]->qta;
}
}
//echo 'QTA TOTALE'.$qtaTotale.'<br />';
}
if ($lCarrelloVuoto)
{
//qui il carrello non esiste oppure è vuoto quindi stampo il messaggio che avvisa che il carrello non contiene elementi
//todo: sostituire con la formattazione giusta
//echo "carrello vuoto";
$qtaTotale = 0;
}
return $qtaTotale;
}
}
class Tshop
{
public function add($idProdotto,$qta,$lFix)
{
/*
funzione aggiunge/modifica/rimuove i prodotti/qta dall'oggetto carrello
la funzione cerca nell'array l'oggetto con idProdotto:
con parametro LFIX = false
se esiste -> facciamo la somma algebrica della qta; se la qta arriva a zero eliminiamo l'elemento dall'array
se non esiste -> creiamo un nuovo elemento nell'array con qta pari a quella passata
con parametro LFIX = true
se esiste -> imposto la qta con il valore passato come parametro
se non esiste -> creiamo un nuovo elemento nell'array con qta pari a quella passata
per eliminare un prodotto la $qta deve essere zero e $lfix = true;
*/
if (isset($_SESSION['carrello']))
{
//qui l'oggetto carrello esiste quindi per poterci lavorare sopra e aggiornarlo
//devo prima fare l'unserialize
$carrelloTemp = unserialize($_SESSION['carrello']);
//ora ho il carrello nella variabile carrelloTemp di tipo Tcarrello;
//a questo punto devo scorrere tutto l'array per verificare se il prodotto ($idProdotto)
//esiste.
/*
NOTA CANCELLAZIONE ELEMENTO:
Visto che la cancellazione di un elemento dall'array sta rompendo le storie abbiamo scelto di mettere
la quantità a zero e, durante la gestione dell'array prendere in considerazione solamente gli elementi
con quantità positiva. La conseguenza è che tutti gli elementi con qta = 0 sono di fatto cancellati.
*/
$lprodottoTrovato=false;
$nElementi=count($carrelloTemp->carrello);
for($i=0;$i<$nElementi;$i++)
{
if ($carrelloTemp->carrello[$i]->idProdotto == $idProdotto)
{
//qui ho trovato il prodotto che voglio modificare
$lprodottoTrovato=true;
if ($lFix)
$carrelloTemp->carrello[$i]->qta = $qta; //sostituisco la qta con quella passata come parametro
else
$carrelloTemp->carrello[$i]->qta += $qta; //faccio la somma algebrica
if ($carrelloTemp->carrello[$i]->qta<=0)
{
$carrelloTemp->carrello[$i]->qta=0;
//verifico se la qta è = o < di zero ed in caso devo eliminare il prodotto dal carrello.
}
}
}
if (!$lprodottoTrovato && $qta!=0)
{
//qui ho fatto scorrere tutto l'array e non ho trovato il prodotto quindi
//lo aggiungo
$carrelloTemp->carrello[] = new TelementoCarrello($idProdotto,$qta);
}
}
else
{
$carrelloTemp = new Tcarrello();
$carrelloTemp->carrello[] = new TelementoCarrello($idProdotto,$qta);
}
$_SESSION['carrello'] = serialize($carrelloTemp);
//echo $_SESSION['carrello'];
}
public function concludiOrdine()
{}
}
class Tcarrello
{
public $carrello;
public function __construct()
{
$this->carrello = array();
}
public function __destruct()
{
if (is_array($this->carrello))
{
$nElementi=count($this->carrello);
for($i=0;$i<$nElementi;$i++)
unset($this->carrello[$i]);
}
unset($this->carrello);
}
}
class TelementoCarrello
{
var $idProdotto;
var $qta;
public function __construct($idProdotto, $qta)
{
$this->idProdotto=$idProdotto;
$this->qta = $qta;
}
}
?>
|