2013-04-23 78 views
0

我无法使用“删除按钮”单击正确取消会话变量。我有两个页面:产品页面购物车页面,但问题是我有一个“删除按钮”在购物车中不正常工作。在按钮单击事件时取消设置会话变量

当我点击“删除按钮”它应该运行unset($_SESSION['product1']

但是,当我选择另一个项目时,它可以显示“以前的会话项目”,所以这意味着删除按钮不会正常运行unset($_SESSION['product1']。我该如何解决这个问题?

产品页面

session_start(); 
$id=$_REQUEST['id']; 
$_SESSION['pid1']= $_POST['ids']; //Product ID// 
$_SESSION['product1'][]=$_POST['product']; 

<form method="post"> 
<input type="hidden" name="product[]" value="<?php echo $row1['product']; ?>" /> 
<input type="hidden" name="ids" value="<?php echo $id?>" /> 
</form> 

<input type="submit" class="button1" name="addtocart" value="Add To Cart" 
/> 

</form> 

购物车页面

session_start(); 
$pid=$_SESSION['pid1']; 

function remove_product($pid){ 
$pid=intval($pid); 
$max=count($_SESSION['product1']); 
for($i=0;$i<$max;$i++){ 
if($pid==$_SESSION['product1'][$i]['pid']){ 
unset($_SESSION['product1'][$i]); 
break; 
} 
} 
$_SESSION['product1']=array_values($_SESSION['product1']); 
} 

if($_REQUEST['command']=='delete' && $_REQUEST['pid']>0){ 
remove_product($_SESSION['product1'][$pid]); 
} 



<form name="form1" method="post"> 
<input type="hidden" name="pid" /> 
<input type="hidden" name="command" /> 

<input type="button" class="button2" value="Remove" 
onclick="javascript:del(<?php echo $pid?>)"/> 

购物车页面的JavaScript

<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(); 
} 
} 
</script> 

回答

0

这可能是由

  1. $pid=$_SESSION['pid1'];,而不是被绑定到标签周围的按钮包裹$pid=$_POST['pid1'];

  2. 事件引起的,你coud只需使用

<input type="button" class="button2" value="Remove" onclick="del('<?php echo $pid?>');"/>