以特定顺序显示MySQL值

时间:2013-11-23 22:53:12

标签: php mysql sql-order-by

所以我有以下代码。

$sql = "SELECT TitreEvent, DescriptionEvent, MomentEvent, image_small, Confidentialite, ID, Creation, Username 
FROM events_home 
WHERE ID = '" . $dnn['IDcontact'] . "' 
ORDER BY Creation DESC";

我的问题是我想先显示最近的事件(无论用户是谁)。但现在,根据用户(IDcontact)显示事件,并在用户部分的开头放置新事件。

因此,如果用户就像表中的第二个用户,他将添加的新事件将在第一个用户的事件之后显示。但我希望看到列表顶部的最新事件,我不知道如何。

编辑所以缺少部分。我试图在第一个查询中放入SORT BY RAND(),但它不会改变任何东西。它只是将第一个用户放在第二位,第二位用户放在第一位。

<?php
     $dn = mysql_query("SELECT IDcontact FROM contacts WHERE ID = '".$_SESSION['id']."'");
     if(mysql_num_rows($dn)>0) 
     {
       while ($dnn = mysql_fetch_array($dn)) {
      $req = mysql_query("select TitreEvent, DescriptionEvent, MomentEvent, image_small, Confidentialite, ID, Creation, Username from events_home where ID = '".$dnn['IDcontact']."' ORDER BY Creation DESC");

      if(mysql_num_rows($req)>0) 
            {
             while($dnn = mysql_fetch_array($req)) {
           ?>

1 个答案:

答案 0 :(得分:1)

我想你是在以前的查询结果的循环中运行它。在这种情况下,您需要更改“父”查询。如果没有这样的事情,那么为什么你要根据用户的ID对结果进行排序,并期望所有结果都与用户无关?

修改

你永远不应该在循环中运行查询。

<?php
$dn = mysql_query("
SELECT e.TitreEvent, e.DescriptionEvent, e.MomentEvent, e.image_small, e.Confidentialite, e.ID, e.Creation, e.Username,c.IDcontact 
FROM events_home e LEFT JOIN contacts c ON c.ID = e.ID 
ORDER BY e.Creation DESC
LIMIT 0,30"); // Just in case

这是您的查询,希望有所帮助。