2013-11-23 67 views
-1

所以我有以下一段代码。按特定顺序显示MySQL值

$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)) { 
      ?> 
+0

**没有**想法?阅读'WHERE'子句和'ORDER BY'子句。 – 2013-11-23 23:00:34

+0

你说话要看我的查询,因为我有一个错误?或者你说我不能将WHERE和ORDER BY放在同一个查询中? – freddy

+1

您仅包含的查询会显示单个用户标识的结果。如果您尝试为多个用户检索结果,请向我们显示完整的代码。 – jcsanyi

回答

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 

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

+0

这是一条评论,特别是关于你的问题的部分*“你为什么要按用户的ID排序结果,并期待所有结果,而不管用户?”* –

+0

我自己并不太多修辞类型。我通常会在评论中提出问题,然后提出一个实际的答案,以解决OP完全测试代码出现问题。 –

+0

@ Fred-ii-正如你所看到的那样,OP没有显示的代码。你怎么想我会用一段实际的代码来回答?这很酷,我不这样做的选票。坚持编辑,看看是否让你满意。 –