-2

下面是我在非 codeigniter 代码工作中制作的 php 代码。这是一个全选和取消全选删除功能。如果它在控制模型或视图中,我不确定该放在哪里?谁能帮帮我吗。

<?php

/*Check Box Commands*/
$id=$row_notification['user_id'];

if(isset($_POST['Delete'])) {
$checkbox = $_POST['checkbox'];
mysql_select_db($database_connection_ched, $connection_ched);
$id=$row_notification['user_id'];

for($i=0;$i<count($checkbox);$i++)
  {
$delete = "DELETE FROM tb_user WHERE user_id=$checkbox[$i]";
mysql_query($delete,$connection_ched);

}
$result2 = mysql_query($delete);

if($result2)
{
echo "[removed]alert ('Successfully Deleted');[removed]"; 
echo "<meta http-equiv=\"refresh\" content=\"0;URL=notification.php?\">"; }

}
?>
4

2 回答 2

0

您不应该使用“元刷新”进行重定向。

使用 PHP 的 header 函数:

http://www.php.net/manual/en/function.header.php

您应该将该代码放入您的控制器中。

例子:

class MyController extends CI_Controller {
    public function index() {
        /*Check Box Commands*/
        $id=$row_notification['user_id'];

        if(isset($_POST['Delete'])) {
        $checkbox = $_POST['checkbox'];

        // use CodeIgniter models when communicating with your database
        // and when manipulating any database data
        // more on: http://codeigniter.com/user_guide/general/models.html
        mysql_select_db($database_connection_ched, $connection_ched);
        $id=$row_notification['user_id'];

        for($i=0;$i<count($checkbox);$i++) {
            $delete = "DELETE FROM tb_user WHERE user_id=$checkbox[$i]";
            mysql_query($delete,$connection_ched);
        }

        $result2 = mysql_query($delete);

        if($result2) {
            // as I pointed out, don't use "meta refresh" for redirection
            // and dont use alert for notifying anyone-anywhere
            echo "[removed]alert ('Successfully Deleted');[removed]";
            echo "<meta http-equiv=\"refresh\" content=\"0;URL=notification.php?\">"; }
        }
    }
}

还有一点建议:

当某些内容被删除、插入、更改或类似情况时,您不必通过 JavaScript 的警报功能通知任何人。警报有点讨厌。

另外,请查看以下链接:

这应该可以帮助您更清楚地了解 MVC 是如何工作的,以及 CodeIgniter 是如何工作的。

于 2012-10-15T01:18:08.840 回答
-1

为什么您的结果应该在 javascript 上并令人耳目一新?这是错误的,你需要它。脚本将执行一次,不刷新。您只需要打印结果。

采用

   if ($result2 === true)  { echo 'Result: deleted '; }

代替:

echo "[removed]alert ('Successfully Deleted');[removed]"; 
echo "<meta http-equiv=\"refresh\" content=\"0;URL=notification.php?\">"; }

用内部 for 循环检查它var_dump(),可能没有接收到数据。

或者尝试更好地修复您的代码:

for($i=0;$i<count($checkbox);$i++)
  {
    $delete = "DELETE FROM tb_user WHERE user_id={$checkbox[$i]}";
    mysql_query($delete,$connection_ched);

}
于 2012-10-15T01:17:06.157 回答