0

我正在开发一个基本的消息传递系统。这是为了获取所有消息,并使表中具有未读消息的行变为绿色。在表中,有一列名为“msgread”。默认情况下设置为“0”。因此,它应该使任何行带有 msgread = 0 -> green。这仅适用于使用我拥有的代码的表的第一行 - 我验证它总是得到一个 0 值,但是它只在第一次通过 while 语句时才起作用..

require('./connect.php');

$getmessages = "SELECT * FROM messages WHERE toperson = '" . $userid . "'";

echo $getmessages;

$messages = mysql_query($getmessages);

if(mysql_num_rows($messages) != 0) {

    $table = "<table><tr><th>From</th><th>Subject</th><th>Message</th></tr>";

    while($results = mysql_fetch_array($messages)) {

        if(strlen($results[message]) < 30){
            $message = $results[message];
        }
        else {
            $message = substr($results[message], 0 ,30) . "...";
        }

        if($results[msgread] == 0){

            $table .= "<tr style='background:#9CFFB6'>";
            $table .= "<td>" . $results[from] . "</td><td>" . $results[subject] . "</td><td><a href='viewmessage.php?id=" . $results[message_id] ."'>" . $message . "</a></td></tr>";
        }
        else {
            $table .= "<tr>";
            $table .= "<td>" . $results[from] . "</td><td>" . $results[subject] . "</td><td><a href='viewmessage.php?id=" . $results[message_id] ."'>" . $message . "</a></td></tr>";

        }
    }
    echo $table ."</table>";
}
else {
    echo "No Messages Found";   
}

有所有的代码,包括从数据库中获取信息。谢谢。

4

3 回答 3

5
if(strlen($results[message]) < 30){

该消息可能应该被引用:

if(strlen($results['message']) < 30){

还有很多类似的问题

于 2013-10-27T02:48:36.060 回答
1

我测试了你的代码,我发现的唯一错误是索引数组 $results 中缺少引号。您$result[message_id]在最合适的时候使用它$result['message_id']。其余的按预期工作,msgread 等于 0 的记录留在绿线。

于 2013-10-27T03:23:41.573 回答
1

您的代码看起来有点讨厌,而且不容易阅读。

  • 你应该使用mysqli_fetch_assoc().
  • 始终以 ; 结束样式
  • 在关联数组上使用引号
  • var名称的更多逻辑选择
  • 从哪里来$userid?内容安全吗?

这是您的代码的快速清理版本:

$query = "SELECT * FROM messages WHERE toperson = '" . $userid . "'";

if($results = mysqli_query($query)) {

    if(mysqli_num_rows($results) != 0) {

        $table = "<table><tr><th>From</th><th>Subject</th><th>Message</th></tr>";

        while($data = mysqli_fetch_assoc($results)) {

            if(strlen($data['message']) > 30){
                $data['message'] = substr($data['message'], 0 ,30) . "...";
            }

            $table .= "<tr";

            if($data['msgread'] == 0){
                $table .= " style='background:#9CFFB6;'";
            }

            $table .= ">";

            $table .= "<td>" . $data['from'] . "</td><td>" . $data['subject'] . "</td><td><a href='viewmessage.php?id=" . $data['message_id'] ."'>" . $data['message'] . "</a></td></tr>";

        }

        echo $table ."</table>";

    } else {

        echo "No Messages Found";   

    }  
}
于 2013-10-27T03:44:12.593 回答