首页 > 解决方案 > 以下是一个动态表单代码,它可以通过在行中添加来自用户的多个输入来插入数据,但我希望它在列中。我该怎么做?

问题描述

我从互联网上下载了以下代码。此代码将添加来自用户的额外输入,但它将在数据库中创建一个新行。我希望将其插入一行的不同列中。我该怎么做?

我已经在列中创建了用于插入的字段。

<form name="add_name" id="add_name">
<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" /></td>                               
<td><button type="button" name="add" id="add" class="btn btn-success">Add 
More</button> 
</td></tr>
</table>
<input type="button" name="submit" id="submit" class="btn btn-info" 
value="Submit" />
</form>

<script>
$(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();
});

$('#submit').click(function(){      
    $.ajax({
        url:"name.php",
        method:"POST",
        data:$('#add_name').serialize(),
        success:function(data)
        {
            alert(data);
            $('#add_name')[0].reset();
        }
    });
});

});
</script>

这是name.php

<?php
$connect = mysqli_connect("localhost", "root", "", "testing");
$number = count($_POST["name"]);
if($number > 1)
{
for($i=0; $i<$number; $i++)
{
    if(trim($_POST["name"][$i] != ''))
    {
        $sql = "INSERT INTO tbl_name(namec) VALUES('".mysqli_real_escape_string($connect, $_POST["name"][$i])."')";
        mysqli_query($connect, $sql);
    }
}
echo "Data Inserted";
}
else
{
echo "Please Enter Name";
}
?>

标签: phphtmlcssmysql

解决方案


根据您的评论,我假设最多有 4 个名称。您可以按以下方式进行工作:-

<?php
 $connect = mysqli_connect("localhost", "root", "", "testing");
 $number = count($_POST["name"]);
 $db_col_names = array('namea','nameb','namec','named');
 $names = array();

 if($number > 1)
 {
      for($i=0; $i<$number; $i++)
      {
           if(trim($_POST["name"][$i]) != '')
           {
                $names[] = mysqli_real_escape_string($connect, $_POST["name"][$i]); //get all the values from from in an array
           }
      }
      $names = implode("','", $names); //make all the values as string to pass in insert query
      $db_col_names = array_slice($db_col_names, 0, $number); //slice the DB columns to the names length entered
      $db_col_names = implode("`,`", $db_col_names ); //make all the values as string to pass in insert query

      $sql = "INSERT INTO tbl_name(`".$db_col_names."`) VALUES('".$names."')";
      mysqli_query($connect, $sql);

      echo "Data Inserted";
 }
 else
 {
      echo "Please Enter Name";
 }
?>

希望这将完成您需要的工作。如果需要更多修改或任何问题,请在评论中告诉我


推荐阅读