ciao ho visto la tua richiesta e con molto piacere cerco di darti qualche idea su come risolvere
nel mio carrello in breve:
ogni oggetto in vendita è un form a se
ogni volta che un oggetto viene messo nel carrello salvo i dati dell'oggetto(prezzo, codice, etc) in un array
poi salvo questo array in una variabile
che a sua volta viene salvata in $_SESSION['items'.$i]
e tramite un operazione semoplice ogni volta che un oggetto è aggiunto al carrello $i incrementa di uno
quindi poi per mostrare gli oggetti messi nel carrello apro l'array con un foreach loop
l'importante però è incrementare $i di uno ogni volta che qualcosa è stata aggiunta
ecco un po di codice
Codice PHP:
session_start();
//PER INCREMENTARE $i salvo il dato in $_SESSION['i']
//CONTROLLO SE QUALCOSA è STATO POSTATO QUINDI SE UN OGGETTO è STATO
//INSERITO E SE ESISTE I
if($_POST['size'] && $_SESSION['i']){
//SE I ESISTE E QUALCOSA è STATO AGGIUNTO
//ALLORA INCREMENTO DI 1 'I'
//E SALVO IL VALORE IN $i
$_SESSION['i'] = $_SESSION['i'] +1;
$i = $_SESSION['i'];
}
//QUESTA è LA MIA PAGINA DI CART DETAILS QUINDI SI
//PUO VISITARE ANCHE SENZA AVER INSERITO UN NUOVO OGGETTO
//QUINDI SE I ESISTE, MA NON è STATO INSERITO NIENT'ALTRO
//I RIMANE UGUALE NON INCREMENTA
elseif($_SESSION['i'] && ! $_POST['size']){
$i = $_SESSION['i'];
}
//SE INVECE è IL PRIMO OGGETTO INSERITO
//PERCHE ESISTE POST MA NON SESSION I
//ALLORA $i è uguale a 1
elseif($_POST['size'] && ! $_SESSION['i']){
$i = 1;
}
//DOPO RACCOLGO IL RESTO DEI DATI
//CONTROLLO SE QUALCOSA è STATO INSERITO
if ($_POST['product_name']){
//AGGIUNGO I DATI ALLE VARIABILI
//IN QUESTO MOMENTO SALVO I A SECONDA SEMPRE DAL CALCOLO AD INIZIO
//PAGINA
$_SESSION['i'] = $i;
$name=$_POST['product_name'];
$quantity = $_POST['quantity'];
$size= $_POST['size'];
$product_price= $_POST['product_price'];
$order_num= $i;
//ALLO STESSO MODO CALCOLO IL SUBTOTALE E IL TOTALE
$subtotal = $quantity * $product_price;
$_SESSION['subtotal'] = $_SESSION['subtotal'] + $subtotal;
//AGGIUNGO I DATI AD UN ARRAY CHIAMATO $ITEMS
$items= array(
"product name" =>$name,
"quantity" => $quantity,
"size" => $size,
"price" => $product_price,
"order number" => $order_num,
"subtotal" => $subtotal
);
//INFORMO SULL'ULTIMO OGGETTO INSERITO
echo "succesfully added to cart";
echo"
";
echo"Product Name : [b]".$name."[/b]
";
echo "Quantity : [b]".$quantity."[/b]
";
echo"Size : [b]".$size."[/b]
";
echo"Price : [b]".$product_price."[/b]
";
echo"Subtotal : [b]";
echo $subtotal."[/b]
";
echo"
";
//AGGIUNGO L'ARRAY SALVATO IN ITEMS
//A $_session['items'.$i] DOVE $i di volta in volta viene incrementato di uno
$_SESSION['items'.$i] = $items;
}
//MENTRE IL CODICE DI PRIMA MOSTRA L'ULTIMO PRODOTTO AGGIUNTO
//LO SALVA IN SESSIONE
//ORA CHIAMO UN ALTRA PAGINA CHE MI MOSTRA TUTTI GLI OGGETTI IN CARRELLO
//CHE IO HO CHIAMATO session_cart.php
//SE I ESISTE INCLUDE LA PAGINA IL CUI CODICE è SOTTO
if($_SESSION['i']){
include("session_cart.php");
}
QUESTO è il codice di session_cart.php che giusto attraversa l'array items tante volte quante volte $i esiste
Codice PHP:
//IN QUANTO IO INCLUDO IL FILE IN UNA PAGINA DOVE I CALCOLI SONO GIA FATTI
//ALL'INIZIO PAGINA non necessita di session_start()
//diversamente se usi una pagina a parte all'inizio della pagina dovresti aggiungere
//session_start(); e $i = $_SESSION['i'];
for ($i =1; $i <=$_SESSION['i']; $i++){
foreach($_SESSION['items'.$i] as $key=>$value)
{
echo $key." : [b]".$value."[/b]
";
}
}
dovrebbe dare un output del tipo
Nome prodotto : esempio
codice : esempio
prezzo : esempio
che non sono altro che i dati che abbiamo salvato nell'array $items passato poi a $_SESSION['items'.$i]
spero di averti dato un idea e di essere stato comprensibile visto che devo ammettere che è la prima volta che scrivo su questo forum