javascript - 如何使用ajax将选定的(从多个)输入值发送到数据库?

标签 javascript php jquery ajax

第一篇文章,所以要温柔:)...好吧,我正在尝试创建一个非常简单的库存订购网站,但我遇到了以下问题:

假设您的库存中有 (n) 件商品,因此根据该数字,我运行“for”循环并列出带有该库存商品 ID 的隐藏输入字段,并显示一个订购按钮。例如:

<form>
for ($i=0; $i<$num_items;$i++)  {
  <input type="hidden" name="item" value="<?=$ID[$i]?>">
  <input type="submit" value="Order" onclick="InsertIntoDB()">
}   
</form>

现在,假设用户只想订购库存中 5 件商品中的 2 件。他们将单击相应的“订单”按钮,并且适当的隐藏输入值将被发送到数据库而无需重定向(这对于用户来说将是一种无缝体验,一旦用户单击他们希望页面不会重新加载或重定向的按钮)。这是我用于单击按钮的脚本:

<script type="text/javascript"> 
function InsertIntoDB (){ 
    var order = $('form input[name="item"]').val();   
    $.post('send_to_DB.php', {updateDB:order} ); }
</script>

这是我的 send_to_DB.php 文件:

|code for connecting to DB|

$writetoDB=$_POST['uptadeDB'];
foreach ($writetoDB as  $n) {
$insert = "UPDATE `test` SET onorder=1 WHERE ID='$n'";
mysql_query(insert);
}

我正在努力获取用户点击数据库的这两个值。任何帮助将不胜感激,因此失去了很多小时的 sleep :)。谢谢!!!

最佳答案

表单将发送其中所有输入的值。克服这个问题的一种方法可能是尝试将每组输入以其自己唯一标识的形式包含在迭代循环内。但请考虑以下解决方案,该解决方案将在不使用表单的情况下实现所需的目的,并且使用单个按钮而不是每个项目的两个输入:

对于 test.php 文件中的输入,假设数组 $ID 已定义:

<?php
$num_items = count($ID);
for ($i=0; $i<$num_items;$i++)  {
?>
<button type="button" value="<?=$ID[$i]?>" onclick="InsertIntoDB(this.value)">Order<?= $i + 1 ?></button>
<?php }   ?>

对于 test.php 文件中的发布脚本:

<script type="text/javascript"> 
function InsertIntoDB (order){
 $.post('send_to_DB.php', {updateDB:order} ); 
}
</script>

对于处理程序send_to_DB.php 文件:

$writetoDB=$_POST['updateDB'];
$insert = "UPDATE `test` SET onorder=1 WHERE ID='$writetoDB'";
mysql_query($insert);

在上面的 $insert 查询中,您可能需要使用 SET onorder = 1 + onorder 来跟踪每个商品的订单数。

但是......:我希望您知道我们应该停止使用mysql_query:http://php.net/manual/en/function.mysql-query.php

关于javascript - 如何使用ajax将选定的(从多个)输入值发送到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47216199/

相关文章:

javascript - Typoscript 条件不适用于 IE11

php - 尝试为 paypal 创建计费协议(protocol)时出现 Http 响应代码 500 错误 - PHP

php - 无法连接到本地主机上的数据库

php - Laravel 两个查询的内连接

javascript - 如何将对象保持在范围内?

javascript - Jquery: Uncaught TypeError: Object #<Object> 没有方法 'quicksand'

javascript - 使用 jquery 查找父容器的子容器

javascript - Jquery : how to add attributs dynamically with the function . 属性()

javascript - 检查 JavaScript 是否存在意外分配

javascript - 计算响应时间的引用资料