显示行只有PHP的100倍

时间:2012-08-25 21:33:50

标签: php

如何限制显示结果?我需要限制100次观看。

在DB中我有:

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

5 个答案:

答案 0 :(得分: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) . ')');

答案 1 :(得分:1)

抱歉,但我的问题出错......

首先你必须在db中插入一个像“viewcount”这样的新sql列... 在每次读取时,您必须在viewcount中增加值...

对于那种行为(因为,mysql不允许在同一个表上的update-clause上进行子选择),你必须从db中获取结果,然后传递记录的所有主键到阵列...... 在视图逻辑之后,您必须启动如下的查询:

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

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

希望这会有所帮助。

答案 2 :(得分:0)

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

答案 3 :(得分: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个视图(计数),那么我会收到错误!

答案 4 :(得分:-1)

尝试限制100个项目的数据源 它类似于MySQL / PostgreSQL查询中的OFFSET x LIMIT 100或MSSQL中的TOP 100