繁体   English   中英

如何将选定的表数据的特定行插入数据库表?

[英]How to insert specific row of table data selected, into database table?

这是我的BAShop.php文件

<?php      
    if(isset($_POST['insert'])){                
    $queryinsert = "insert into cart(productid,productname,cartquantity,amount) SELECT productid,productname,'$_POST[cartquantity]', '50' FROM product WHERE productid='$_POST[hidden]'";       
   mysqli_query($dbconn,$queryinsert);                                             
    }   
    ?>
<script>                      
                function sortproduct(str) {

                        if (window.XMLHttpRequest) {
                            // code for IE7+, Firefox, Chrome, Opera, Safari
                            xmlhttp = new XMLHttpRequest();
                        } else {
                            // code for IE6, IE5
                            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                        }
                        xmlhttp.onreadystatechange = function() {
                            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                                document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
                            }
                        };
                        xmlhttp.open("GET","BAShopSort.php?q="+str,true);
                        xmlhttp.send();

                }

            </script>

这是我的ShopSort.php文件,我在其中执行我的Ajax,以便用户可以单击按钮,并且页面的更改无需刷新。

$q = $_GET['q'];
$sql="SELECT * FROM product WHERE productname like '$q%'";
$result = mysqli_query($dbconn,$sql);
echo "<table border=3>
<tr>
<th>Productid</th>
<th>Productname</th>
<th>Retailprice</th>
<th>Pointsformula</th>
<th>Quantity</th>
</tr>";
while($row = mysqli_fetch_array($result)) {   
echo "<tr><form method='POST'>";
echo "<td>"."<input type = 'text' id ='productid' name='productid' value=". $row['productid'] ."></td>";
echo "<td>"."<input type = 'text' id = 'productname' 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>". //**name of quanitty text
                "<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' id = 'insert' name='insert' value='Add To Cart'" . "></td>";
echo "</form></tr>";
}echo "</table>";

因此,在我运行BAShop.php文件之后,可以说我想将“ Soap”项添加到购物车 在此处输入图片说明 当我转到购物车页面时,肥皂不在那儿,而是洗发水在那儿。 在此处输入图片说明

请看一下我的代码,让我知道出了什么问题...我的学校项目在这个问题上呆了3个星期,时间已经用完了。仅供参考:我显示的表格数据从mysql数据库中获取BAShop.php页面的信息。

问题是,如果您的表中同时显示了几篇文章,那么您的文档将包含几个隐藏在同一表单中的输入。 由于PHP处理POST变量的方式,因此在提交表单时仅考虑第一个变量。 这就是为什么无论如何都将表中显示的第一篇文章(在您的示例中为肥皂)添加到购物车的原因。

要更改此设置,您可能想要为隐藏字段提供更具体的ID,并修改JS代码以做出相应的反应,或者每行制作一张表格(这可能是解决问题的最快方法)。

PS:如果该脚本要在本地以外的其他任何地方运行,则还应注意那些SQL查询。 它们很危险,不安全。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM