【问题标题】:Insert multiple record into database using for loop使用for循环将多条记录插入数据库
【发布时间】:2023-04-03 13:35:01
【问题描述】:

我有一个插入多条记录的表单。

表格有:字段用户名(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>

【问题讨论】:

  • 我在您的输入周围没有看到任何&lt;form&gt; 标签,您是否以某种方式使用 JS 代码解决了这些问题?您的 samplelocationremarks 输入似乎也是数组,但在提交时您不会拆分它们。如果您一次只提交一个,我不确定这是否有必要。
  • @droopsnoot 可能是语法错误,就形式而言,问题仅在于保存多行。
  • 您还拥有两次btr 字段。帖子里有什么混淆吗?
  • 是的,关于 btr 是错误的
  • 或许您可以发布更正后的代码。

标签: javascript php html mysql


【解决方案1】:

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

所以在您的if(isset($_POST['add'])) 中,您可以像$arr_user = $_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>

【讨论】:

    猜你喜欢
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多