01. januar 2007 - 16:24Der er
7 kommentarer og 1 løsning
Shopsystem siger fejl og tilføjer 21 varer i stedet for 1
Jeg har ud fra PlainCart-systemet lavet et shopsystem. Men nu opfører den sig pludseligt underligt.
Når jeg går ind på en vare og trykker på "Læg i kurv" og så kommer den her fejlmeddelse op med Firefox: "Denne side viderefører ikke forespørgslen korrekt Firefox har opdaget at serveren henviser forespørgelsen for denne adresse på en måde så den aldrig vil blive færdig. * Dette problem kan nogle gange skyldes, at cookies er slået fra, eller modtagelse af cookies er blevet nægtet."
Og når jeg så går over på siden igen har den tilføjet 21 af den valgte vare.
Hvad kan være problemet?
P.S. Jeg har både prøvet i Firefox og Internet Explorer og problemet er der begge steder. Jeg har også prøvet at fjerne cookies, men det hjælper ikke.
function addToCart() { // make sure the product id exist if (isset($_GET['p']) && (int)$_GET['p'] > 0) { $productId = (int)$_GET['p']; } else { header('Location: index.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: cart.php'); } else { // how many of this product we // have in stock $row = dbFetchAssoc($result); $currentStock = $row['pd_qty'];
if ($currentStock == 0) { // we no longer have this product in stock // show the error message setError('The product you requested is no longer in stock'); header('Location: cart.php'); exit; }
}
// 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);
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 { // 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); }
// an extra job for us here is to remove abandoned carts. // right now the best option is to call this function here deleteAbandonedCart();
for ($i = 0; $i < $numItem; $i++) { $newQty = (int)$itemQty[$i]; if ($newQty < 1) { // remove this item from shopping cart deleteFromCart($cartId[$i]); $numDeleted += 1; } else { // check current stock $sql = "SELECT pd_name, pd_qty FROM tbl_product WHERE pd_id = {$productId[$i]}"; $result = dbQuery($sql); $row = dbFetchAssoc($result);
if ($newQty > $row['pd_qty']) { // we only have this much in stock $newQty = $row['pd_qty'];
// if the customer put more than // we have in stock, give a notice if ($row['pd_qty'] > 0) { setError('The quantity you have requested is more than we currently have in stock. The number available is indicated in the "Quantity" box. '); } else { // the product is no longer in stock setError('Sorry, but the product you want (' . $row['pd_name'] . ') is no longer in stock');
// remove this item from shopping cart deleteFromCart($cartId[$i]); $numDeleted += 1; } }
// update product quantity $sql = "UPDATE tbl_cart SET ct_qty = $newQty WHERE ct_id = {$cartId[$i]}";
dbQuery($sql); } }
if ($numDeleted == $numItem) { // if all item deleted return to the last page that // the customer visited before going to shopping cart header("Location: $returnUrl" . $_SESSION['shop_return_url']); } else { header('Location: cart.php'); }
exit; }
function isCartEmpty() { $isEmpty = false;
$sid = session_id(); $sql = "SELECT ct_id FROM tbl_cart ct WHERE ct_session_id = '$sid'";
$result = dbQuery($sql);
if (dbNumRows($result) == 0) { $isEmpty = true; }
return $isEmpty; }
/* Delete all cart entries older than one day */ 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); }
?>
Synes godt om
Slettet bruger
01. januar 2007 - 16:26#2
Hvad er PlainCart-system? og hvor kan man finde det?
En god ide er lige at skrive løsningen her, bare for god ordens skyld. - og af bitter erfaring kan jeg sige, at hvis du selv sørger for at ligge løsningen her vil du takke dig selv når du "måske" står med problemet igen. :)
Og så kan andre jo også få glæde af dit spørgsmål.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.