0

如何限制显示结果?我需要将其限制为 100 个视图。

在数据库中,我有:

ID|NAME|PAGE|COUNT|DATE

在计数中,我想数到 100,然后停止显示该 ID。我可以用 count < 100 来做到这一点。然后更新特定的 ID。我可以获得少于 100 次查看的记录,但我无法更新特定 ID 的计数。

行显示为:

php代码:

foreach($bannerGroups[0] as $ban) {
        echo '<li class="right1">'.$ban->html().'</li>';       
}

但我只是不知道在哪里把更新放在那里。我试过了,但我得到的只是更新一个 ID。但它在一页上显示 4 并在刷新时将它们随机化。所以我不知道该怎么办。

另外我想说我只是在学习php。对不起所有的混乱。

http://pastebin.com/A9hJTPLE上的代码

4

5 回答 5

2

如果我理解正确,您想显示之前显示次数少于 100 次的所有横幅?

如果这是正确的,您可以将其添加到您的WHERE子句中:

$bannerResult = mysql_query("SELECT * FROM table WHERE page='cat' WHERE `COUNT` < 100");

要全部更新它们,您可以在显示每个单独的横幅时运行查询,或者“记录”每个横幅id并在最后运行单个查询,例如:

$ids = array();
foreach($bannerGroups[0] as $ban) {
    $ids[] = $ban['ID']; // record the ID; don't know how Banner
                         // class works, assuming uses indexes; maybe ID() method?
    echo '<li class="right1">'.$ban->html().'</li>';
}
...
mysql_query('UPDATE table SET `COUNT` = `COUNT` + 1 WHERE ID IN (' . join(',', $ids) . ')');

更新
根据评论,您的Banner班级没有检索单个横幅的ID. 在这种情况下,您可以ID在构建横幅数组时记录这些值:

$ids = array();
while($row=mysql_fetch_assoc($bannerResult)) {
    $banners[] = new Banner($row);
    $ids[] = $row['ID']; // record the ID
}
// update the `count` on each record:
mysql_query('UPDATE table SET `COUNT` = `COUNT` + 1 WHERE ID IN (' . join(',', $ids) . ')');
于 2012-08-25T21:39:57.903 回答
1

对不起,我把你的问题搞错了……

首先,您必须在数据库中插入一个新的 sql 列,例如“viewcount”...在每次读取时,您必须增加 viewcount 中的值...

对于该行为(因为 mysql 不允许在同一表上的更新子句上进行子选择),您必须从 db 中获取结果,然后将记录的所有主键传递给数组...在视图逻辑之后,您必须启动如下查询:

UPDATE foo SET viewcount = viewcount + 1 WHERE id IN (1,2,3,4,5,6...,100);

可以使用带有“implode(',', $arr);”的主键数组轻松生成 IN 子句

希望这可以帮助。

于 2012-08-25T21:39:30.340 回答
0
$bannerResult = mysql_query("SELECT * FROM table WHERE page='cat' AND `count`<100");
于 2012-08-25T21:39:18.027 回答
0

@newfurniturey 想出来了。在每个foreach($banneruGroups added: $ids = $ban->getValue('id');然后mysql_query("UPDATE dataa SET COUNT = COUNT + 1 WHERE id = '$ids'");但是有没有办法通过只添加一次查询来更新它们?如果 id 已经显示了 100 次,我Warning: Invalid argument supplied for foreach() in.知道如何解决它吗?我在 DB 中有 4 个 id。如果其中一个已经有 100 个视图(计数),那么我会出错!

于 2012-08-26T09:38:51.127 回答
-1

尝试将您的数据源限制为 100 个项目。
就像OFFSET x LIMIT 100在 MySQL/PostgreSQL 查询或TOP 100MSSQL 中一样。

于 2012-08-25T21:36:29.553 回答