加载更多的MySQL结果与按钮
问题描述:
我做图片分享网站,用户可以注册并上传自己的照片或那些他们已经在互联网上找到。文件路径被上传到MySQL数据库。然后,我使用MySQL查询将所有图像路径拉出,并使用一个while循环将图像放到页面上。随着更多图片上传,页面加载所需的时间越长。我想添加一个加载更多按钮5个图像后,当按下加载另外5个图像。我似乎无法找到任何地方的教程。加载更多的MySQL结果与按钮
的表称为图像和列名是路径。
<?php
$sql = mysql_query("SELECT * FROM `images` ORDER BY `id` DESC");
while($row = mysql_fetch_array($sql)){
$path = $row['path'];
?>
<img src="<?php echo $path; ?>" alt="" />
<?php
}
?>
这是我用来获取文件路径的入门。这不是我遇到的问题。问题是,页面上的图片太多,加载速度非常慢。所以这就是为什么我要一次加载5个。如果你认为在用户滚动时加载会更好,请帮助我知道如何做到这一点。
答
你需要的是分页。我开始告诉你谷歌它,但在我做了自己后,我发现有太多不好的建议,这是不值得的。
首先你要使用连接到MySQL数据库的更现代的方法来定。在PHP中不推荐使用mysql_*
函数,它们被认为是安全风险。我更喜欢PDO,它为您提供了许多不同数据库的一致性界面。另一个选项是MySQLi,如果您习惯了mysql_*
函数,那么它会更容易一些。
从那里只是限制查询,然后让脚本知道返回哪组值。这就是我如何做到这一点(注意我没有测试此所以有可能是错误!您还需要决定如何处理输出和错误)
// Database connection stuff goes here
$start = $_GET['start'];
$per_page = 10; // or config value of your choice
// first find out how many you have
try {
$res = $dbh->prepare("SELECT COUNT(*) FROM `images`");
$res->execute();
}
catch(PDOException $e) {
// do something with errors!
}
list($count) = $res->fetch(PDO::FETCH_NUM);
$end = $start + $per_page;
if($count < $end) {
$end = $count;
}
// next and previous values. Just create links and these
// become the "start" parameter
$next = $end + 1;
$prev = $start - $per_page;
if($prev < 0) {
$prev = 0
}
// now get the results
try {
$res = $dbh->prepare("SELECT * FROM `images`
ORDER BY `id` DESC LIMIT $start, $end");
$res->execute();
while($image = $res->fetch(PDO::FETCH_ASSOC)) {
// store or output the results
}
}
catch(PDOException $e) {
// do something with errors!
}
自动做滚动你的时候可以使用jQuery检查滚动事件,然后打电话给你的后端代码自动加载更多的结果(通过设置$上一页和$下一个值到调用)
我得到的错误的代码。未定义的变量和函数 – 2013-03-07 16:36:49
本示例使用您必须设置的PDO。它不会开箱即用。 – Cfreak 2013-03-07 18:34:03
我将如何设置PDO?我对PHP稍微陌生,并且不认识很多代码。 – 2013-03-08 12:56:53