0

私は2つのテーブルを持っています

USERS
------------
id   | user
1    | john
2    | George
3    | Andy

Text
--------------------------------
id | user |date        |text
1  |  1   |2012/10/2   | ABC
2  |  3   |2012/11/2   | ABCD
3  |  2   |2012/12/2   | ABCDE
4  |  2   |2012/1/2    | ABCDE

Textテーブルでは、user列はテーブルidから を取得しUsersます。

次のクエリがあります。

   $sql= mysql_query ("SELECT
    user.id,
    users.user,
    CASE
        WHEN text.date = CURDATE() THEN '1'
        ELSE '0'
    END AS 'today',
    text.date,
    text.text
FROM  users user, text text
WHERE users.id = text.user;");

if (mysql_num_rows($sql)<=0)
echo  "NO ENTRIES FOUND";

while ($row = mysql_fetch_assoc($sql))
{

          $user =$row['user'];  
           $id  =$row['id'];  
             $date2  =$row['date'];  

            if ($row['today'] == 1) { echo"
 <div class='z'><a href='viewuser.php?id=$user'>$user</a></div><br>         
        "; } else { echo"
 <div class='zx'><a href='viewuser.php?id=$user'>$user</a></div><br>         
        "; }; 

}

私の質問は:

日付が今日の日付と等しいユーザーを最初div(zx)div(z)表示するにはどうすればよいですか?

4

1 に答える 1

1
<!-- language: lang-sql -->

SELECT
    u.id,
    u.user,
    CASE
        WHEN t.date = CURDATE() THEN '1'
        ELSE '0'
    END AS 'today',
    t.date,
    t.text
FROM  users u, text t
WHERE u.id = t.user;

結果を表示するには、次のように言います

if ($row['today'] == 0) { class="zx"; } else { class="z"; }

コードは省略されています。詳細が必要な場合はお知らせください。

上記の私のソリューションを使用した更新されたコードは次のとおりです。

$sql = mysql_query ("
SELECT
    u.id,
    u.user,
    CASE
        WHEN MAX(t.date) = CURDATE() THEN '1'
        ELSE '0'
    END AS 'today'
FROM  users u, text t
WHERE u.id = t.user
GROUP BY u.id, u.user");

if (mysql_num_rows($sql) <= 0)
    echo  "NO ENTRIES FOUND";

while ($row = mysql_fetch_assoc($sql))
{
    $user =$row['user'];
    $id =$row['id']; 


if ($row['today'] == 1) {
     echo "<div class='zx'><a href='viewuser.php?id=$id'>$user</a></div><br>";
} else {
     echo "<div class='z'><a href='viewuser.php?id=$id'>$user</a></div><br>";
}

}
于 2012-11-13T19:43:12.383 に答える