在表的每一行上提交按钮,将该行的数据插入到数据库中

时间:2016-05-14 15:32:45

标签: javascript php html sql

正如您所看到的,我有这个页面,每个表格行上都有“添加到购物车”按钮。假设我点击产品ID为1的表格行的“添加到购物车”,我希望将productid,productname,cartquantity转移到另一个网页上的购物车。可能吗?

Add to cart page 好的,所以你可以看到我想将产品ID 1添加到我的购物车中,数量为3.但是当我按下添加到购物车

Cart Page 它始终运行到我的上一个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>";

我到处搜索但无法找到解决方案,请帮助我谢谢!

3 个答案:

答案 0 :(得分:0)

您是否检查过这些项目是否已插入数据库中的表格(它应该命名为&#34; cartitems&#34;或类似的......)?

据我所知,购物车页面只是检索该表中的项目。 因此,首先要确保已成功插入项目。

答案 1 :(得分:0)

事实上,每行不需要<form>个标签 - 事实上,如果您使用AJAX提交表单,则可能根本不需要<form>个标签。即使您将表单作为表单提交,也只需要一组<form>代码。

但是,您需要的是一些管理添加到购物车过程的JavaScript。

jsFiddle Demo

基本上,您需要在页面上创建软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>";

这样,当您单击“提交”时,仅发送该行的数据。现在它有点乱。