我正在做一个简单的购物车。我不确定如何描述我的问题。我有两页。 1st每个项目旁边都有复选框。第二个在SESSION中创建一个空数组,然后在循环中,将所有选中的项目推送到会话数组并打印出项目数。第二页还有一个用于输入用户详细信息的表单,该表单使用PHP而不是JS进行验证。问题是当提交该表单时,第二页被重新加载,会话数组变为空,因为$ _SESSION ['cart'] = array();被触发了。提交第一页在第二页中给出了正确的结果,但是在第二页中提交表单时这些结果变为0。两个页面都有:session_start();在顶部。
以下是第一页的关键代码:
<form name="form" method="POST" id="form" action="cart.php">
<input type=checkbox name=cart[item1]>
<input type=checkbox name=cart[item2]>…etc
第2页(cart.php):
include "Validation.php";
$_SESSION['cart']=array();
if(isset($_POST['cart'])){
foreach($_POST['cart'] as $checkboxID => $checkboxVal){
array_push($_SESSION['cart'], $checkboxID);
}
}
echo "<p>number of items in the cart = ".sizeof($_SESSION['cart'])."</p>";
<form name="form" method="POST" id="form" action="">
<input type="text" name="userEmail" id="userEmail" placeholder="e.g. me@me.com"/>
<input type="submit" class="buttun" name="buy" value="buy"/>
第3页(Validation.php):
if (isset($_POST["buy"])){
//some validation code
}
有没有办法解决这个问题?我试图在if语句中创建空数组,但结果不好。我认为使用JS验证可以解决问题,但更喜欢php验证。
谢谢
答案 0 :(得分:0)
您的代码中存在很多问题。
希望您在其他地方使用session_start();
,当您的页面重新加载/转到下一页时,您将丢失会话数据。
在第2部分中,您不需要声明变量。
if(isset($_POST['cart']) && !isset($_SESSION['cart']))
foreach($_POST['cart'] as $checkboxID => $checkboxVal)$_SESSION['cart'][$checkboxID]=$checkboxVal;
如果要查看是否已使用表单,请使用隐藏的输入
<input type='hidden' name='form1' value='1'>
然后你可以使用
if(isset($_POST['form1']))...
另外,sizeof($_SESSION['cart'])
应该算一算($ _ SESSION [&#39; cart&#39;])