Javascript 无法将教师和科学家的值发布到数据库
这些是“选择”框中的选项。选择其中一个选项后,将显示一个文本框Javascript 无法将教师和科学家的值发布到数据库,javascript,php,Javascript,Php,这些是“选择”框中的选项。选择其中一个选项后,将显示一个文本框 <select name="category" required id="category" style="width:75%;" onchange = "ShowHideDiv();"> <option value="" disabled selected hidden>Category</option> <option value="Student">Student&l
<select name="category" required id="category" style="width:75%;" onchange = "ShowHideDiv();">
<option value="" disabled selected hidden>Category</option>
<option value="Student">Student</option>
<option value="Teacher">Teacher</option>
<option value="Scientist">Scientist</option>
<option value="Lab Manager">Lab Manager</option>
</select>
类别
学生
老师
科学家
实验室经理
以下是根据选择框的选择而显示的文本框:
<div id="roll" style="display: none">
<input name="roll" type="text" id="roll"/>
<span class="highlight"></span>
<span class="bar"></span>
<label>Roll No</label>
</div>
<div id="teacher" style="display: none">
<input name="des" type="text" id="teacher"/>
<span class="highlight"></span>
<span class="bar"></span>
<label>Teacher's Designation</label>
</div>
<div id="scientist" style="display: none">
<input name="des" type="text" id="scientist"/>
<span class="highlight"></span>
<span class="bar"></span>
<label>Scientist's Designation</label>
</div>
<div id="manager" style="display: none">
<input name="des" type="text" id="manager"/>
<span class="highlight"></span>
<span class="bar"></span>
<label>Lab Manager's Designation</label>
</div>
卷号
教师指定
科学家的任命
实验室经理的任命
这是用于在选择框中选择选项时显示文本框的脚本:
<script type="text/javascript">
function ShowHideDiv()
{
var category = document.getElementById("category");
var roll = document.getElementById("roll");
var teacher = document.getElementById("teacher");
var scientist = document.getElementById("scientist");
var manager = document.getElementById("manager");
roll.style.display = category.value == "Student" ? "block" : "none";
teacher.style.display = category.value == "Teacher"? "block" : "none";
scientist.style.display = category.value == "Scientist" ? "block" : "none";
manager.style.display = category.value == "Lab Manager"? "block" : "none";
}
函数ShowHideDiv()
{
var category=document.getElementById(“category”);
var roll=document.getElementById(“roll”);
var teacher=document.getElementById(“教师”);
var-scientist=document.getElementById(“科学家”);
var manager=document.getElementById(“manager”);
roll.style.display=category.value==“学生”?“块”:“无”;
teacher.style.display=category.value==“teacher”?“block”:“无”;
科学家.style.display=category.value==“科学家”?“块”:“无”;
manager.style.display=category.value==“实验室管理器”?“块”:“无”;
}
下面是在dabase中保存数据的代码:
<?php
include "connect.php";
if(isset($_POST["submit"]))
{
$name=$_POST["name"];
$gender=$_POST["gender"];
$category=$_POST["category"];
$roll=$_POST["roll"];
$desig=$_POST["des"];
$college=$_POST["college"];
$department=$_POST["department"];
$email=$_POST["email"];
$phno=$_POST["phno"];
$dob=$_POST["dob"];
$lab=$_POST["lab"];
$sql="insert into usercreation values('$name','$gender','$category','$roll','$desig','$college','$department','$email','$phno','$dob','$lab')";
if(mysql_query($sql,$link))
{
header("location:usercreation.php?ok=1");
}
else
{
echo mysql_error();
}
}
?>
问题已经解决了。感谢@Pablo Barria Urenda和@CaitLAN Jenner
<div id="roll" style="display: none">
<input name="roll" type="text" id="roll"/>
<span class="highlight"></span>
<span class="bar"></span>
<label>Roll No</label>
</div>
<div id="teacher" style="display: none">
<input name="des1" type="text" id="teacher"/>
<span class="highlight"></span>
<span class="bar"></span>
<label>Teacher's Designation</label>
</div>
<div id="scientist" style="display: none">
<input name="des2" type="text" id="scientist"/>
<span class="highlight"></span>
<span class="bar"></span>
<label>Scientist's Designation</label>
</div>
<div id="manager" style="display: none">
<input name="des3" type="text" id="manager"/>
<span class="highlight"></span>
<span class="bar"></span>
<label>Lab Manager's Designation</label>
</div>
卷号
教师指定
科学家的任命
实验室经理的任命
他提出的解决方案是更改文本框的名称
下面是保存代码(已更改)
请参阅。本质上,大多数浏览器在对象上设置display:none属性时不会向服务器发送数据。另外,要注意内联SQL,就像您正在使用的一样,它很容易受到SQL注入攻击。这是一个理论,但由于Manager是最后一个输入框,您只是在隐藏它,它的空白值是否可能会覆盖其他两个输入框的值?(因为它们都有相同的“des”名称)@PabloBarríaUrenda实际上也是正确的。前两条注释是代码的主要问题。即使如此,display:none属性也不会被大多数浏览器从post数据中排除。“des”这个名字似乎是个问题。我试着编辑它,结果成功了。谢谢你,伙计。谢谢你的帮助。我很高兴你的问题得到了解决。但是,您仍然应该考虑SQL注入的对策。在解释SQL语句之前,特制的负载可能会改变SQL语句。我将在后面的阶段添加它们。谢谢CaitLANJenner的提醒。
<?php
include "connect.php";
if(isset($_POST["submit"]))
{
$name=$_POST["name"];
$gender=$_POST["gender"];
$category=$_POST["category"];
$roll=$_POST["roll"];
$des1=$_POST["des1"];
$des2=$_POST["des2"];
$des3=$_POST["des3"];
$college=$_POST["college"];
$department=$_POST["department"];
$email=$_POST["email"];
$phno=$_POST["phno"];
$dob=$_POST["dob"];
$lab=$_POST["lab"];
$sql="insert into usercreation values('$name','$gender','$category','$roll','$des1','$des2','$des3','$college','$department','$email','$phno','$dob','$lab')";
if(mysql_query($sql,$link))
{
header("location:usercreation.php?ok=1");
}
else
{
echo mysql_error();
}
}
?>