标记为已读/未读按钮数据表php / mysql

时间:2017-10-14 14:00:49

标签: php mysql

我是编码的新手,我正在使用php和mysql创建一个管理面板来显示来自表单的客户数据。
现在我想制作一个按钮来显示数据是否已被处理。 我的想法是,我有一个名为star的列,如果star == read,则显示“green”,如果是star =!读取显示“红色”。
然后,如果按下按钮,如果star ==读取更新为未读但是如果star =!读更新阅读。

我有这样的按钮:

<?php
include("db.php");
 $id = $_GET['id'];
 $query = "UPDATE users SET star='read' WHERE id = '$id'";
 mysqli_query($link, $query) or die('Database error!');

 header('location:admin_main.php');
?>

和read.php这样:

<td>".$star."</td>

这只是更新要读取的行,并且无法再次被读取 但我不知道如何制定if语句。

如果有人有任何建议,我们非常感激。

编辑

显示我尝试的一些内容:

我在数据表中添加了一个新列:

$query = "SELECT star FROM users";
 $selectie = mysqli_query($link, $query) or die($query."<br>".mysql_error());

 if($selectie == 'read') {
    $star = 'read';
    } else {
    $star = 'unread';
  } 

然后我尝试使用下面的代码检查数据库:

<?php
 include("inc/verbinden.php");
 $id = $_GET['id'];

 $query = "SELECT star FROM users";
 $selectie = mysqli_query($link, $query) or die($query." <br>".mysql_error());

 if($selectie == 'read') {
 $query = "UPDATE users SET star='unread' WHERE id = '$id'";
 mysqli_query($link, $query) or die('Database error!');
 } else {
 $query = "UPDATE users SET star='read' WHERE id = '$id'";
 mysqli_query($link, $query) or die('Database error!');
}


header('location:admin_main.php');
?>

对于read.php:

<Redirect>

但我意识到if / else是错误的。

1 个答案:

答案 0 :(得分:1)

你快到了。您错过的是循环(成功)结果,例如使用while loop

附注:我为GET数组添加了(int),这有助于防范可能SQL injection并更正使用mysql_error()。 api不会与mysqli_ * api混合。

<?php
 include("inc/verbinden.php");

 if(!empty($_GET['id'])){
     $id = (int)$_GET['id'];
     }else{
         echo "The GET array is empty.";
         exit; // Stops further execution.
     }

 $query = "SELECT star FROM users";
 $selectie = mysqli_query($link, $query) or die($query." <br>".mysqli_error($link));

     while($row = mysqli_fetch_array($selectie)){
         if($row['star'] == 'read') {
         $query = "UPDATE users SET star='unread' WHERE id = '$id'";
         mysqli_query($link, $query) or die('Database error!'); // use mysqli_error($link)
         }else{
         $query = "UPDATE users SET star='read' WHERE id = '$id'";
         mysqli_query($link, $query) or die('Database error!'); // use mysqli_error($link)
            }
        }

header('location:admin_main.php');
exit; // Stops further execution.

注意:您可以将mysqli_fetch_array()替换为mysqli_fetch_assoc()

此外,最好在使用UPDATE时使用mysqli_affected_rows()以获得真实性。

您可以阅读这些功能:

值得注意的是,readRead以及unreadUnread是两种不同的动物。因此,请确保这些确实是数据库中的值以及数据库中的值。