发布没有收到复选框表格php

时间:2014-01-27 20:49:28

标签: php html forms post checkbox

我从这个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这样的东西。感谢给予任何帮助

2 个答案:

答案 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){