Я скачал следующий код из интернета. Этот код добавит дополнительные входные данные от пользователя, но создаст новую строку в базе данных. Я хочу, чтобы это было вставлено в разные столбцы строки. Как мне это сделать?
Я создал поля для вставки в столбец.
<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>
А это имя.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";
}
?>
Не могли бы вы показать мне, как? Я пробовал $sql= "INSERT INTO tbl_name(namea, nameb,namec,named) VALUES('".mysqli_real_escape_string($connect, $_POST["name"][$i])."')"; mysqli_query($connect, $sql);
Я хотел бы предложить вам, что ваш подход неверен, так как пользователь может ввести «n» имен, но ваши столбцы будут ограничены некоторыми числами. Скажите, пожалуйста, сколько имен может ввести пользователь?
Я уже знаю, что. Эта ситуация отличается @Praveen Pasishetti
4 мне хватает. Я вас понимаю, но давайте отклоним лишнюю вставку @anuj
for($i=0; $i<$number; $i++) эта строка позволяет вводить данные в несколько строк, а не в несколько столбцов, так что, если вы попробуете просто $_POST["name"][0],$_POST ["имя"][1],$_POST["имя"][2],$_POST["имя"][3] для 4 значений?
Согласно вашим комментариям, я предполагаю, что будет максимум 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";
}
?>
Надеюсь, это сделает работу, которая вам нужна. Если нужны какие-либо дополнительные модификации или какие-либо проблемы, дайте мне знать в комментариях.
в вашем запросе на вставку вы упомянули один столбец и для этого вы дали одно значение. Если вам нужно вставить в несколько столбцов, вам нужно добавить запрос на вставку.