php - 挣扎于 PHP/MySQL 分页
问题描述
我正在努力理解使用 php 和 mysql 引入分页的最佳方法。我有下面的代码,我试图显示前 5 个按钮,例如 1-5,但我想要一个“下一个按钮”然后显示 5-10,然后显示 10-15 等等。非常感谢任何帮助。
$q=mysql_query("SELECT * FROM posts WHERE $ctq approved=1 Limit 15");
$pages = ceil(mysql_num_rows($q)/$item_per_page)+1;
//create pagination
if($pages > 0)
{
for($i = 1; $i<$pages; $i++)
{
$pagination .= '<a href="#" id="'.$i.'-page" class="inactive paginate_click">'.$i.'</a>';
}
}
$ctajax='';
if(isset($_GET['cat_id']) && !empty($_GET['cat_id'])){
$ctajax.=",'cat_id':".$_GET['cat_id'];
}
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
$("#results").load("fetch_pages.php", {'page':0<?php echo $ctajax ?>}, function() {
$("#1-page").removeClass('inactive').addClass('current');
});
//initial page number to load
$(".paginate_click").click(function (e) {
$("#results").prepend('<div class="loading-indication"><img src="ajax-loader.gif" /> Loading...</div>');
var clicked_id = $(this).attr("id").split("-"); //ID of clicked element, split() to get page number.
var page_num = parseInt(clicked_id[0]); //clicked_id[0] holds the page number we need
$('.paginate_click').addClass('inactive');
$('.paginate_click').removeClass('current'); //remove any active class
//post page number and load returned data into result element
//notice (page_num-1), subtract 1 to get actual starting point
$("#results").load("fetch_pages.php", {'page':(page_num-1)}, function(){
});
$(this).addClass('current'); //add active class to currently clicked element (style purpose)
return false; //prevent going to herf link
});
});
</script>
<div id="results"></div>
<nav role="navigation" id="nav-below" class="site-navigation paging-navigation clearfix">
<div class="pagination">
<?php echo $pagination; ?>
<a href="#" id="<?php echo $iadd;?>-page" class="inactive paginate_click">Next</a>
</div>
</nav>
<?php } ?>
<!-- #nav-below -->
</section>
<!-- /#content -->
解决方案
limit 15
只给你前 15 行,如果你想要接下来的 15 行,你会使用LIMIT 15 OFFSET 15
.
您还希望在您的 sql 上使用“order by”以避免随机结果。
如果结果集很大并且您没有使用索引,则此方法可能会导致严重的性能问题。还有其他方法可以解决这个问题,并且可能是一个更复杂的答案。
推荐阅读
- r - 从R中CSV中的坐标计算路线距离
- redux - 当调用 createStore() 我得到: TypeError: middleware is not a function
- multithreading - 在 ccNUMA 系统的内存页中数据是如何分布的?
- git - git rebase 创建本地-远程分歧
- python-3.x - GeoPandas - GeoData 不与 Shapefile 地图重叠
- swift - 是否可以在两个 UILabel 之间添加约束?
- c# - 使用交互式按钮列显示存储过程结果的有效方法
- python - 无法加载 .pkl 文件
- java - 排序时arraylist索引超出范围
- javascript - 将 JS 转换为 Typescript - 硬件分配