在我的数据库表中,我在一个名为product的表中最多有1000个条目。
在显示所有产品页面中,我有<ul class="produlctlist"></ul>
还有脚本
jQuery(document).ready(function( $ ) {
$.ajax({
method: "POST",
url: "http://example.com/filter.php",
}).done(function( msg ) {
$( ".produlctlist" ).html(msg);
});
});
filter.php 中的
$query = "SELECT * FROM `product`";
$result = $conn->query($query);
while($row = $result->fetch_assoc()) {
echo "<li><img src='".$row['img']."' />".$row['name']."</li>";
}
这里一切都很完美。我的问题是,我需要将查询限制为"SELECT * FROM
产品LIMIT 45"
并实施分页或加载更多以提高页面速度?或者不需要限制查询,因为所有细节都是从jquery加载的?
在没有使用分页的情况下是否有任何替代解决方案可用 还是加载更多?
要从mysql获取1000个数据,它需要比fetch 45更多的时间 数据,那么在Jquery中有任何方法可以获取50个数据 首先,然后是接下来的50个数据?
答案 0 :(得分:1)
javascript: - 你需要处理全局变量页面 - 如果你想保留它,例如刷新cookie中每个更改存储的页面,然后在第一行加载cookie值
var page = 0;
jQuery(document).ready(function( $ ) {
$.ajax({
method: "POST",
url: "http://example.com/filter.php?page="+page,
}).done(function( msg ) {
$( ".produlctlist" ).html(msg);
});
});
关于您的编辑的javascript(从前45开始,然后在下次加载时加载下一个45):
var page = 0;
jQuery(document).ready(function( $ ) {
$.ajax({
method: "POST",
url: "http://example.com/filter.php?page="+page,
}).done(function( msg ) {
$( ".produlctlist" ).html(msg);
page++;
});
});
PHP
$query = "SELECT * FROM `product` LIMIT ".(intval($_GET['page'])*45).", 45";
$result = $conn->query($query);
while($row = $result->fetch_assoc()) {
echo "<li><img src='".$row['img']."' />".$row['name']."</li>";
}
答案 1 :(得分:1)
我看到你可以改进的两件事:
您可以使用LIMIT通过指定偏移量和所需行数来获取所需的行数。
LIMIT子句可用于约束SELECT语句返回的行数。 LIMIT需要一个或两个数字参数,它们都必须是非负整数常量(使用预准备语句时除外)。
使用两个参数,第一个参数指定的偏移量 第一行返回,第二行指定最大数量 要返回的行。初始行的偏移量为0(不是1)
另外,只选择您需要使用的行(read this post for more details):
SELECT img, name FROM `product`LIMIT 0, 44; -- Returns rows 0-45