【发布时间】:2012-01-30 02:22:59
【问题描述】:
我正在使用 PHP 创建一个活动网站。我有一个包含 id、title 和 date (Y-m-d) 的“事件”表的数据库。
我的索引页面按日期顺序显示从今天开始的前 30 个事件。当您单击“更多”时,将通过 AJAX 显示另外 30 个事件。 AJAX 在 index.php 中加载 more.php,index.php 通过 PHP 会话将最新的 id/date 传递给 more.php。
我希望能够一次又一次地显示“更多”,这样每次用户点击它时,之前的事件下方就会显示 30 多个事件(就像您一直向下滚动到 Twitter 时会发生的情况一样)。
不幸的是,我的“更多”按钮第一次工作(从 index.php 中单击时),但是当在 more.php 中单击时,快速循环一次又一次地遍历 id/date 变量,直到不再有事件离开。
如何通过 AJAX 创建我想要的更多按钮?
以下是 index.php 中的相关代码:
<!-- "More" button JavaScript. Loads 10 more events when clicked -->
<script type="text/javascript" src="ajax.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("more").click(function(){
$("more").load('more.php');
});
});
</script>
<?php
session_start();
$today = date('Y-m-d');
$result = mysql_query("SELECT * FROM events WHERE date>='$today' ORDER BY date LIMIT 0, 30");
while($row = mysql_fetch_array($result))
{
echo $row['id'];
echo $row['title'];
echo $row['date'];
echo "<br />";
// Grabs date/id of last event echoed
$nId = $row['id'];
$nDate = $row['date'];
}
// Sends last date/id echoed to more.php
$_SESSION['nDate']=$nDate;
$_SESSION['nId']=$nId;
?>
<!-- This more tag seems to work with my JavaScript -->
<more>More</more>
还有more.php:
<!-- "More" button JavaScript. Loads 30 more events when clicked -->
<script type="text/javascript" src="ajax.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("more").click(function(){
$("more").load('more.php');
});
});
</script>
<?php
session_start();
$nId = $_SESSION['nId'];
$nDate = $_SESSION['nDate'];
$result = mysql_query("SELECT * FROM events WHERE date>='$nDate' && id>='$nId' ORDER BY date LIMIT 1, 30");
while($row = mysql_fetch_array($result))
{
echo $row['id'];
echo $row['title'];
echo $row['date'];
echo "<br />";
$nId = $row['id'];
$nDate = $row['date'];
}
$_SESSION['nDate']=$nDate;
$_SESSION['nId']=$nId;
?>
<more>More</more>
非常感谢各位:)
【问题讨论】:
标签: php javascript mysql ajax