我有这段代码:
$page = $_GET['page'];
$res_per_page = $_GET['res_per_page'];
$start_point = (($page * $res_per_page) - $res_per_page);
$query.= " LIMIT $start_point, $res_per_page";
$qry_result = mysql_query($query) or die(mysql_error());
$total_pages = ceil($nr_ads / $res_per_page);
变量'$ nr_ads'是广告的总nr ......
代码工作正常,但我想知道如何确定哪些广告正在展示,例如:
Showing ads 10 - 20
...谢谢
答案 0 :(得分:2)
print 'Showing ads ' . $start_point . ' - ' . min($nr_ads, $start_point + res_per_page);
基本上你已经有了起点(在SQL中给你的LIMIT
子句。“终点”的计算方法是将$res_pre_page
添加到这个起始点。但是,您可能只有2条记录 - 因此您应该使用min()
功能进行打印,例如“显示广告60 - 62”。
跟进:另一个答案提到了SQL注入的风险。使用以下方法是安全的:
$page = intval($_GET['page']);
$res_per_page = max(1, intval($_GET['res_per_page'])); // To avoid division by zero :)
答案 1 :(得分:2)
最简单的方法是在表格中创建一个ID字段并使用它来显示您想要的信息,您的查询将被修改如下:
LIMIT $start_point, $res_per_page ORDER BY ad_id ASC
从那里,您可以获得第一个结果和最后一个结果,并使用它来输出您正在收集的信息。
一个非常重要的安全说明,以下代码可能导致远程 SQL注入:
$query.= " LIMIT $start_point, $res_per_page";
强烈建议您将其更改为:
$query.= " LIMIT $start_point, ".mysql_real_escape_string($res_per_page)." ORDER BY ad_id ASC";