1

在我的 php 新闻脚本中

我使用此代码显示新闻标题:

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

并按发送日期按数据库顺序显示 10 条新闻

但我希望第 3 针新闻首先显示:

例如:

newstitle3 (pined) newstitle4 (pined) newstitle6 (pined) 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 回答