正如您所看到的,我有这个页面,每个表格行上都有“添加到购物车”按钮。假设我点击产品ID为1的表格行的“添加到购物车”,我希望将productid,productname,cartquantity转移到另一个网页上的购物车。可能吗?
好的,所以你可以看到我想将产品ID 1添加到我的购物车中,数量为3.但是当我按下添加到购物车
它始终运行到我的上一个productid,这是shofffwef并将其添加到购物车。不确定出了什么问题:(
这是我添加到购物车按钮的SQL代码
if(isset($_POST['insert'])){ //$_POST[X] X = name of textbox (***You got to do this In BASHOP) take note the productname.
$queryinsert = "insert into cart(productid,productname,cartquantity,amount) SELECT productid,productname,'$_POST[cartquantity]', '50' FROM product WHERE productid='$_POST[hidden]'";
mysqli_query($dbconn,$queryinsert);
}
这是我的代码,在第一张图片中显示表格。
while($row = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td>"."<input type = 'text' name='productid' value=". $row['productid'] ."></td>";
echo "<td>"."<input type = 'text' name='productname' value=". $row['productname'] ."></td>";
echo "<td>" . $row['retailprice'] . "</td>";
echo "<td>" . $row['pointsformula'] . "</td>";
echo "<td>"."<button type='button' class='quantityaddsub' id='sub' onclick='quantitysub(".$row['productid'].")'>-</button>".
"<input type='text' class='quantity' name='cartquantity' id='quantity".$row['productid']."' value=1>".
"<button type='button' class='quantityaddsub' id='add' onclick='quantityadd(".$row['productid'].")'>+</button>".
"<input type='hidden' name='hidden' value=".$row['productid']."></td>";
echo "<td>" . "<input type='submit' name='insert' value='Add To Cart'" . "></td>";
echo "</tr>";
}
echo "</table>";
我到处搜索但无法找到解决方案,请帮助我谢谢!
答案 0 :(得分:0)
您是否检查过这些项目是否已插入数据库中的表格(它应该命名为&#34; cartitems&#34;或类似的......)?
据我所知,购物车页面只是检索该表中的项目。 因此,首先要确保已成功插入项目。
答案 1 :(得分:0)
事实上,每行不需要<form>
个标签 - 事实上,如果您使用AJAX提交表单,则可能根本不需要<form>
个标签。即使您将表单作为表单提交,也只需要一组<form>
代码。
但是,您需要的是一些管理添加到购物车过程的JavaScript。
基本上,您需要在页面上创建软cart
。为此,您可以使用javascript变量或隐藏的输入字段。让我们使用一个隐藏的输入字段,暂时不让它隐藏,这样你就可以看到发生了什么:
<form id="tcform" method="post" action="checkout.php">
<input type="text" id="tempcart" /><!-- when ready, change to type="hidden" -->
</form>
每次点击AddToCart按钮,它都会将TR的ID添加到购物车。为了方便起见,让我们为每个TR创建一个ID,将productID添加为该TR的ID的一个组成部分:
$out = "<table>";
while($row = mysqli_fetch_array($result)) {
$out .= "<tr id='tr_" .$row['productid']. "'>";
$out .= "<td>"."<input type = 'text' name='productid' value=". $row['productid'] ."></td>";
$out .= "<td>"."<input type = 'text' name='productname' value=". $row['productname'] ."></td>";
$out .= "<td>" . $row['retailprice'] . "</td>";
$out .= "<td>" . $row['pointsformula'] . "</td>";
$out .= "<td>"."<button type='button' class='quantityaddsub' id='sub' onclick='quantitysub(".$row['productid'].")'>-</button>".
"<input type='text' class='quantity' name='cartquantity' id='quantity".$row['productid']."' value=1>".
"<button type='button' class='quantityaddsub' id='add' onclick='quantityadd(".$row['productid'].")'>+</button>".
"<input type='hidden' name='hidden' value=".$row['productid']."></td>";
$out .= "<td>" . "<input type='submit' name='insert' value='Add To Cart'" . "></td>";
$out .= "</tr>";
}
$out .= "</table>";
echo $out;
现在,每个TR的ID都为:tr_17
您的AddToCart代码如下所示:
$('.btnAddToCart').click(function(){
var thisTR = $(this).closest('tr');
thisTR.addClass('clicked'); //optional - use CSS to color row
var trid = thisTR.attr('id'); //tr_17
trid = trid.split('_')[1]; //17
$('#tempcart').val( $('#tempcart').val() +'|'+ trid);
};
单击CHECKOUT按钮后,您可以使用javascript来发送tcform:
$('#btnCheckout').click(function(){
$('#tcform').submit();
});
请注意,上面的示例使用jQuery,因此请务必包含其库:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
最后注意事项:当您对此类项目进行故障排除时,请将其分解为多个步骤。首先应使用硬编码值测试checkout.php
页面(或称为您的页面)。
一旦可靠地将硬编码值放入数据库,接下来测试它接收的数据。通过创建一个虚拟checkout.php
页面来完成此操作,该页面只是通过$_POST
向屏幕回显它收到的数据。一旦你确定这两个部分都正常工作,然后把它们放在一起......希望它能在第一时间工作。如果没有,至少你知道什么是工作,调试工作更简单/更快。
Bon机会。
答案 2 :(得分:0)
您需要使用自己的表单分隔每一行。假设你想避免使用jQuery
while($row = mysqli_fetch_array($result)) {
echo "<tr><form action='otherscript.php' method='POST'>";
echo "<td>"."<input type = 'text' name='productid' value=". $row['productid'] ."></td>";
echo "<td>"."<input type = 'text' name='productname' value=". $row['productname'] ."></td>";
echo "<td>" . $row['retailprice'] . "</td>";
echo "<td>" . $row['pointsformula'] . "</td>";
echo "<td>"."<button type='button' class='quantityaddsub' id='sub' onclick='quantitysub(".$row['productid'].")'>-</button>".
"<input type='text' class='quantity' name='cartquantity' id='quantity".$row['productid']."' value=1>".
"<button type='button' class='quantityaddsub' id='add' onclick='quantityadd(".$row['productid'].")'>+</button>".
"<input type='hidden' name='hidden' value=".$row['productid']."></td>";
echo "<td>" . "<input type='submit' name='insert' value='Add To Cart'" . "></td>";
echo "</form></tr>";
}
echo "</table>";
这样,当您单击“提交”时,仅发送该行的数据。现在它有点乱。