我正在从此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");
}
?>
http://jsfiddle.net/3a6az/2/
还要注意,我知道我的代码在某些地方的效率如何,我也知道我应该放下mysql并移至MySqli之类的东西。感谢给予的任何帮助
如果您有1个以上的复选框,则需要使用
name='selectedpost[]'
然后,它将以$_POST['selectedpost'];
作为数组提供给您。
希望这会有所帮助!
您正在使用未支付的输入<input type='checkbox' name='selectedpost' value='404'></input>
加上您不需要</input>
&lt;(fyi)
如果您不应该使用value='404'
,除非您想将其作为"值"传递。
您可能打算使用多个复选框并使用name='selectedpost[]'
即:
<input type='checkbox' name='selectedpost[]'>
使用方括号[]
被视为数组。
脚注:
我想指出的是,切换到mysqli_*
功能将是最有益的。mysql_*
功能已弃用。
使用 mysqli_*
功能与准备好的语句或PDO可以更好地保护自己免受SQL注入。
这是有关如何防止SQL注入的指南:如何防止PHP中的SQL注入?
N.B。:我还找到了一个错字,可能会给您带来麻烦if ($lenght==1){
您的代码中也有一个 $length
。将其更改为if ($length==1){