【问题标题】:Display messages from both users ORDER By time显示来自两个用户的消息 ORDER By time
【发布时间】:2015-04-03 15:41:50
【问题描述】:

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

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

$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 循环 而我可能只需要 一个 for 循环 来完成这项工作.但我试过了,我可以找到一种方法来做到这一点。 你能帮我吗? 谢谢。

【问题讨论】:

  • $view = $username ?
  • @MySQLRockstar 不,这是不同的东西。

标签: php mysql for-loop


【解决方案1】:

您对两个查询结果使用相同的代码(未来提示:PHP 支持类似函数的功能 :D 尝试一下)并且您的查询具有相同的结构,所以为什么不直接获取两个用户的所有条目和对它们进行排序?你试过了吗?

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

【讨论】:

  • LOL 我知道这是一个简单的错误:P ...谢谢
猜你喜欢
  • 1970-01-01
  • 2011-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多