我从这个jsfiddle中显示的HTML代码发布到PHP页面,代码如下所示。问题是没有收到数组$_POST['selectedpost']
。这是包含勾选复选框的数组。在js小提琴中,我在一个示例行中添加了包含复选框的表,因为这些通常是使用PHP和SQL生成的。
<?php
include "connect2.php";
if (isset($_POST['selectedpost'])) {
$postschecked = $_POST['selectedpost'];
$length = count($postschecked);
}
else{
returnpage();
}
if (isset($_POST['deleteposts'])) {
foreach($postschecked as $post_id){
$sql = "DELETE FROM posts WHERE post_id='$post_id'";
mysql_query($sql);
}
returnpage();
}
if (isset($_POST['passposts'])) {
foreach($postschecked as $post_id){
$sql = "UPDATE posts SET moderation=1 WHERE post_id='$post_id'";
mysql_query($sql);
}
returnpage();
}
if (isset($_POST['editpost'])) {
if ($lenght==1){
foreach($postschecked as $post_id){
header("location:editpost.php?post_id=$post_id");
}
}
else{
returnpage();
}
}
if (isset($_POST['returnpost'])) {
if (isset($_POST['reasonreturned'])) {
foreach($postschecked as $post_id){
$sql = "SELECT description FROM posts WHERE post_id='$post_id'";
$query = mysql_query($sql);
$array = array();
while ($row = mysql_fetch_array($query, MYSQL_NUM)) {
$array[] = $row; }
$description = "".$array[0][0];
$description = $description . "<br/><br/><span style='color:red;font-size:18px;'>" . $_POST['reasonreturned'] . "</span>";
$sql = "UPDATE posts SET description='$description' WHERE post_id='$post_id'";
$query = mysql_query($sql);
}
}
foreach($postschecked as $post_id){
$sql = "UPDATE posts SET moderation=3 WHERE post_id='$post_id'";
$query = mysql_query($sql);
}
returnpage();
}
if ($length){
returnpage();
}
function returnpage(){
//header("location:moderate.php");
}
?>
另外请注意,我知道我的代码在某些地方效率不高,而且我也知道我应该删除mysql并转移到像mysqli这样的东西。感谢给予任何帮助
答案 0 :(得分:4)
如果您有多个复选框,则需要使用
name='selectedpost[]'
然后,您可以使用$_POST['selectedpost'];
作为数组。
希望这有帮助!
答案 1 :(得分:2)
您使用的是未加括号的输入<input type='checkbox' name='selectedpost' value='404'></input>
加上您不需要</input>
&lt;(FYI)
如果您不应该使用value='404'
,除非您希望将其作为“值”传递。
您可能打算使用多个复选框并使用name='selectedpost[]'
即:
<input type='checkbox' name='selectedpost[]'>
使用方括号[]
被视为数组。
<强>脚注:强>
我想指出的是,切换到mysqli_*
功能将是最有益的。不推荐使用mysql_*
个函数。
对mysqli_*
或prepared statements使用PDO函数会更好,以保护自己免受SQL注入。
以下是有关如何防止SQL注入的指南:How can I prevent SQL injection in PHP?
N.B。:我还发现了一个可能给您带来麻烦的拼写错误if ($lenght==1){
您的代码中也有$length
这个词。将其更改为if ($length==1){