【问题标题】:Adding rows and Running Multiple mySQL queries添加行并运行多个 mySQL 查询
【发布时间】:2016-05-03 20:58:57
【问题描述】:

我试图找出解决这个问题的最佳方法。我需要能够使用 JS 将表格行附加到输入字段中,以便可以使用相同的表单输入多个项目,但我需要以某种方式制作每个输入都有一个唯一的名称,以 PHP 为目标。从那里我需要在每个上运行一个插入语句以插入到一个 mySQL 数据库中。我有点难倒这里

================================================ ========================

   <form action="" method="post" id="myForm">
        <table class="addTable">
            <tr>
                <th>Title</th>
                <th>Type</th>
                <th>Quantity</th>
                <th>Customer Price</th>
            </tr>
            <tr>
                <td>
                    <input type="text" name="name" placeholder="Title" maxlength="60" value="<?php echo $_POST['name']; ?>">
                </td>
                <td>
                    <input type="text" name="type" placeholder="Type" maxlength="20" value="<?php echo $_POST['type']; ?>">
                </td>
                <td>
                    <input type="number" name="qty" placeholder="QTY" max="100" value="<?php echo $_POST['qty']; ?>">
                </td>
                <td>
                    <input type="text" name="price" placeholder="Price" value="<?php echo $_POST['price']; ?>">
                </td>
            </tr>
        </table>
    </form>

【问题讨论】:

  • 这更像是一个概念问题。解决此问题的最佳方法是什么?
  • 您是否考虑过使用数组变量?使用即。 qty[] 作为 html 中的 name 属性。不需要唯一的名称,当您使用$_GET['qty'] 时,PHP 会将其视为一个数组。
  • "让每个输入都有一个唯一的名称":你能解释一下你的意思吗?您的意思是唯一的行 ID?
  • 你可以访问像 jQuery 这样的客户端 UI 库吗?

标签: javascript php mysql mysqli


【解决方案1】:

您可以使用数组作为名称,例如:

   <form action="" method="post" id="myForm">
        <table class="addTable">
            <tr>
                <th>Title</th>
                <th>Type</th>
                <th>Quantity</th>
                <th>Customer Price</th>
            </tr>
            <tr>
                <td>
                    <input type="text" name="name[]" placeholder="Title" maxlength="60" value="<?php echo $_POST['name']; ?>">
                </td>
                <td>
                    <input type="text" name="type[]" placeholder="Type" maxlength="20" value="<?php echo $_POST['type']; ?>">
                </td>
                <td>
                    <input type="number" name="qty[]" placeholder="QTY" max="100" value="<?php echo $_POST['qty']; ?>">
                </td>
                <td>
                    <input type="text" name="price[]" placeholder="Price" value="<?php echo $_POST['price']; ?>">
                </td>
            </tr>
        </table>
    </form>

然后你可以使用类似的东西:

<?php
for($i = 0; $i < count($_POST['name']; $i++) {
  $name = $_POST['name'][$i];
  $type = $_POST['type'][$i];
  $qty = $_POST['qty'][$i];
  $price = $_POST['price'][$i];
  // make your query here
}

还有一个小建议:在你的 html 代码中不要直接回显 $_POST 值,首先检查它们是否存在,例如。 G。 &lt;?= isset($_POST['price'])?$_POST['price']:""?&gt;

&lt;?=&lt;?php echo 的快捷方式

isset($_POST['price'])?$_POST['price']:"" 部分是if-else 语句的快捷方式。 (叫ternary operator

意思是一样的:

if(isset($_POST['price'])) {
  echo $_POST['price'];
} else {
  echo "";
}

isset() 本身会检查变量(或本例中的数组键)是否存在。

编辑:关于追加的更新信息

如果你会使用 jQuery,那就很简单了。如果你不使用它,请开始使用它:)

<script>
$(document).ready(function() {
  $('.some-class-of-your-button').click(function() {
    $('.addTable').append($('.addTable tr:nth-child(2)').clone());
    $('.addTable tr:last-child input').val("");
  });
});
</script>

some-class-of-your-button 替换为您的按钮具有的类。该按钮必须在表格之外才能正常工作。

【讨论】:

  • 这很有帮助.. 有没有一种简单的方法可以用 JS 追加另一行输入?
  • 更新了我的答案。
  • 甚至更好.. 但是我如何使用 JQuery 设置每个输入的名称.. 例如第一个应该是 name="name[1]" 然后 name="name[2 ]”等等
  • 你不需要,当只有[]时,它被附加到数组的末尾
  • 这解决了我所有的问题!!非常感谢
猜你喜欢
  • 1970-01-01
  • 2018-01-17
  • 1970-01-01
  • 2014-05-20
  • 1970-01-01
  • 2015-05-18
  • 1970-01-01
  • 2018-08-08
  • 2012-09-07
相关资源
最近更新 更多