在这里,我有一个对MySql数据库的查询,我正在取出有关要排成一排并显示在我的表中的课程的所有信息。该表的最后一列是一个复选框,我要选中该复选框,以便它将为选中的每一行保存数据行。我选择的变量是courses[]
,要保存在数组中,然后保存在会话中,以便在其他地方访问。我不确定如何提取行数据以放入我的数组中。现在我有value='$row2013
,这不起作用,因为当我var_dump($courses) = array(5) { [0]=> string(5) "Array" [1]=> string(5) "Array" [2]=> string(5) "Array" [3]=> string(5) "Array" [4]=> string(5) "Array" }
时,我选择了五门课程。
总结起来,我没有保存正确的东西。
case 2013:
$string2013 = "SELECT Course.CourseCode, Course.Title, Course.WeeklyHours, Semester.Term, Semester.SemesterCode
FROM Course, CourseOffer, Semester WHERE Semester.YearNum='$selectedYear' AND Course.CourseCode=CourseOffer.CourseCode AND
Semester.SemesterCode=CourseOffer.SemesterCode";
if($Result2013 = mysqli_query($link, $string2013))
{
echo "<form action='CourseSelection.php' method='get'>
<table><tr><th>Code</th><th>Course Title</th><th>Hours</th><th>Term</th><th>Select</th></tr>";
while($row2013 = mysqli_fetch_assoc($Result2013))
{
echo "<tr><td>$row2013[CourseCode]</td><td>$row2013[Title]</td><td>$row2013[WeeklyHours]</td>
<td>$row2013[Term]</td><td><input type='checkbox' name='courses[]' value='$row2013'></td></tr>";
}
echo "</table>";
}
else
{
echo "<p>" + mysqli_error($link) + "</p>";
}
break;
最佳答案
您应该尝试仅将行ID保存在复选框的值中。这样,您可以通过其ID轻松地从数据库中调出一行。 $row2013["CourseCode"]
应该可以。
当您执行POST请求时,您将获得一个ID数组($_POST['courses']
)。当然,您需要将其视为数组,因此必须对其进行迭代才能获取所有选定的行。
如果您选择var_dump($_POST['courses'])
,则应假定已选择了前5行:
array (size=5)
0 => string '1' (length=1)
1 => string '2' (length=2)
2 => string '3' (length=3)
3 => string '4' (length=4)
4 => string '5' (length=5)
现在,只需根据选定的行查询数据库,就可以了:
SELECT *
FROM Course
WHERE CourseCode = 1
OR CourseCode = 2
OR CourseCode = 3
OR CourseCode = 4
OR CourseCode = 5