1

私のphpニューススクリプトで

私はニュースの番組タイトルにこのコードを使用します:

<?php
$sql = mysql_query("SELECT newsid,title FROM news WHERE cat='1' ORDER BY newsid DESC LIMIT 15");
?>

送信日順にデータベースに10件のニュースを表示

しかし、ピン3のニュースを最初に表示したい:

例えば:

newstitle3 (ピン留め) newstitle4 (ピン留め) newstitle6 (ピン留め) newstitle1 newstitle2 newstitle5 newstitle7 ....

3、4、および 6 が固定されたニュースであることがわかり、固定されていないニュースが表示されます

このニュース表示のデータベース クエリにコードを追加するにはどうすればよいですか?

4

2 に答える 2

4

一歩先を考えましょう-

この固定アイテムの動作を必要とするサイト上の他の領域がある可能性があることを考慮して、もう少し複雑でありながら堅牢なソリューションをお勧めします。

「固定された」アイテムを設定するより一般的な方法は、データベースに新しい「pinned_items」テーブルを作成することです。あなたはニュース項目だけに言及しますが、おそらくあなたのサイトにはこの「固定された」振る舞いを(おそらく将来的に)必要とする他の領域があります。

pinned_itemsこの構造のテーブルを持つことができます-

+----+----------+--------+
| id | obj_type | obj_id |
+----+----------+--------+
|  1 |        1 |      1 |
|  2 |        1 |      2 |
|  3 |        1 |      3 |
|  4 |        2 |      4 |
|  5 |        2 |      5 |
|  6 |        2 |      6 |
+----+----------+--------+

はアイテムのobj_typeタイプを参照し(タイプ1をニュースアイテムと見なします)、テーブルobj_idへの参照になりますnews

したがって、すべての「固定された」ニュースアイテムを取得するには、次のようなクエリを実行します-

SELECT newsItem.* FROM news AS newsItem
LEFT JOIN `pinned_items` AS pinnedItem ON pinnedItem.obj_id = newsItem.id 
WHERE pinnedItem.obj_type = 1
于 2013-02-23T13:08:09.523 に答える
2

簡単な方法は、「固定された」フィールドをテーブルに追加してからorder by pinned, newsid.

于 2013-02-23T12:57:51.267 に答える