Javascript 使用for循环将多条记录插入数据库

Javascript 使用for循环将多条记录插入数据库,javascript,php,html,mysql,Javascript,Php,Html,Mysql,我有一个表格可以插入多条记录 表格有:字段用户名(a)、BTR(B)、使用的设施(C)、样本数量(D)和与不同样本相关的记录(1,2,3…) 使用此表单,我将多个记录(ABCD1、ABCD2、ABCD3、ABCD4…插入数据库 我尝试使用for循环,但它正在保存最后一个记录值。我无法执行此操作。请帮助我 if(isset($_POST['add'])) { $user=$_POST['user']; $btr=$_POST['btr']; $facility=$

我有一个表格可以插入多条记录

表格有:字段用户名(a)、BTR(B)、使用的设施(C)、样本数量(D)和与不同样本相关的记录(1,2,3…)

使用此表单,我将多个记录(ABCD1、ABCD2、ABCD3、ABCD4…插入数据库

我尝试使用for循环,但它正在保存最后一个记录值。我无法执行此操作。请帮助我

 if(isset($_POST['add']))
    {
    $user=$_POST['user'];
    $btr=$_POST['btr'];
    $facility=$_POST['facility'];
    $type=$_POST['type'];
    $samplelocation=$_POST['samplelocation'];
    $remarks=$_POST['remarks'];
    $samplecount=$_POST['samplecount'];
    $sql="INSERT INTO  tblfacility(user,btr,facility,type,samplelocation,remarks) VALUES(:user,:btr,:facility,:type,:samplelocation,:remarks)";
    $query = $dbh->prepare($sql);
    $query->bindParam(':user',$user,PDO::PARAM_STR);
    $query->bindParam(':btr',$btr,PDO::PARAM_STR);
    $query->bindParam(':facility',$facility,PDO::PARAM_STR);
    $query->bindParam(':type',$type,PDO::PARAM_STR);
    $query->bindParam(':samplelocation',$samplelocation,PDO::PARAM_STR);
    $query->bindParam(':remarks',$remarks,PDO::PARAM_STR);
    $query->execute();
    $lastInsertId = $dbh->lastInsertId();
    if($lastInsertId)
    {
    $_SESSION['msg']="Sample Listed successfully";
    header('location:manage-books.php');
    }
    else 
    {
    $_SESSION['error']="Something went wrong. Please try again";
    header('location:manage-books.php');
    <label>BTR No.<span style="color:red;">*</span></label>
    <input class="form-control" type="text" name="btr"  required="required" autocomplete="off" />
    </div>

    <label>BTR No.<span style="color:red;">*</span></label>
    <input class="form-control" type="text" name="btr"  required="required" autocomplete="off" />
    </div>

    <div class="form-group">
    <label>Facility Used<span style="color:red;">*</span></label>
    <select class="form-control" type="text" name="facility"  required="required" autocomplete="off"  />
      <option value="AMS">AMS 14C</option>
      <option value="AMS">AMS 10Be</option>
      </select>  
    <p class="help-block"></p>
    </div>
    <div class="form-group">
    <label>Number Of Sample<span style="color:red;">*</span></label>
    <input class="form-control" type="text" name="samplecount" onchange="samplecount()"  required="required" autocomplete="off" />
    </div>
    <td>

    <table   class="table table-striped small-text" id="tb" >
    <tr class="tr-header">
    <h4 style="color:darkGreen;" ><b><u>SAMPLE INFORMATION</u></b></h4> 
    <th class= "col-md-1" align="centre">Sl.No.</th>
    <th class= "col-md-2" align="centre">TYPE OF SAMPLE</th>
    <th  class= "col-md-2" align="centre">Sample Location</th>
    <th class= "col-md-6" align="centre"> Remarks</th>
    <th><a href="javascript:void(0);" style="font-size:18px;" id="addMore" title="Add More Sample"><span class="glyphicon glyphicon-plus"></span></a></th>

    <tr>
    <td><input type="text"  name="slno" value= "<?php echo $i; ?>" class="form-control" ></td> 
    <td><select  type="text" name="type" class="form-control">
      <option value="SELECT TYPE">SELECT TYPE</option>
       <option value="BONE">BONE</option>
       <option value="CARBONATE">CARBONATE</option>
      </select></td>

    <td><input type="text" name="samplelocation" class="form-control" ></td>
    <td><input type="text" name="remarks" class="form-control"></td>

    <td><a href='javascript:void(0);'  class='remove'><span class='glyphicon glyphicon-remove'></span></a></td>
    <?php }?>
    </tr>
    </table>
    <button type="submit" name="add" class="btn btn-info"  align="middle" >ADD </button>
    </form>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> 
    <script>
    $(function(){
        $('#addMore').on('click', function() {
                  var data = $("#tb tr:eq(1)").clone(true).appendTo("#tb");
                  data.find("input").val('');

         });
         $(document).on('click', '.remove', function() {
             var trIndex = $(this).closest("tr").index();
                if(trIndex>1) {
                 $(this).closest("tr").remove();
               } else {
                 alert("Sorry!! Can't remove first row!");
               }
          });
    }); 

    </script>
                                </div>
                            </div>
                                </div>

            </div>

        </div>
        </div>
    </body>
    </html>
if(isset($\u POST['add']))
{
$user=$_POST['user'];
$btr=$_POST['btr'];
$facility=$_POST['facility'];
$type=$_POST['type'];
$samplelocation=$\u POST['samplelocation'];
$comments=$_POST['comments'];
$samplecount=$\u POST['samplecount'];
$sql=“插入TBLFacity(用户、btr、设施、类型、采样位置、备注)值(:用户、:btr、:设施、:类型、:采样位置、:备注)”;
$query=$dbh->prepare($sql);
$query->bindParam(':user',$user,PDO::PARAM_STR);
$query->bindParam(':btr',$btr,PDO::PARAM_STR);
$query->bindParam(':facility',$facility,PDO::PARAM_STR);
$query->bindParam(':type',$type,PDO::PARAM_STR);
$query->bindParam(':samplelocation',$samplelocation,PDO::PARAM_STR);
$query->bindParam(':rements',$rements,PDO::PARAM_STR);
$query->execute();
$lastInsertId=$dbh->lastInsertId();
如果($lastInsertId)
{
$\u会话['msg']=“成功列出样本”;
标题('location:managebooks.php');
}
其他的
{
$\u会话['error']=“出现问题,请重试”;
标题('location:managebooks.php');
BTR号*
BTR号*
使用的设施*
AMS14C
AMS 10Be

样本数* 样本信息 没有。 样本类型 样本位置 评论
在所有输入名称中添加
[]
,例如:
name=“user[]”
。提交后,这将为您提供一个输入元素数组

因此,在您的
if(isset($\u POST['add'])
中,您可以像
$arr\u user=$\u POST['user'];
那样获得这个数组,然后使用for循环来循环这些数据。 你的tr标签可能是

<tr class="tr-header">
<h4 style="color:darkGreen;" ><b><u>SAMPLE INFORMATION</u></b></h4> 
<th class= "col-md-1" align="centre">Sl.No.</th>
<th class= "col-md-2" align="centre">TYPE OF SAMPLE</th>
<th  class= "col-md-2" align="centre">Sample Location</th>
<th class= "col-md-6" align="centre"> Remarks</th>
<th><a href="javascript:void(0);" style="font-size:18px;" id="addMore" title="Add More Sample"><span class="glyphicon glyphicon-plus"></span></a></th>

<tr>
<td><input type="text"  name="slno[]" value= "<?php echo $i; ?>" class="form-control" ></td> 
<td><select  type="text" name="type[]" class="form-control">
  <option value="SELECT TYPE">SELECT TYPE</option>
   <option value="BONE">BONE</option>
   <option value="CARBONATE">CARBONATE</option>
  </select></td>

<td><input type="text" name="samplelocation[]" class="form-control" ></td>
<td><input type="text" name="remarks[]" class="form-control"></td>

<td><a href='javascript:void(0);'  class='remove'><span class='glyphicon glyphicon-remove'></span></a></td>
<?php }?>
</tr>

样本信息
没有。
样本类型
样本位置
评论

在所有输入名称中添加
[]
,例如:
name=“user[]”
。提交后,这将为您提供一个输入元素数组

因此,在您的
if(isset($\u POST['add'])
中,您可以像
$arr\u user=$\u POST['user'];
那样获得这个数组,然后使用for循环来循环这些数据。 你的tr标签可能是

<tr class="tr-header">
<h4 style="color:darkGreen;" ><b><u>SAMPLE INFORMATION</u></b></h4> 
<th class= "col-md-1" align="centre">Sl.No.</th>
<th class= "col-md-2" align="centre">TYPE OF SAMPLE</th>
<th  class= "col-md-2" align="centre">Sample Location</th>
<th class= "col-md-6" align="centre"> Remarks</th>
<th><a href="javascript:void(0);" style="font-size:18px;" id="addMore" title="Add More Sample"><span class="glyphicon glyphicon-plus"></span></a></th>

<tr>
<td><input type="text"  name="slno[]" value= "<?php echo $i; ?>" class="form-control" ></td> 
<td><select  type="text" name="type[]" class="form-control">
  <option value="SELECT TYPE">SELECT TYPE</option>
   <option value="BONE">BONE</option>
   <option value="CARBONATE">CARBONATE</option>
  </select></td>

<td><input type="text" name="samplelocation[]" class="form-control" ></td>
<td><input type="text" name="remarks[]" class="form-control"></td>

<td><a href='javascript:void(0);'  class='remove'><span class='glyphicon glyphicon-remove'></span></a></td>
<?php }?>
</tr>

样本信息
没有。
样本类型
样本位置
评论

我没有在您的输入周围看到任何
标记,您是否用JS代码绕过了这些标记?您的
samplelocation
备注
输入似乎也是数组,但在提交时您不会拆分它们。如果一次只提交一个,我不确定是否有必要这样做。@droopsnoot这可能是语法错误错误,就表单而言,问题只在于保存多行。您还有两次
btr
字段。帖子中有什么混淆吗?是的,关于btr的问题是错误的,您可以发布更正后的代码。我在您的输入周围没有看到任何
标记,您是否以某种方式绕过了这些标记使用JS代码?您的
samplelocation
备注
输入似乎也是数组,但在提交时您不会拆分它们。如果一次只提交一个,我不确定是否有必要这样做。@droopsnoot这可能是语法错误,就表单而言,问题只是保存mulyip勒罗。你也有两次的
btr
字段。帖子中有什么混淆吗?是的,关于btr的错误,你可以发布正确的代码。