如何限制显示结果?我需要限制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。抱歉所有的混乱。
答案 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
。