gpt4 book ai didi

php - 为什么无法检索 $course 变量?

转载 作者:行者123 更新时间:2023-12-01 04:56:47 24 4
gpt4 key购买 nike

下面是一段 php/mysqli 代码,它在下拉菜单中显示类(class)列表:

    $courseactive = 1;

$sql = "SELECT CourseId, CourseNo, CourseName FROM Course WHERE CourseActive = ? ORDER BY CourseNo";

$sqlstmt=$mysqli->prepare($sql);

$sqlstmt->bind_param("i",$courseactive);

$sqlstmt->execute();

$sqlstmt->bind_result($dbCourseId, $dbCourseNo, $dbCourseName);

$courses = array(); // easier if you don't use generic names for data

$courseHTML = "";
$courseHTML .= '<select name="courses" id="coursesDrop">'.PHP_EOL;
$courseHTML .= '<option value="">Please Select</option>'.PHP_EOL;

$outputcourse = "";
$hiddencourse = "";

while($sqlstmt->fetch())
{
$course = $dbCourseId;
$courseno = $dbCourseNo;
$coursename = $dbCourseName;
$courseHTML .= "<option value='".$course."'>" . $courseno . " - " . $coursename . "</option>".PHP_EOL;

if (isset($_POST['courses']) && ($_POST['courses'] == $course)) {
$outputcourse .= "<p><strong>Course:</strong> " . $courseno . " - " . $coursename . "</p>";
$hiddencourse .= "<p><input type='hidden' id='hiddencourse' value='". $courseno . " - " . $coursename ."'></p>";
}

}

$courseHTML .= '</select>';

现在,如果您查看 <option>在 while 循环中的标签中,我已经声明每个选项的每个值将是类(class)的 Id。我这样做的原因是因为我想使用该值来查找 CourseId对于所选类(class),然后使用下面的代码将其插入数据库中,该代码位于单独的页面上( insertmoduletocourse ):

$courseid = (isset($_POST['courses'])) ? $_POST['courses'] : '';    

$insertsql = "
INSERT INTO Course_Module
(CourseId)
VALUES
(?)
";
if (!$insert = $mysqli->prepare($insertsql)) {
// Handle errors with prepare operation here
}

$insert->bind_param("i", $courseid);

$insert->execute();

if ($insert->errno) {
// Handle query error here
}

$insert->close();

但问题是,它并没有在插入中插入 CourseId 编号,而是只是显示 0 ,这意味着无法从下拉选项的值中检索类(class) ID。我的问题是,为什么它无法取消这个并因此继续插入 0?

我对 $course 进行了回显在"<option value='".$course."'>"它显示了正确的类(class) ID,所以我不知道为什么它无法检索插入的类(class) ID?

我正在使用下面的ajax函数导航到insertmoduletocourse :

function submitform() {    

$.ajax({
type: "POST",
url: "insertmoduletocourse.php",
data: $('#detailsForm').serialize(),
success: function(html){
$("#targetdiv").html(html);
$('#targetdiv').show();

}
});
}

下面是包含类(class)下拉菜单和说明从下拉菜单中选择了哪个类(class)的字符串的表单:

$moduleForm = "<div class='lt-container'>
<form action='".htmlentities($_SERVER['PHP_SELF'])."' method='post' id='moduleForm'>
<p id='warnings'>{$pHTML}</p>
{$outputcourse}
{$hiddencourse}
<p><strong>Add Module</strong></p>
<p><strong>Module:</strong> {$moduleHTML} </p>
</form>
</div>";

下面是包含模块详细信息的表单:

$addmodule = "
<div class='lt-container'>
<form id='detailsForm'>

<p><strong>Module Details</strong></p>
<table>
<tr>
<th></th>
<td><input type='hidden' id='idmodule' name='moduleid' value='' /> </td>
</tr>
<tr>
<th>Module ID:</th>
<td><input type='text' id='nomodule' name='moduleno' readonly='readonly' value='' /> </td>
</tr>
<tr>
<th>Module Name:</th>
<td><input type='text' id='namemodule' name='modulename' readonly='readonly' value='' /> </td>
</tr>
<tr>
<th>Credits:</th>
<td><input type='text' id='credits' name='creditsname' readonly='readonly' value=''/> </td>
</tr>
</table>
<div id='moduleAlert'></div>

</form>

<p id='addbtn'><button id='addSubmit'>Add Module</button></p>

</div>
";

最佳答案

您正在序列化表单 $('#detailsForm').serialize(),,而不是包含下拉菜单的表单,即 moduleForm

 $.ajax({
type: "POST",
url: "insertmoduletocourse.php",
data: data: { detailsForm: $('#detailsForm').serialize(), moduleForm : $('#moduleForm').serialize() },
success: function(html){
$("#targetdiv").html(html);
$('#targetdiv').show();

}
});

关于php - 为什么无法检索 $course 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13822444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com