如何将搜索结果分成几页?(如第1页、第2页、第3页.)
当用户在我的电子商务网站上搜索产品时,我希望将结果分成几个页面,每页显示大约20个产品。搜索结果是数据库查询的结果。
例如,:,如果用户搜索三星手机,那么我的查询将是:
SELECT * FROM PRODUCTS WHERE BRAND='SAMSUNG';
假设上面的查询返回55个结果,如何将它们显示到页面(1,2和3)中?
我在Windows机器上使用PHP,MySQL,Apache。
发布于 2011-08-01 09:23:57
适当的SQL将添加:
LIMIT start, amount你可以像
search.php?start=20然后编码如下:
LIMIT $start, $amount使用
$start = intval($_GET['start']);和
$amount = 20;这将导致每页最多20条记录。
发布于 2011-08-01 09:22:08
使用SQL的LIMIT关键字限制查询的结果数量;例如:
从品牌=‘三星’限制的产品中选择* 20,40;
这将选择20个元素,从第40位开始。
发布于 2011-08-01 09:34:10
以下是完整的代码:
<?php
// Requested page
$requested_page = isset($_GET['page']) ? intval($_GET['page']) : 1;
// Get the product count
$r = mysql_query("SELECT COUNT(*) FROM PRODUCTS WHERE BRAND='SAMSUNG'");
$d = mysql_fetch_row($r);
$product_count = $d[0];
$products_per_page = 20;
// 55 products => $page_count = 3
$page_count = ceil($product_count / $products_per_page);
// You can check if $requested_page is > to $page_count OR < 1,
// and redirect to the page one.
$first_product_shown = ($requested_page - 1) * $products_per_page;
// Ok, we write the page links
echo '<p>';
for($i=1; $i<=$page_count; $i++) {
if($i == $requested_page) {
echo $i;
} else {
echo '<a href="/products/samsung/'.$i.'">'.$i.'</a> ';
}
}
echo '</p>';
// Then we retrieve the data for this requested page
$r = mysql_query("SELECT * FROM PRODUCTS WHERE BRAND='SAMSUNG' LIMIT $first_product_shown, $products_per_page");
while($d = mysql_fetch_assoc($r)) {
var_dump($d);
}
?>希望能帮上忙。
https://stackoverflow.com/questions/6896412
复制相似问题