Php 使用按钮加载更多mysql结果

Php 使用按钮加载更多mysql结果,php,javascript,mysql,Php,Javascript,Mysql,我正在制作一个图片共享网站,用户可以注册并上传自己的图片或在互联网上找到的图片。文件路径将上载到MySQL数据库。然后,我使用一个MySQL查询来提取所有图像路径,并使用while循环将图像放到页面上。上传的图像越多,页面加载所需的时间就越长。我想添加一个加载更多的按钮后,5个图像,当按下加载另5个图像。我似乎在任何地方都找不到这方面的教程 该表称为images,列名为path <?php $sql = mysql_query("SELECT * FROM `images` ORDER B

我正在制作一个图片共享网站,用户可以注册并上传自己的图片或在互联网上找到的图片。文件路径将上载到MySQL数据库。然后,我使用一个MySQL查询来提取所有图像路径,并使用while循环将图像放到页面上。上传的图像越多,页面加载所需的时间就越长。我想添加一个加载更多的按钮后,5个图像,当按下加载另5个图像。我似乎在任何地方都找不到这方面的教程

该表称为images,列名为path

<?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
}
?>

“alt=”“/>

这是我用来获取文件路径的方法。这不是我的问题。问题是,页面上的图像太多,导致加载速度非常慢。因此,我希望一次加载5个。如果您认为在用户滚动时加载更好,请帮助我知道如何做。

如果你只需要5次使用,如果你想在文件滚动时上传新文件,你可以使用Ajax。希望你能找到方法,并分享它。

你想要的是分页。我开始告诉你用谷歌搜索,但在我自己搜索之后,我发现有太多不好的建议,不值得这么做

首先,您希望使用更现代的方法连接到mysql数据库。
mysql\u*
函数在PHP中被弃用,它们被认为是一种安全风险。我更倾向于使用它为许多不同的数据库提供一个良好的一致接口。另一个选择是,如果您习惯了
mysql,它会更容易一些_*
功能

从这里开始,只需限制查询,然后让脚本知道返回哪组值。我就是这样做的(注意,我没有对此进行测试,因此可能存在错误!您还需要决定如何处理输出和错误)

//数据库连接的东西在这里
$start=$_GET['start'];
$per_page=10;//或您选择的配置值
//首先看看你有多少
试一试{
$res=$dbh->prepare(“从“图像”中选择计数(*)”;
$res->execute();
}
捕获(PDO$e){
//做一些有错误的事情!
}
list($count)=$res->fetch(PDO::fetch_NUM);
$end=$start+$per_页面;
如果($count<$end){
$end=$count;
}
//下一个和上一个值。只需创建链接和
//成为“开始”参数
$next=$end+1;
$prev=$start-$per_页面;
如果($prev<0){
$prev=0
}
//现在看看结果
试一试{
$res=$dbh->prepare(“从`images`中选择*
按'id`DESC LIMIT$start,$end')订购;
$res->execute();
而($image=$res->fetch(PDO::fetch_ASSOC)){
//存储或输出结果
}
}
捕获(PDO$e){
//做一些有错误的事情!
}

为了在滚动时自动执行此操作,可以使用jQuery检查滚动事件,然后调用后端代码自动加载更多结果(通过在调用中设置$prev和$next值)

我在代码中遇到错误。未定义的变量和函数此示例使用PDO,您必须对其进行设置。它无法开箱即用。我该如何设置PDO?我对PHP有点陌生,无法识别太多开箱即用的代码。抱歉。我想我在我的原始帖子中链接了它。这是官方文档:这是一个很好的教程:是的,你看了。对不起。我看了,但是编辑我的评论已经太晚了。谢谢你的帮助。
// 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!
}