ciao,
nel DB ho 2 tipi di prodotti:
- prodotti normali
- abbonamenti
per questioni di spese di spedizione devo fare in modo che se all'interno del carrello ho un prodotto normale, non si può aggiungere un abbonamento e viceversa.
per distinguere un prodotto da un abbonamento ho aggiunto un campo ENUM nella tabella prodotti, in cui se è un prodotto normale viene identificato come 'N' (default), mentre se è un abbonamento viene indentificato con un 'S'.
Nella funzione addToCart() che è quella che gestisce l'inserimento, ho aggiunto il codice per provare a fare un controllo che però non funziona bene.
mi visualizza il messaggio solo se inserisco 2 prodotti (o abbonamenti) uguali. altrimenti il controllo non funziona.
funzione completa:
[php]function addToCart()
{
// make sure the product id exist
if (isset($_GET['p']) && (int)$_GET['p'] > 0) {
$productId = (int)$_GET['p'];
} else {
header('Location:home.php');
}
// does the product exist ?
$sql = "SELECT pd_id, pd_qty
FROM tbl_product
WHERE pd_id = $productId";
$result = dbQuery($sql);
if (dbNumRows($result) != 1) {
// the product doesn't exist
header('Location: home.php?page=cart');
}
// INIZIO CODICE PER IL CONTROLLO
$sql = "SELECT ct.pd_id, pd.pd_id, abbonamento
FROM tbl_cart ct, tbl_product pd
WHERE ct.pd_id = pd.pd_id
AND pd.pd_id =$productId";
$result = dbQuery($sql);
while ($row = dbFetchAssoc($result)) {
extract($row);
if ($abbonamento == 'N' && $_GET['pd'] =='N') {
echo "il prodotto che stai per inserire è dello stesso tipo presente nel carrello, cioè NON è un abbonamento"; exit;
} elseif ($abbonamento == 'S' && $_GET['pd'] =='S') {
echo "il prodotto che stai per inserire è dello stesso tipo presente nel carrello, cioè è un abbonamento";exit;
} elseif ($abbonamento == 'N' && $_GET['pd'] =='S') {
echo "il prodotto che stai per inserire non è dello stesso tipo. Nel carrello hai un prodotto normale, il tuo è un abbonamento";exit;
} elseif ($abbonamento == 'S' && $_GET['pd'] =='N') {
echo "il prodotto che stai per inserire non è dello stesso tipo. Nel carrello hai un abbonamento, il tuo è un prodotto normale";exit;
}
}
// FINE CODICE PER IN CONTROLLO
// current session id
$sid = session_id();
// check if the product is already
// in cart table for this session
$sql = "SELECT pd_id
FROM tbl_cart
WHERE pd_id = $productId AND ct_session_id = '$sid'";
$result = dbQuery($sql)or die(mysql_error());;
if (dbNumRows($result) == 0) {
// put the product in cart table
$sql = "INSERT INTO tbl_cart (pd_id, ct_qty, ct_session_id, lang_name, ct_date)
VALUES ($productId, 1, '$sid', '{$_POST["lingua"]}', NOW())";
$result = dbQuery($sql)or die(mysql_error());
} else {
// update product quantity in cart table
$sql = "UPDATE tbl_cart
SET ct_qty = ct_qty + 1
WHERE ct_session_id = '$sid' AND pd_id = $productId";
$result = dbQuery($sql)or die(mysql_error());
}
}[/php]
cosa c'è che non va?:x sono ad un passo dal suicidio!:x