【发布时间】:2016-04-05 19:46:45
【问题描述】:
首先要声明:我对 php 和 js 还是很陌生,所以请温柔点...哈哈
无论如何,我正在尝试创建一个从 mysql 表中检索帖子的简单无限滚动。我拼凑了来自各种互联网教程的代码,以创建可以访问和检索信息的东西。问题在于帖子的数量以及它正在检索的帖子的数量。
将 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;
?>
【问题讨论】:
-
输入一些调试信息。您是否确认将正确的 URL 传递给
$.ajax()并且正在为 MySQL 构建预期的查询? -
您的 jQuery 代码看起来需要多个具有
pagenum类的元素,但 PHP 只有一个输出。它只是从$_GET["page"]输出传递的值而不改变它。 -
感谢 Miken32!好的,一些菜鸟的答案即将出现: 1)我没有意识到 URL 需要特定的页面。我无意中将它的字面意思写为“url”。我尝试将上面的 php 文件作为 url 插入,但这只是一遍又一遍地循环帖子 1-10。 2)关于“专门为 MySQL 构建的 jQuery”,我不确定这是什么意思..?但是,它一直在毫无问题地从 sql 数据库中检索信息,问题只是检索的顺序。 3) 关于期望多个元素的最后一点,您建议对代码进行哪些更改?
-
@miken32 他的选择器中有一个
:last。每次 jQuery 完成它都会添加更多的 html。该 html 将有另一个class="pagenum"元素。在他找到该值后,他将其加 1,然后使用该递增的值来构建他的 url。 -
@Leesome miken32 询问“为 MySQL 构建的预期查询”是:分配给
$query的字符串是您期望的实际查询吗?因此,如果您要去echo $query;,您会看到什么,并且该查询在 phpMyAdmin(或您用来直接在数据库上运行 SQL 查询的任何工具)中是否按预期工作
标签: javascript php mysql scroll infinite