2016-11-11 6 views
-2

私のPHPスクリプトを使用して私の動的HTMLフォームの検証に問題があります。私はsubmitを押すと、定義されていないインデックスがありますが、このインデックスが定義されています。私の質問は他の人とは異なります。私はこのコードをすべて単一の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