张贴未从复选框表格PHP收到



我正在从此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){

最新更新