Флажок PHP Многократное удаление - PullRequest
0 голосов
/ 15 декабря 2011

Кажется, моя реализация не работает. Можете ли вы указать, в чем может быть проблема, или указать мне лучшее решение? Когда я проверяю флажки и нажимаю кнопку удаления, похоже, ничего не происходит ... пожалуйста, помогите мне.

<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>

Ответы [ 3 ]

2 голосов
/ 15 декабря 2011

Это должно решить проблему, попробуйте:

<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-скрипте, примерно так:

Вот форма -> <form action="<?php $_SERVER['PHP_SELF']?>" method="POST">

и вот кнопки отправки

<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

очистить сейчас?

0 голосов
/ 15 декабря 2011

Кнопка удаления должна находиться с флажком внутри той же формы, куда вы отправили отправлять.

<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>
0 голосов
/ 15 декабря 2011

Вы используете две формы, где кнопка отправки относится ко второй форме.
Когда вы нажимаете кнопку «Отправить», она отправляет только пустую форму.
Переместите кнопку отправки в первую форму, чтобы решить проблему.

У вас есть две строки

<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-адресу, не требуется устанавливать действие формы.

...