- Home
- Categorie
- Coding e Sistemistica
- PHP
- controllo dati che non funziona
-
controllo dati che non funziona
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
-
ho risolto...mannaggia! io mi accanivo sul resto mentre l'errore era nella query