显示来自两个用户的消息按时间排序

时间:2015-04-03 15:41:50

标签: php mysql for-loop

我的问题是我想在两个用户之间显示消息并按时间排序。 我无法显示来自每个用户的消息,但它首先显示给用户George和用户Niklakis,如下图所示...... enter image description here

我想要的是按时间顺序显示两个消息。 这是我的代码的一部分...

$query  = "SELECT * FROM messages WHERE recip='$view' ORDER BY time DESC";
        $query2  = "SELECT * FROM messages WHERE recip='$username' ORDER BY time DESC";
        $result = queryMysql($query);
        $result2 = queryMysql($query2);
        $num    = mysql_num_rows($result);
        $num2    = mysql_num_rows($result2);

        for ($j = 0 ; $j < $num ; ++$j)
        {
            $row = mysql_fetch_row($result);

            if ($row[3] == 0 || $row[1] == $username || $row[2] == $username)
            {
                echo date('M jS \'y g:ia:', $row[4]);
                echo " <a href='messages.php?view=$row[1]'>$row[1]</a> ";

                if ($row[3] == 0)
                    echo "wrote: &quot;$row[5]&quot; ";
                else echo "private message: <span class='whisper'>" .
                      "&quot;$row[5]&quot;</span> ";

                if ($row[2] == $username)
                    echo "[<a href='messages.php?view=$view" ."&erase=$row[0]'>erase</a>]";

                echo "<br>";
            }
        }
        for ($j = 0 ; $j < $num2 ; ++$j)
        {
            $row2 = mysql_fetch_row($result2);

            if ($row2[3] == 0 || $row2[1] == $username || $row2[2] == $username)
            {
                echo date('M jS \'y g:ia:', $row2[4]);
                echo " <a href='messages.php?view=$row2[1]'>$row2[1]</a> ";

                if ($row2[3] == 0)
                    echo "wrote: &quot;$row2[5]&quot; ";
                else echo "private message: <span class='whisper'>" .
                      "&quot;$row2[5]&quot;</span> ";

                if ($row2[2] == $username)
                    echo "[<a href='messages.php?view=$view" ."&erase=$row2[0]'>erase</a>]";

                echo "<br>";
            }
        }  

我可以理解我的问题发生是因为我有两个不同的 for循环而我可能只需要 ONE for loop 来完成这项工作。但我试过,我可以找到一种方法来做到这一点。 你能帮我吗? 谢谢。

1 个答案:

答案 0 :(得分:2)

你对两个查询结果都使用相同的代码(未来的提示:PHP支持类似功能的东西:D尝试一下),你的查询具有相同的结构,所以为什么你不要只考虑两个条目的所有条目用户和排序?你试过这个吗?

$query  = "SELECT * FROM messages WHERE (recip='$username' AND auth='$view') OR (recip='$view' AND auth='$username') ORDER BY time DESC";