gpt4 book ai didi

javascript - 无限滚动(mysql、php 和 js)循环问题

转载 作者:行者123 更新时间:2023-11-29 02:52:08 25 4
gpt4 key购买 nike

首先声明:我对 php 和 js 还是 super 新手,所以请保持温和...哈哈

无论如何,我正在尝试创建一个简单的无限滚动来从 mysql 表中检索帖子。我拼凑了各种 Internet 教程中的代码来创建可以访问和检索信息的东西。问题是帖子的数量以及正在检索的帖子。

将 PHP 文件中的“$perpage”设置为 10,加载前 20 个帖子,然后每次加载“新帖子”时,它只会一遍又一遍地加载帖子 11-20。我想这可能是一些简单的东西,但我的 php 和 js 水平真的只是在我能读懂但不会写的水平。

我尝试将 LIMIT 添加到 $sql 行的末尾,但这似乎完全破坏了代码。

任何帮助将不胜感激!

如果您想在现实生活中看到这一点,(非常)草稿站点在这里:site

$(document).ready(function(){
function getresult(url) {
$.ajax({
url: url,
type: "GET",
data: {rowcount:$("#rowcount").val()},
beforeSend: function(){
$('#loader-icon').show();
},
complete: function(){
$('#loader-icon').hide();
},
success: function(data){
$("#faq-result").append(data);
},
error: function(){}
});
}
$(window).scroll(function(){
if ($(window).scrollTop() == $(document).height() - $(window).height()){
if($(".pagenum:last").val() <= $(".total-page").val()) {
var pagenum = parseInt($(".pagenum:last").val()) + 1;
getresult('../php/best_result.php?page='+pagenum);
}
}
});
});


<?php
require_once("login.php");
$db_handle = new DBController();
$perPage = 10;

mysql_query("SET NAMES utf8");

$sql = '
SELECT letter, dayfield, monthfield, yearfield, nickname, country
FROM BestWorst
WHERE `lettertype` = "best" ORDER BY `ID` DESC';



$page = 1;
if(!empty($_GET["page"])) {
$page = $_GET["page"];
}

$start = ($page-1)*$perPage;
if($start < 0) $start = 0;

$query = $sql . " limit " . $start . "," . $perPage;
$faq = $db_handle->runQuery($query);

if(empty($_GET["rowcount"])) {
$_GET["rowcount"] = $db_handle->numRows($sql);
}
$pages = ceil($_GET["rowcount"]/$perPage);
$output = '';
if(!empty($faq)) {
$output .= '<input type="hidden" class="pagenum" value="' . $page . '" /><input type="hidden" class="total-page" value="' . $pages . '" />';
foreach($faq as $k=>$v) {
$output .= '<div class="entry wow fadeInUp lefttext"><br/><p>'
. nl2br($faq[$k]["letter"])
. '</p><br/><p class="small" align="right">- This story took place on '
. $faq[$k]["dayfield"] . '/'
. $faq[$k]["monthfield"] . '/'
. $faq[$k]["yearfield"]
. '. Posted by ' . $faq[$k]["nickname"]
. ' from ' . $faq[$k]["country"]
.'<p></div><br/><br/><br/>';
}
}
print $output;
?>

最佳答案

您对查询中 $start$perPage 的用法有点困惑。

在 MySQL 中,以下查询获取前 15 个结果,从该组结果中的第 11 行 (OFFSET 10) 开始:

SELECT * FROM BestWorst LIMIT 15, 10    

相同
SELECT * FROM BestWorst LIMIT 15 OFFSET 10

$start 在您的案例中的用法应映射到查询的 OFFSET,而 $perPage 字面意思是 LIMIT 在 MySQL 术语中。

因此,交换查询中提到的两个变量应该可以解决问题。

$query =  $sql . " limit " . $perPage . "," . $start; 

现在,当您向下滚动页面时,在 $page 变量中获取 pagenum 的值(通过 AJAX 发送到您的 PHP 脚本), $start 相应地相乘,为您的查询的 OFFSET 部分提供值 (0, 10, 20, ...) - 这相当你所期望的。

关于javascript - 无限滚动(mysql、php 和 js)循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34553176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com