如何保存PHP中复选框所选数据库中的一行数据
在这里,我有一个对MySql数据库的查询,我将获取一个课程的所有信息,并将其排成一行显示在我的表中。表的最后一列是一个复选框,我想设置该复选框,这样它将为选中的每一行保存数据行。我选择的变量是如何保存PHP中复选框所选数据库中的一行数据,php,mysql,sql,arrays,checkbox,Php,Mysql,Sql,Arrays,Checkbox,在这里,我有一个对MySql数据库的查询,我将获取一个课程的所有信息,并将其排成一行显示在我的表中。表的最后一列是一个复选框,我想设置该复选框,这样它将为选中的每一行保存数据行。我选择的变量是courses[],保存在数组中,然后保存在会话中,以便在其他位置访问。我不确定如何提取要放入数组的行数据。现在我有了value='$row2013,这不起作用,因为当我var_dump($courses)=数组(5){[0]=>string(5)“array”[1]=>string(5)“array”[2
courses[]
,保存在数组中,然后保存在会话中,以便在其他位置访问。我不确定如何提取要放入数组的行数据。现在我有了value='$row2013
,这不起作用,因为当我var_dump($courses)=数组(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;
案例2013:
$string2013=“选择Course.CourseCode、Course.Title、Course.weekly小时、学期、学期、学期代码
FROM Course、CourseOffer、Semmer WHERE Semmer.Dearneum=“$selectedYear”和Course.CourseCode=CourseOffer.CourseCode和
学期.SemesterCode=CourseOffer.SemesterCode”;
if($Result2013=mysqli_查询($link,$string2013))
{
回声“
编解码器课程标题“小时术语选择”;
而($row2013=mysqli_fetch_assoc($Result2013))
{
echo“$row2013[CourseCode]$row2013[Title]$row2013[WeeklyHours]
$row2013[期限]”;
}
回声“;
}
其他的
{
echo“”+mysqli_错误($link)+“”;
}
打破
您可以使用jQuery来完成这项工作,也可以使用jQuery来处理和验证表单。或者,对于每一行,您可以为该行构建一个数组,并将其作为隐藏值传递。然后在它发布时,查看复选框是否选中,如果选中,则让脚本使用隐藏值。value='$row2013'
???例如,应该是value='$row2013[“CourseCode”]
方式1:
如果我可以假设您的课程表有一个主键列('CourseCode'),那么您不必将整行保存为复选框中的值。只需保存选中行的课程代码。然后,您可以通过将CourseCode附加到输入名称,为每个其他表格单元格添加唯一的隐藏输入,例如:
<input type='hidden' name='Title_" . $row['CourseCode'] . "' value='" . $row['Title'] . "'> etc.
方式2:将复选框值存储为json编码字符串:json_encode($row2013)
然后您可以再次迭代(在CourseSelection.php中):
我还没有仔细检查是否有错误,但您明白了。您应该尝试在复选框的值中只保存行ID。通过这种方式,您可以通过其ID轻松地从数据库中调用行。
$row2013[“CourseCode”]
应该可以工作
当您执行POST请求时,您将获得一个ID数组($\u POST['courses']
)。当然,您需要将其视为数组,因此必须对其进行迭代以获得所选的所有行
如果您var\u dump($\u 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
如果我想要那一排的所有东西呢?如果我改为
mysqli\u fetch\u行
istead ofmysqli\u fetch\u assoc
以您可以发布的格式发布,value='$row2013'
正在执行echo$row2013
。。。我不认为你做echo Array
是有好处的,它正在打印数组的类型,你将收到value=“Array”
——但是不,数组的内容在我的输入标记中,我是否需要指定我想保存在我的名称和值中的每一列?对于方法1,是,如果要在脚本中检索该列数据。此外,我建议您使用POST,以避免遇到数据大小限制问题。此解决方案需要对数据库进行另一次调用,以获取表中已存在的信息(通过以前的SQL查询)以及可以通过POST轻松检索的信息。
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