我有一个简单的表单下拉按钮,有3个输入选项。
我想这样做,当用户选择其中一个选项时,该选择的值将被提交到我的MySQL数据库。我以前工作过,但是在更改某些设置后它不再有效,我无法弄清楚原因。
这是我的HTML代码:
<form action="evalsubmit.php" method="post" name="evaluationform">
<div class="btn-group col-lg-2">
<div class="homeworkmenu">
<button class="btn btn-danger dropdown-toggle homeworkselection" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Homework
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
<li><input type="hidden" value="absent" name="homeworkeval"><a href="#">Absent</a></li>
<li><input type="hidden" value="missing" name="homeworkeval"><a href="#">Missing</a></li>
<li><input type="hidden" value="incomplete" name="homeworkeval"><a href="#">Incomplete</a></li>
</ul>
</div>
</div>
</form>
和我的JS:
$(".dropdown-menu li a").click(function(){
$(this).parents(".homeworkmenu").find('.homeworkselection').html($(this).text() + ' <span class="caret"></span>');
$(this).parents(".homeworkmenu").find('.homeworkselection').val($(this).text());
});
PHP:
if (isset($_POST['evalsubmit'])) {
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$evallevel = $_POST['evallevel'];
$homework = $_POST['homeworkeval'];
$classwork = $_POST['classworkeval'];
$general = $_POST['generaleval'];
$comments = $_POST['evalcomments'];
$evaldate = $_POST['evaldate'];
$oraleval = $_POST['oraleval'];
$selection = $_POST['selection'];
$user = $_SESSION['username'];
if ($selection == 'mathselection') {
$table_name = 'mathdb';
} elseif ($selection == 'readingselection') {
$table_name = 'readingdb';
}
$sql = "INSERT INTO $table_name (firstname, lastname, level, homework, classwork, general, comments, oraleval, evaldate, addedBy)
VALUES ('$firstname', '$lastname', '$evallevel', '$homework', '$classwork', '$general', '$comments', '$oraleval', '$evaldate', '$user')";
}
目前,无论我选择何种选择,无论是“缺席”,“缺失”还是“不完整”,它都会将最后一个选项写入我的数据库中,在这种情况下“不完整”。
提前感谢所有帮助!
答案 0 :(得分:1)
您是否有任何理由不想使用<select>
代码?好像你可能正在攻击它的替代品。使用<select>
可以解决您问题中提到的问题。
可能看起来像
<select name="homeworkeval">
<option value="absent">
Absent
</option>
<option value="missing">
Missing
</option>
<option value="incomplete">
Incomplete
</option>
</select>
请注意,我的答案绝不会解决2by2引起您注意的SQL注入漏洞。
我希望有所帮助。
答案 1 :(得分:-1)
我会尽力指出你正确的方向
如果你这样做
var homeworkeval = 1
homeworkeval = 2
homeworkeval = 3
最后homeworkeval
的价值是多少? ; - )
解决方案是
<input type="hidden" value="absent" name="homeworkeval">
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
<li><a data-name="absent" href="#">Absent</a></li>
<li><a data-name="missing" href="#">Missing</a></li>
<li><a data-name="incomplete" href="#">Incomplete</a></li>
</ul>
然后是js
$(".dropdown-menu li a").click(function(){
// will be absent or missing or incomplete
let name = $(this).data("name");
$("[name='homeworkeval']").val(name)
});