【问题标题】:PHP Checkbox Multiple DeletePHP复选框多重删除
【发布时间】:2012-01-21 06:22:45
【问题描述】:

我的实现似乎不起作用。你能指出可能是什么问题或给我一个更好的解决方案吗?当我检查复选框并单击删除按钮时,它似乎没有做任何事情......请帮助我。

<div id="container" class="page">
    <img id="disclaimer" class="page" src="images/DISCLAIMER.png" alt="" />
    <img id="logo" class="page" src="images/MI-LOGO.png" alt="" />
    <div id="postItDiv" class="page">
        <?php
        $cxn = mysqli_connect('localhost', 'root', 'root', 'TimePost') or die(mysqli_error());
        $query = "SELECT PostID, ClientName, VideoName, PostTime, Post, Date FROM tblTimePosts";
        $result = mysqli_query($cxn, $query) or die(mysqli_error());

        while($row = mysqli_fetch_assoc($result)) {
            $post = $row['Post'];
            $time = $row['PostTime'];
            $idNo = $row['PostID'];
            $postColor = rand(1, 4);
            echo '<div id="post1"><p class="postParagraph">Post ID No.' . $idNo . '<br />' . $post . ' at ' . $time . ' seconds mark</p><div class="close"><form method="POST" action="videoJudge.php"><input type="checkbox" name="checkbox[]" id="checkbox[]" value="' . $idNo . '" /></form></div></div>';
        }

        if($_SERVER['REQUEST_METHOD'] == "POST" && $_POST['btnPost']) {
            $postColors = rand(1, 4);
            $toPost = $_POST['textPost'];
            $date = date("y-m-d");
            $postTime = $_POST['display'];
            $postTime = floor($postTime);
            $insertPostQuery = "INSERT INTO tblTimePosts VALUES('','Mimagazine Asia','Chelsea','$postTime','$toPost','$date')";
            $query3 = "SELECT PostID FROM tblTimePosts";

            $result = mysqli_query($cxn, $insertPostQuery) or die(mysqli_error());
            $result3 = mysqli_query($cxn, $query3) or die(mysqli_error());
            if($result > 0) {
                while($row = mysqli_fetch_assoc($result3)) {
                    $idNo2 = $row['PostID'];
                }
                echo '<div id="post1"><p class="postParagraph">Post ID No.' . $idNo2 . '<br />' . $toPost . ' at ' . $postTime . ' seconds mark</p><div class="close"><form method="POST" action="videoJudge.php"><input type="checkbox" name="checkbox[]" id="checkbox[]" value="' . $idNo2 . '" /></form></div></div>';
            }
            else
                echo "Add Failed";
        }

        /* if($_POST['chkDelete']) {
            for($i=0;$i<5;$i++){
                $del_id = $checkDelete[$i];
                $sql = "DELETE FROM $tblTimePosts WHERE PostID='$del_id'";
                $resulta = mysqli_query($cxn,$sql);
            }
        } */

        if($_POST['btnDelete']) { // from button name="delete"
            /* $checkbox = $_POST['checkbox']; //from name="checkbox[]"
            $countCheck = count($_POST['checkbox']);
            echo $countCheck;
            for($i=0;$i<$countCheck;$i++){
                $del_id = $checkbox[$i];
                $sql = "DELETE FROM tblTimePosts WHERE PostID=".$del_id."";
                $resulta = mysqli_query($cxn,$sql) or die(mysqli_error());
            } */

            $tbl_name = 'tblTimePosts';
            foreach($_POST['checkbox'] as $id => $value) {
                $sql = 'DELETE FROM `' . $tbl_name . '` WHERE `PostID`=' . (int) $id;
                mysqli_query($cxn, $sql);
            }
            header('Location: videoJudge.php');
        }
        ?>
    </div>
    <div id="videoContainer" class="page">
        <video id="video" poster="images/cover.png" controls>
            <source src="video/animationTest.m4v" />
        </video>
    </div>
    <div id="etc" class="page">
        <form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
            <textarea name="textPost" id="textPost"> 
            </textarea>
            <input type="submit" name="btnPost" id="btnPost" value="Post" />
            <div id="tae">
                <input type="text" name="display" id="display" value="0" />
            </div>
        </form>
    </div>
    <div id="delButtonDiv">
        <form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
            <input type="submit" value="Delete" name="btnDelete" />
        </form>
    </div>
</div>

