HI <!/强> 我想在Feed的底部创建一个“加载更多状态”按钮,因为您可以从代码中设置限制为20个帖子。
我正在寻找的是 改变
的Jquery或javascript函数(可能是AJAX)$statusQ = "SELECT * FROM `status` order by id desc LIMIT 20";
到
$statusQ = "SELECT * FROM `status` order by id desc LIMIT 40";
我只想更改LIMIT并将请求刷新到服务器而不更新HTML,javascript和CSS。
有一个很好的方法可以做到这一点。
请注意,我已经搜索了很多,我只找到了不太适合我的代码的示例。
<?php
$statusQ = "SELECT * FROM `status` order by id desc LIMIT 20";
$how_meny_rows = mysqli_query($mysqli, "SELECT * FROM `status`");
$row_cnt = mysqli_num_rows($how_meny_rows);
$statusA = mysqli_query($mysqli,$statusQ);
while ($row = mysqli_fetch_array($statusA)){
echo '<div class="statusholder">
<div class="status-img">
<img src="' . $row['Bild'] . '"/>
</div>
<div class="this-status">
<h4 class="status-who">'. $row['user'] .'</h4>
<p class="status">' .$row['status']. '</p>
<a class="status-like" href="javascript" onclick""> Gilla</a>
<p class="num_like comingsoon">' . $row['like'] . '</p>
<a class="status-comment" href="javascript" onclick"">Kommentera detta</a>
<p class="status-timestamp">' . $row['timestamp'] . '</p>
</div>
</div>';
}
if ($row_cnt > 20) {
echo '<div class="loadstatus">
<a href="javascript:void(0);" onclick="" class="comingsoon"> klicka för att ladda flerstatusar </a> </div>';
}
?>
答案 0 :(得分:2)
您可以使用jQuery Ajax实现“加载更多”功能。
在主页面中加载前20个状态记录&amp;点击comingsoon
链接后,使用jQuery moreResults.php
方法调用另一个页面$.ajax
。
在moreResults.php
页面中,根据限制获得正确的结果。限制值将使用`qry_limit'js变量传递到moreResults.php
。
此值将从qry_limit
隐藏变量中检索。成功时,将加载的结果附加到statusDiv
div&amp;更新加载下一组记录的限制值。
试试吧。
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type"text/javascript">
$(document).ready(function(){
$('a.comingsoon').click(function () {
var qry_limit = $("#qry_limit").val();
$.ajax({
type: "POST",
url: "moreResults.php",
data: "limit="+qry_limit,
cache: false,
success: function(responseData){
var newLimit=qry_limit+20;
$("div#statusDiv").append(responseData);
$("#qry_limit").val(newLimit);
}
});
return false;
});
});
</script>
</head>
<body>
<?php
$statusQ = "SELECT * FROM `status` order by id desc LIMIT 0,20";
$how_meny_rows = mysql_query($mysqli, "SELECT * FROM `status`");
$row_cnt = mysqli_num_rows($how_meny_rows);
$statusA = mysql_query($mysqli,$statusQ);
echo '<div id="statusDiv">';
while ($row = mysqli_fetch_array($statusA)){
echo '<div class="statusholder">
<div class="status-img">
<img src="' . $row['Bild'] . '"/>
</div>
<div class="this-status">
<h4 class="status-who">'. $row['user'] .'</h4>
<p class="status">' .$row['status']. '</p>
<a class="status-like" href="javascript" onclick""> Gilla</a>
<p class="num_like comingsoon">' . $row['like'] . '</p>
<a class="status-comment" href="javascript" onclick"">Kommentera detta</a>
<p class="status-timestamp">' . $row['timestamp'] . '</p>
</div>
</div>';
}
echo '</div>';
if ($row_cnt > 20) {
echo '<div class="loadstatus">
<a href="javascript:void(0);" onclick="" class="comingsoon"> klicka för att ladda flerstatusar </a> </div>';
}
?>
<input type="hidden" name="qry_limit" id="qry_limit" value="20"/>
<input type="hidden" name="total_results" id="total_results" value="<?php echo $row_cnt; ?>"/>
</body>
</html>
moreResults.php
<?php
//Database Connections
$limit=$_REQUEST['limit'];
$statusQ = "SELECT * FROM `status` order by id desc LIMIT $limit,20";
$statusA = mysqli_query($mysqli,$statusQ);
while ($row = mysqli_fetch_array($statusA)){
echo '<div class="statusholder">
<div class="status-img">
<img src="' . $row['Bild'] . '"/>
</div>
<div class="this-status">
<h4 class="status-who">'. $row['user'] .'</h4>
<p class="status">' .$row['status']. '</p>
<a class="status-like" href="javascript" onclick""> Gilla</a>
<p class="num_like comingsoon">' . $row['like'] . '</p>
<a class="status-comment" href="javascript" onclick"">Kommentera detta</a>
<p class="status-timestamp">' . $row['timestamp'] . '</p>
</div>
</div>';
}
?>
答案 1 :(得分:1)
将查询移动到单独的php文件中,并使用清理的get输入作为限制,然后使用jquery的Ajax功能以所需的限制值调用php文件。虽然它有点风险。如果我是你,我会阅读PDO和Prepared声明。
答案 2 :(得分:1)
您可以向PHP脚本发出jQuery post
请求,该脚本会输出另外20个Feed,然后在当前页面中显示结果。这是一个例子:
<script>
$(document).ready(function() {
$("#loadMoreButton").clicked(function() {
$.post(
"anotherPage.php",
{ dummy: "" },
function(returnedData) {
$("#loadMoreButton").before(returnedData);
}
);
});
});
</script>
假设你有上面的jQuery,你当前的页面如下:
<div id="feeds"> The feeds appear here </div>
<button id="loadMoreButton">Load more posts</button>
然后,您的anotherPage.php
文件将包含以下内容:
<?php
if (isset($_POST['dummy']) {
/* Database operations to load the next twenty posts */
/* Also, you will echo them here like you do in a normal page */
}
?>
但是,您应该通过anotherPage.php
显示的最新帖子id
,而不是再次加载帖子,然后再加载帖子。
编辑:感谢@NorthBridge指出了一种简单的方法(请参阅他的评论):)
答案 3 :(得分:1)
编辑Jesons awnser。
您必须添加此代码
'qry_limit = parseInt(qry_limit);'
将memory_limit值转换为Int而不是字符串