php - 以下是一个动态表单代码,它可以通过在行中添加来自用户的多个输入来插入数据,但我希望它在列中。我该怎么做?
问题描述
我从互联网上下载了以下代码。此代码将添加来自用户的额外输入,但它将在数据库中创建一个新行。我希望将其插入一行的不同列中。我该怎么做?
我已经在列中创建了用于插入的字段。
<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";
}
?>
解决方案
根据您的评论,我假设最多有 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";
}
?>
希望这将完成您需要的工作。如果需要更多修改或任何问题,请在评论中告诉我
推荐阅读
- r - R ggplot geom_raster 增加行高以避免点重叠
- apache-kafka - 当记录从多个源插入源主题时,Kafka 源连接器未按预期提取记录
- spring-boot - Spring boot + tomcat部署+非法循环继承依赖问题
- amazon-web-services - DynamoDB:如何在 GSI 上查询按排序键排序的多个分区键
- php - 我正在使用 Laravel Passport 进行身份验证,那么在从 api 接收承载令牌后如何在我的应用程序中应用身份验证
- coq - 如何使用定义来证明某事?
- dart - 带有右边框的圆角卡片小部件颤动
- javascript - 在 Angular 7 中,变更检测周期被多次调用
- python - Python manage.py 在 Visual Studio Code 编辑器中不断出现错误
- javascript - 将完整的日期字符串(如“2019 年 3 月 23 日星期六”)转换为 Javascript Date()