Javascript 如何使用PHP将动态HTML元素插入数据库?
我在提交HTML表单时遇到一些问题。表单允许用户使用按钮向HTML页面添加技能。然后需要将这些新创建的技能插入数据库。问题是,我一次只能插入一项技能。技能作为复选框输入,所有选中的技能都应输入数据库。我认为我的问题是,动态创建的每个复选框共享相同的$skill\u name变量,但当我从数据库中获取现有技能以显示时,这不是问题。我添加了一些ajax,试图在post语句中保存创建的每项技能,但当我实际转到insert时,这并没有帮助。INSERT语句如下所示:Javascript 如何使用PHP将动态HTML元素插入数据库?,javascript,php,html,database,forms,Javascript,Php,Html,Database,Forms,我在提交HTML表单时遇到一些问题。表单允许用户使用按钮向HTML页面添加技能。然后需要将这些新创建的技能插入数据库。问题是,我一次只能插入一项技能。技能作为复选框输入,所有选中的技能都应输入数据库。我认为我的问题是,动态创建的每个复选框共享相同的$skill\u name变量,但当我从数据库中获取现有技能以显示时,这不是问题。我添加了一些ajax,试图在post语句中保存创建的每项技能,但当我实际转到insert时,这并没有帮助。INSERT语句如下所示: if(!empty($_POST["
if(!empty($_POST["backend"])){
$backend = $_POST["backend"];
$sql2 = "INSERT INTO skill (skill_cat_id, skill_name) VALUES (?,?)";
$skill_cat_id = 1;
for ($i = 0; $i < count($backend); $i++){
$skill_name = $_POST["skill_name"];
if($stmt = $mysqli->prepare($sql2)){
$stmt->bind_param("is", $skill_cat_id, $backend[$i]);
if ($stmt->execute()) {
echo "<script>
alert('Success!');
</script>";
}
else{
echo "<script>
alert('Failure!');
</script>";
}
}
}
}
<h5>Backend Technologies </h5>
<div class="container">
<div id = "backendDiv">
<?php
$backend=getbackendtech();
while($row = $backend -> fetch_assoc()) {
// echo "<input type='checkbox' value='{$data['skill_name']}'>". $data['skill_name'];
echo "<div class=\"list-group-item checkbox\" id = \"backendCheckBoxes\">
<label><input type=\"checkbox\" name=\"backend[]\" class=\"common_selector form\" value='{$row['skill_name']}'> {$row['skill_name']}</label>
</div>";
}
echo"<input type=\"button\" class='btn btn-warning btn-sm' id = \"addBackendButton\" value = \"Add\" onclick=\"addSkill('backendCheckBoxes', 'backendDiv', 'backend', 'addBackendButton')\">";
?>
</div>
</div>
if(!empty($\u POST[“backend”])){
$backend=$_POST[“backend”];
$sql2=“插入技能(技能类别id、技能名称)值(?,)”;
$skill\u cat\u id=1;
对于($i=0;$iprepare($sql2)){
$stmt->bind_param(“is”、$skill_cat_id、$backend[$i]);
如果($stmt->execute()){
回声“
警惕(“成功!”);
";
}
否则{
回声“
警报(“故障!”);
";
}
}
}
}
的HTML如下所示:
if(!empty($_POST["backend"])){
$backend = $_POST["backend"];
$sql2 = "INSERT INTO skill (skill_cat_id, skill_name) VALUES (?,?)";
$skill_cat_id = 1;
for ($i = 0; $i < count($backend); $i++){
$skill_name = $_POST["skill_name"];
if($stmt = $mysqli->prepare($sql2)){
$stmt->bind_param("is", $skill_cat_id, $backend[$i]);
if ($stmt->execute()) {
echo "<script>
alert('Success!');
</script>";
}
else{
echo "<script>
alert('Failure!');
</script>";
}
}
}
}
<h5>Backend Technologies </h5>
<div class="container">
<div id = "backendDiv">
<?php
$backend=getbackendtech();
while($row = $backend -> fetch_assoc()) {
// echo "<input type='checkbox' value='{$data['skill_name']}'>". $data['skill_name'];
echo "<div class=\"list-group-item checkbox\" id = \"backendCheckBoxes\">
<label><input type=\"checkbox\" name=\"backend[]\" class=\"common_selector form\" value='{$row['skill_name']}'> {$row['skill_name']}</label>
</div>";
}
echo"<input type=\"button\" class='btn btn-warning btn-sm' id = \"addBackendButton\" value = \"Add\" onclick=\"addSkill('backendCheckBoxes', 'backendDiv', 'backend', 'addBackendButton')\">";
?>
</div>
</div>
后端技术
你打开了吗?您应该会看到一个“未定义索引”通知:$skill\u name=$\u POST[“skill\u name”]
。没有名为skill\u name
的输入。右边应该有$backend[$i]
。您正在迭代数组,但从未使用数组中的任何值。好吧,我可能把一些旧代码和一些新代码混在一起了。我曾经有一个名为skill_name的隐藏字段,但这只允许我在提交表单时一次发布一项技能。现在,当我尝试在for循环中将$skill_名称作为$backend[$I]插入时,我得到了一个php错误致命错误:未捕获错误:只能通过引用传递变量。请使用更改后的代码编辑问题,并指定此错误确切出现的位置。我将代码更改为插入$backend[$I]作为skill_name,我说过错误发生在这里,当我尝试将参数$backend[$I]绑定到skill_name列时。