2016-11-11 150 views
-2

我有一个使用我的PHP脚本验证我的动态HTML形式的问题。当我推送提交时,它表示存在未定义的索引,但是此索引已定义。我的问题与其他人不同,因为我试图将所有这些代码写入单个php文件。我的代码有什么问题?无法验证动态形式与PHP

我的HTML:

<form method="POST" action="/vehicles/add"> 
    <div class="table-responsive"> 
     <table class="table table-bordered" id="dynamic_field"> 
      <tr> 
       <td><input type="text" name="name[]" placeholder="Enter your Name" class="form-control name_list" required></td> 
       <td><button type="button" name="add" id="add" class="btn btn-success">Add More</button></td> 
      </tr> 
     </table> 
    </div> 
    <input type="submit" name="submit" class="btn btn-primary" value="Submit" /> 
</form> 

我的jQuery脚本:

$(document).ready(function(){ 
     var i=1; 
     $('#add').click(function(){ 
      i++; 
      $('#dynamic_field').append('<tr id="row'+i+'"><td><input type="text" name="name[]" placeholder="Enter your Name" class="form-control name_list" /></td><td><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove">X</button></td></tr>'); 
     }); 
     $(document).on('click', '.btn_remove', function(){ 
      var button_id = $(this).attr("id"); 
      $('#row'+button_id+'').remove(); 
     }); 
     }); 

我的PHP脚本:

if (isset($_POST['name'])) { 
    $fields = count($_POST["name"]); 
    for($i = 0; $i < $fields; $i++) { 
     if(trim($_POST["name"][$i] != '')) 
      { 
       mysqli_query($CONNECT, "INSERT INTO `vehicles` VALUES('', '$_POST[name][$i]', 0)"); 
      } 
    } 
} 

我的错误:

PHP Notice: Undefined index: submit in 
+2

什么是错误信息? –

+0

你为什么不喜欢使用'foreach'? – Barmar

回答

1

对于多维数组,你需要使用复杂的字符串语法替代的价值,所以你必须把花括号周围和引用文字索引。

mysqli_query($CONNECT, "INSERT INTO `vehicles` VALUES('', '{$_POST['name'][$i]}', 0)"); 

但是,使用准备好的查询来防止SQL注入会更好。

$stmt = mysqli_prepare($CONNECT, "INSERT INTO vehicles VALUES ('', ?, 0)"); 
mysqli_stmt_bind_param($stmt, 's', $name); 
foreach ($_POST['name'] as $name) { 
    if (trim($name) != '') { 
     mysqli_stmt_execute($stmt); 
    } 
} 
+0

它会解决我的问题与未定义的索引? –

+0

我在您发布的代码中看不到任何'submit'的使用。这是一个不同的问题。 – Barmar