在遵循您的所有评论后,这是我的代码,但仍然无效。 :(

<?php
            $cxn = mysqli_connect('localhost','root','root','TimePost') or die(mysqli_error());
            $query = "SELECT PostID, ClientName, VideoName, PostTime, Post, Date FROM tblTimePosts";
            $result = mysqli_query($cxn,$query) or die(mysqli_error());
            while($row = mysqli_fetch_assoc($result)) {
                $post = $row['Post'];
                $time = $row['PostTime'];
                $idNo = $row['PostID'];
                $postColor = rand(1,4);
                echo '<div id="post1"><p class="postParagraph">Post ID No.'.$idNo.'<br />'.$post.' at '.$time.' seconds mark</p><div class="close"><form method="POST" action="videoJudge.php"><input type="checkbox" name="checkbox[]" id="checkbox[]" value="'.$idNo.'" /></form>     
                </div></div>';
            }
             if ($_SERVER['REQUEST_METHOD'] == "POST" && $_POST['btnPost']) {
                $toPost = $_POST['textPost'];
                $date = date("y-m-d");
                $postTime = $_POST['display'];
                $postTime = floor($postTime);
                $insertPostQuery = "INSERT INTO tblTimePosts VALUES('','Mimagazine Asia','Chelsea','$postTime','$toPost','$date')";
                $query3 = "SELECT PostID FROM tblTimePosts";

                $result = mysqli_query($cxn, $insertPostQuery) or die(mysqli_error());
                $result3 = mysqli_query($cxn, $query3) or die(mysqli_error());
                if ($result > 0) {
                    while($row = mysqli_fetch_assoc($result3)) {
                        $idNo2 = $row['PostID'];
                    }
                    echo '<div id="post1"><p class="postParagraph">Post ID No.'.$idNo2.'<br />'.$toPost.' at '.$postTime.' seconds mark</p><div class="close"><form method="POST" action="videoJudge.php"><input type="checkbox" name="checkbox[]" id="checkbox[]" value="'.$idNo2.'"
                    /></form></div></div>';
                }
                else
                    echo "Add Failed";
            }
            if($_POST['btnDelete'] == "Delete")
             {
                 $tbl_name = 'tblTimePosts';
                    foreach ($_POST['checkbox'] as $id => $value) 
                    {
                        $sql = 'DELETE FROM `'.$tbl_name.'` WHERE `PostID`='.(int)$id;
                        mysqli_query($cxn,$sql);
                    }
                    header('Location: videoJudge.php'); 
             }
        ?>
        </div>
        <div id="videoContainer" class="page">
            <video id="video" poster="images/cover.png" controls>
                <source src="video/animationTest.m4v" />
            </video>
        </div>
        <div id="etc" class="page">
            <form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST">
                    <textarea name="textPost" id="textPost"> 
                    </textarea>
                        <input type="submit" name="btnPost" id="btnPost" value="Post" />
                        <div id="tae">
                            <input type="text" name="display" id="display" value="0" />
                        </div>

                <div id="delButtonDiv">
                <input type="submit" value="Delete" name="btnDelete" />
                </div>
            </form>
        </div>

【问题讨论】:

    标签: php post checkbox


    【解决方案1】:

    这样做应该可以解决问题,试试:

    <div id="etc" class="page">
        <form action="<?php $_SERVER['PHP_SELF']?>" method="POST">
            <textarea name="textPost" id="textPost"></textarea>
            <input type="submit" name="btnPost" id="btnPost" value="Post" />
            <div id="tae">
               <input type="text" name="display" id="display" value="0" />
            </div>
    
            <!-- END FORM REMOVED HERE -->
    
            <!-- FORM REMOVED HERE -->
    
         <div id="delButtonDiv"> <input type="submit" value="Delete" name="btnDelete" /> </div>
       </form>
    </div>
    

    [编辑]

    您的表单中有两个提交按钮,那么您需要知道您正在执行的具体操作是 POST 还是 DELETE,对吗?然后您可以在自己的 php 脚本中为您的帖子创建一个基本控制器,如下所示:

    这是表格 -> &lt;form action="&lt;?php $_SERVER['PHP_SELF']?&gt;" method="POST"&gt;

    这里是提交按钮

    <input type="submit" name="btnPost" id="btnPost" value="Post" />
    <input type="submit" value="Delete" name="btnDelete" />
    

    $_SERVER['PHP_SELF'] 告诉你它会将表单数据发送给它自己,如果是这样,那么在你的脚本开头做这样的事情:

    if ($_POST[btnPost] == "Post") 
    // do some action to post the data
    
    if ($_POST[btnDelete] == "Delete") 
    // do some action to delete the data
    

    现在清楚了吗?

    【讨论】:

    • 这是我现在的代码。我在这里关注了所有的 cmets,但仍然没有工作。
    • @AJ Naidas - 你仍然在表单中做错了,你不需要两个
      标签,只需要一个标签,所有东西都包含在其中。你的新代码永远不会像这样工作。而且你不需要这个 -> $_SERVER['REQUEST_METHOD'] == "POST" 只需使用 $_POST['btnPost'] == "Post" 就足够了..
    【解决方案2】:

    您使用了两个表单,其中提交按钮属于第二个表单。
    当您按下提交按钮时,它只会提交一个空表单。
    将提交按钮移到第一个表单中应该可以解决问题。

    你有两行

    <form action="<?php $_SERVER['PHP_SELF']?>" method="POST">
    ..
    ...
    <form action="<?php $_SERVER['PHP_SELF']?>" method="POST">
    

    删除第二个,然后

    <form action="<?php $_SERVER['PHP_SELF']?>" method="POST">
                       ^ missing an echo
    

    如果您想提交回相同的 URL,则不需要设置表单操作。

    【讨论】:

    • 两个表格是什么意思?我应该把我的删除代码块放在哪里?
    【解决方案3】:

    删除按钮必须位于您提交到的同一表单内的复选框中。

    <form method="POST" action="videoJudge.php" >
                                  ^______ url of the form you want to submit to. Possibly <?php echo $_SERVER['PHP_SELF']?>
    
    <input type="checkbox" name="checkbox[]" id="checkbox[]" value="'.$idNo.'" />
    <input type="submit" value="Delete" name="btnDelete" /> 
    </form>
    

    【讨论】:

      猜你喜欢
      • 2012-01-21
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 2012-04-26
      • 2012-05-21
      • 1970-01-01
      相关资源
      最近更新 更多