Cand vei da click pe butonul Adauga in cos din pagina produsului, vei fi redirectionat spre pagina cart.php. Daca, spre exemple, vei dori sa cumpari produsul Locomotiva OBB Taurus vei merge la pagina cart.php?action=add&p=19.
Deoarece ai action=add in Url-ul sursa se va apela functia addToCart(). Aceasta functie se comporta astfel:
• Verifica daca produsul exista in baza de date.
• Verifica daca stocul nu este zero.
• Daca produsul exista deja in cos, mareste cantitatea din cos cu unu.
• Daca nu, adauga produsul in cos.
function addToCart()
{
// verifica dac aprodusul exista
if (isset($_GET['p']) && (int)$_GET['p'] > 0) {
$productId = (int)$_GET['p'];
} else {
header('Location: index.php');
}
// exista produsul?
$sql = "SELECT pd_id, pd_qty
FROM tbl_product
WHERE pd_id = $productId";
$result = dbQuery($sql);
if (dbNumRows($result) != 1) {
// produsul nu exista
header('Location: cart.php');
} else {
// verifica stocul
$row = dbFetchAssoc($result);
$currentStock = $row['pd_qty'];
if ($currentStock == 0) {
// produsul nu este in stoc
setError(?Produsul este indisponibil momentan.?);
header('Location: cart.php');
exit;
}
}
// current session id
$sid = session_id();
// verifica daca produsul exista deja in cos
$sql = "SELECT pd_id
FROM tbl_cart
WHERE pd_id = $productId AND ct_session_id = '$sid'";
$result = dbQuery($sql);
if (dbNumRows($result) == 0) {
// put the product in cart table
$sql = "INSERT INTO tbl_cart (pd_id, ct_qty, ct_session_id, ct_date)
VALUES ($productId, 1, '$sid', NOW())";
$result = dbQuery($sql);
} else {
// modifica cantitatea din cos
$sql = "UPDATE tbl_cart
SET ct_qty = ct_qty + 1
WHERE ct_session_id = '$sid' AND pd_id = $productId";
Aceasta functie face si altceva. Apeleaza functia deleteAbandonedCart() care sterge un cos deja existent daca au trecut 24 de ore de la crearea lui.
function deleteAbandonedCart()
{
$yesterday = date('Y-m-d H:i:s',
mktime(0,0,0, date('m'), date('d') - 1, date('Y')));
$sql = "DELETE FROM tbl_cart
WHERE ct_date < '$yesterday'";
dbQuery($sql);
}
Dupa plasarea unui produs in cos, clientul va fi redirectionat spre pagina in care va vizualiza cosul de cumparaturi.
header('Location: cart.php?action=view');
Vizualizarea cosului
Interfata cosului de cumparaturi este mult mai simpla decat paginiile de cumparaturi. Studiile au aratat ca lasand doar cosul propriu-zis in pagina conduce la o rata mai mare de finalizare a comenzii.
Daca cosul de cumparaturi este gol sau clientul a ajuns din greseala la el, ii vei afisa un mesaj prin care ii spui acest lucru: Cosul dumneavoastra este gol. .
Daca exista produse in cos, le afisezi. Fiecare rand va contine imaginea mica a produsului, numele, pretul unitar, cantitatea si suma totala pentru acel produs. De asemenea va exista un buton prin care se va putea sterge rapid produsul din cos.
Acest buton este bine sa existe mereu. Poate ai vazut la alte magazine online ca stergerea se face prin introducerea cantitatii 0 la un produs si apasarea butonului Actualizare, fara a exista si un buton de stergere. Este un lucru gresit, deoarece o actiune simpla se transforma in ceva dificil de infaptuit.
Mini cosul din dreapta paginii
Nu ai uitat de mini cosul de cumparaturi care apare in partea dreapta pe fiecare pagina a site-ului.