我在谷歌上搜索了如何做到这一点,我得到了以下链接:http://www.9lessons.info/2009/12/twitter-style-load-more-results-with.html
这正是我想做的,但是这对我来说相当混乱,所以我无法弄清楚如何在我当前的文件中正确实现它。
我目前的查询如下。
if (!$query = @mysql_query("SELECT * FROM confessions ORDER BY date DESC LIMIT 10")) {
echo '<strong>Error:</strong> '.mysql_error().'';
} else {
echo '<div id="posts">';
while ($q = mysql_fetch_array($query)) {
$id = $q['id'];
$name = $q['confession'];
$date = date("j M Y", strtotime($q['date']));
echo '<div class="confession" ';
echo '>';
echo '<table>';
echo '<tr style="width:700px;">';
echo '<td style="width:100px;font-weight:lighter;font-style:italic;font-size:95%;">'.$date.'</td>';
echo '<td style="width:600px;">'.$name.'</td>';
echo '</tr>';
echo '</table>';
echo '</div>';
}
echo '</div>';
}
显然,这只是抓取该表中最后 10 行的数据,据我所知,我只需要一些 JavaScript 来记住限制,以及它抓取了多少,这样它就可以抓取下一批。
somoene是否有可能给我一个链接来帮助我解释更多,或者写一些代码(从我给出的链接中(会有所帮助?
解决问题
显然,这只是抓取该表中最后 10 行的数据,据我所知,我只需要一些 JavaScript 来记住限制,以及它抓取了多少,这样它就可以抓取下一批。
是的,您的演示页面使用 Javascript 变量 ID
执行此操作,他们将其发送到ajax_more.php
somoene是否有可能给我一个链接来帮助我解释更多,或者写一些代码(从我给出的链接中(会有所帮助?
这是没有必要的。
澄清演示
演示的主页是 loadmore.php
,它创建了 html 页面,巧合的是还列出了查询中的第一批。 它使用按钮(锚链接,而不是链接的框(来存储最近的ID
,在您的情况下,按钮的 ID 将是您的日期(注意:您的日期最好是唯一字段,否则您可能不会返回所有结果(。
当用户单击"更多"链接时,JavaScript 会获取其id
,然后将其传递给 ajax_more.php
,它在查询中使用它来获取自上次查询以来的下一批结果,基于您发送它的 ID(SQL order by
很重要(。
更多
-
正如@hakre所建议的,您所指的称为"分页",大多数数据库都有其实现,因此,如果您保持连接打开,则无需重新查询数据库。
同样在mySQL中,您可以提供长度和偏移量,因此您可以存储已检索的记录量(称为偏移量(,而不是存储ID并使用小于。 例:SELECT * FROM <your_table> LIMIT <offset>, <length> -- In Use: SELECT * FROM confessions LIMIT 40, 10 -- 40 is the value that you passed to ajax_more.php via AJAX
-
警告:该示例没有告诉您的是他们查询数据库的方式的安全隐患。 您将用户输入(通过 JavaScript(直接公开给数据库,而无需清理数据或使用参数传递的任何特殊用途。 这是一个很大的安全漏洞,可以打开SQL注入攻击,这些漏洞基本上是允许用户放置自己的SQL命令的漏洞,可以访问您的数据库,甚至整个系统。
您的查询:SELECT * FROM confessions ORDER BY date DESC LIMIT 10
具有不带逗号的 LIMIT 语句 10。 这意味着您只得到前 10 个结果。
只需观看 http://php.about.com/od/mysqlcommands/g/Limit_sql.htm 上的示例,您就会明白。