验证MYSQL插入的数组表单输入

时间:2015-06-10 06:16:53

标签: php jquery html mysql

我创建了一个表单,提交了一组输入以在数据库中提交多行。

 <form action="addmultiprod.php" id="multiformsub" method="post">
 <div id="addmultiprod">
        <div class="inputbox"><input name="item_id[]" type="text" class="prodbox" placeholder="Item ID"></input></div>
        <div class="inputbox"><input name="item[]" type="text" class="prodbox" placeholder="Product Name"></input></div>
        <div class="inputbox"><input name="quant[]" type="text" class="prodbox" placeholder="Quantity"></input></div>
        <div class="inputbox"><input name="price[]" type="text" class="prodbox" placeholder="Price"></input></div>
    </div>
    <div id="addmultiprod2">
        <div class="inputbox"><input name="item_id[]" type="text" class="prodbox" placeholder="Item ID"></input></div>
        <div class="inputbox"><input name="item[]" type="text" class="prodbox" placeholder="Product Name"></input></div>
        <div class="inputbox"><input name="quant[]" type="text" class="prodbox" placeholder="Quantity"></input></div>
        <div class="inputbox"><input name="price[]" type="text" class="prodbox" placeholder="Price"></input></div>
    </div>
    <div id="addmultiprod3">
        <div class="inputbox"><input name="item_id[]" type="text" class="prodbox" placeholder="Item ID"></input></div>
        <div class="inputbox"><input name="item[]" type="text" class="prodbox" placeholder="Product Name"></input></div>
        <div class="inputbox"><input name="quant[]" type="text" class="prodbox" placeholder="Quantity"></input></div>
        <div class="inputbox"><input name="price[]" type="text" class="prodbox" placeholder="Price"></input></div>
    </div>
    </div>
 </form>

我的问题是,当值为空时,我将如何验证一组输入的数据,以防止将它们插入数据库。

示例:

<div id="addmultiprod2">或至少1中的输入为空时,查询不会将其插入数据库。

以下是我将数据插入数据库的方法。

 $sql ="INSERT INTO `$tablechoice`(item_id, item_description, item_quantity, item_price) 
 VALUES ('$item_id[0]','$item[0]','$quant[0]','$price[0]'),
 ('$item_id[1]','$item[1]','$quant[1]','$price[1]'), 
 ('$item_id[2]','$item[2]','$quant[2]','$price[2]'),";

 $conn2->query($sql);

为了完成上述示例,我必须添加/修改哪些代码?

更新

我还在看另一个场景,如果我要添加一个选项/按钮,用户可以通过jquery添加额外的输入集,我将如何验证它?

非常感谢您对未来的见解和反馈! :)

4 个答案:

答案 0 :(得分:1)

insert查询之前,您可以检查空值,例如

if(!empty($quant[0])) // similarly for all input arrays
{
   // your insert query here
} 

答案 1 :(得分:1)

有两种方法可以做到这一点:

方法1:

您可以在MySQL表中将每个字段设置为NOT NULL。这样,如果你试图插入一些空的东西,它就不会插入。

方法2:

在PHP代码中,在插入之前检查为空:

if (!empty($item_id[0]) && !empty(item[0]) && !empty($quant[0]) && !empty($price[0])){
     //your database insert code here
}

答案 2 :(得分:1)

注意:

  • 您可以通过循环运行它们来检查它们。如果提交的表单是动态生成的,那就很好。
  • 无需</input>

示例代码:

$counter = count($_POST["item_id"]); /* COUNT HOW MANY FIELD HAS BEEN SUBMITTED*/

for($x = 0; $x<= $counter; $x++){ /* RUN IT THROUGH A FOR LOOP */

  if(!empty($item_id[$x]) && !empty($item[$x]) && !empty($quant[$x]) && !empty($price[$x])){

    /* THIS WILL ONLY EXECUTE IF THE SET IS NOT EMPTY */
    $sql ="INSERT INTO `$tablechoice`(item_id, item_description, item_quantity, item_price) 
           VALUES ('$item_id[$x]','$item[$x]','$quant[$x]','$price[$x]')";
    $conn2->query($sql);

  } /* END OF CHECKING EACH FIELD */

} /* END OF LOOP */

答案 3 :(得分:0)

如果您想在单击提交按钮之前进行过滤,则可以使用HTML 5属性。现在大多数浏览器都支持HTML 5,如果您只想让输入不为空,我认为这是更好的方法:

使用HTML 5属性 - &gt; “必需的”

Ex: <input type="text" name="username" required>

当点击提交按钮时,如果用户名为空,该代码将显示消息。

我希望这个帮助