Wie erstellen Sie eine online-Warenkorb in php
Ich bin die Schaffung eines shopping-cart hat vier Schaltflächen "weiter Einkaufen, klar, Warenkorb, Warenkorb aktualisieren und Bestellung stehe ich vor einem problem mit den sessions, wenn ich drücken Sie die clear-Schaltfläche "Warenkorb", es zeigt die
undefined index cart
aber der Wagen kommt aus der Sitzung und wenn ich drücken Sie die clear-Schaltfläche "Warenkorb"
it unsets the session of cart
so, wo mache ich es falsch ? kann jemand helfen ?
hier ist mein code
<?php
include("includes/db.php");
include("includes/functions.php");
if($_REQUEST['command']=='delete' && $_REQUEST['pid']>0){
remove_product($_REQUEST['pid']);
}
else if($_REQUEST['command']=='clear'){
unset($_SESSION['cart']);
}
else if($_REQUEST['command']=='update'){
$max=count($_SESSION['cart']);
for($i=0;$i<$max;$i++){
$pid=$_SESSION['cart'][$i]['productid'];
$q=intval($_REQUEST['product'.$pid]);
if($q>0 && $q<=999){
$_SESSION['cart'][$i]['qty']=$q;
}
else{
$msg='Some proudcts not updated!, quantity must be a number between 1 and 999';
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Shopping Cart</title>
<script language="javascript">
function del(pid){
if(confirm('Do you really mean to delete this item')){
document.form1.pid.value=pid;
document.form1.command.value='delete';
document.form1.submit();
}
}
function clear_cart(){
if(confirm('This will empty your shopping cart, continue?')){
document.form1.command.value='clear';
document.form1.submit();
}
}
function update_cart(){
document.form1.command.value='update';
document.form1.submit();
}
</script>
</head>
<body>
<form name="form1" method="post">
<input type="hidden" name="pid" />
<input type="hidden" name="command" />
<div style="margin:0px auto; width:600px;" >
<div style="padding-bottom:10px">
<h1 align="center">Your Shopping Cart</h1>
<input type="button" value="Continue Shopping" onclick="window.location='products.php'" />
</div>
<div style="color:#F00"><?php echo'' ;?></div>
<table border="0" cellpadding="5px" cellspacing="1px" style="font-family:Verdana, Geneva, sans-serif; font-size:11px; background-color:#E1E1E1" width="100%">
<?php
if(is_array($_SESSION['cart'])){
echo '<tr bgcolor="#FFFFFF" style="font-weight:bold"><td>Serial</td><td>Name</td><td>Price</td><td>Qty</td><td>Amount</td><td>Options</td></tr>';
$max=count($_SESSION['cart']);
for($i=0;$i<$max;$i++){
$pid=$_SESSION['cart'][$i]['productid'];
$q=$_SESSION['cart'][$i]['qty'];
$pname=get_product_name($pid);
if($q==0) continue;
?>
<tr bgcolor="#FFFFFF"><td><?php echo $i+1?></td><td><?php echo $pname?></td>
<td>$ <?php echo get_price($pid)?></td>
<td><input type="text" name="product<?php echo $pid?>" value="<?php echo $q?>" maxlength="3" size="2" /></td>
<td>$ <?php echo get_price($pid)*$q?></td>
<td><a href="javascript:del(<?php echo $pid?>)">Remove</a></td></tr>
<?php
}
?>
<tr><td><b>Order Total: $<?php echo get_order_total()?></b></td><td colspan="5" align="right"><input type="button" value="Clear Cart" onclick="clear_cart()"><input type="button" value="Update Cart" onclick="update_cart()"><input type="button" value="Place Order" onclick="window.location='billing.php'"></td></tr>
<?php
}
else{
echo "<tr bgColor='#FFFFFF'><td>There are no items in your shopping cart!</td>";
}
?>
</table>
</div>
</form>
</body>
</html>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht bereits begonnen, füllen Ihren Warenkorb, dann wird das element nicht definiert. Beim Umgang mit array-Elementen es ist immer besser, fügen Sie eine zusätzliche Prüfung array_key_exists(). Aber in Ihrem Fall das problem ist mehr über die Art und Weise behandeln Sie Ihr array in der Regel.
PHP ist Recht nachsichtig, so dass Sie zur Durchsetzung Ihrer eigenen Disziplinen auf den Weg, Sie code. Ein Stück sehr gute Praxis, die sich lohnt, wird verwendet, um explizit initialisieren Sie Ihre Variablen, bevor Sie Sie starten Sie mit Ihnen.
und nicht unset es im klar test ... nur setzen Sie ihn wieder ein leeres array.
$max=count($_SESSION["cart"]); for($i=0;$i<$max;$i++){
schlägt fehl, wenn $max == 0, weil es nicht die Bedingung erfüllen$i<$max if $i == 0
$_SESSION['cart']['productID'][qty']
dann können Sie tun, Weg mit der iterativen Schleife zusammen und vereinfachen Sie Ihren code enorm... Wie gesagt - Öffnen Sie eine neue Frage bittehier ist Einfache PHP Warenkorb Tutorial
vom hier