[英]PHP Load more results in the order as retrieved from the url using $_GET
我试图获取所有已加载的项目(单击“加载更多”后),然后根据之前提交的过滤器设置进行整理。 我使用GET提交表单时,所有设置都显示在url上
由于某种原因,提交表单并单击加载更多后,我无法使用GET从URL中检索设置。.知道为什么吗?
该查询对所有结果进行排序:
<div class="main_page">
<?php
$res = mysql_query("SELECT * FROM posts WHERE ".$search_query." ".$lowest_price." ".$highest_price." ".$ad_order." ".$limit."");
if($res && mysql_num_rows($res) > 0){
while($row = mysql_fetch_assoc($res)){
$date = $row['date'];
}
echo '<div class="ad_display" id="'.$date.'">blabla</div>';
}
在loadmore.php中,有完全相同的div,但它的排序方式如下:
$res = mysql_query("SELECT * FROM posts WHERE `date` < '".mysql_real_escape_string($_GET['id'])."' ORDER BY `date` DESC LIMIT 10");
当然还有加载更多按钮脚本:
<script type="text/javascript">
$(document).ready(function(){
$(".load_more").click(function (){
$('.load_more').html('<img src="images/ajax-loader.gif" />');
$.ajax({
url: "loadmore.php?id=" + $(".ad_display:last").attr("id"),
success: function(html){
if(html){
$(".main_page").append(html);
$('.load_more').html('Load More');
}else{
$('.load_more').replaceWith('No more posts');
}
}
});
});
});
</script>
<button class="load_more">Load More</button>
任何帮助深表感谢!
更新:
if(isset($_GET['search'])){
$searchq = $_GET['search'];
$searchq = sanitize(preg_replace("#[^0-9a-z]#i","",$searchq));
$search_query = "AND (title LIKE '%".$searchq."%' OR description LIKE '%".$searchq."%')";
}
$res = mysql_query("SELECT * FROM posts WHERE `date` < '".mysql_real_escape_string($_GET['id'])."' ORDER BY `date` DESC LIMIT 10");
在loadmore.php
的上一行中,您只有一个静态的静态声明语句: ORDER BY date DESC
。
您提供的代码不说清楚,但我相信$ad_order
包含您所使用的主网页上订购您想要中使用排序loadmore.php
。 但是,这是根据查询字符串计算得出的,因此您需要将值传递到loadmore.php
并在其中复制代码。 例如,如果您的主页包含以下内容:
// main-page.php?order1=X&order2=Y
$ad_order = "Some kind of computation with the values from the query string";
然后,您还需要在loadmore.php
包含该代码,并且需要修改两个脚本,如下所示...
// loadmore.php
$ad_order = "The same computation with values from the query string";
$res = mysql_query("SELECT * FROM posts WHERE `date` < '".mysql_real_escape_string($_GET['id'])."' " . $ad_order . " LIMIT 10")
...和这个...
// Loading function in JavaScript
<script type="text/javascript">
$(document).ready(function(){
$(".load_more").click(function (){
$('.load_more').html('<img src="images/ajax-loader.gif" />');
$.ajax({
url: "loadmore.php?order1=<?=$_GET['order1'];?>&order2=<?=$_GET['order2'];?>&id=" + $(".ad_display:last").attr("id"),
}
});
});
});
</script>
这是该解决方案应该是什么样一个通用的例子-有没有足够的细节在你的问题对我来说是精确的,所以你需要改变变量名和$ad_order
代码,使其与你的脚本工作。
而且,正如Second Rikudo所说,您的代码容易受到SQL注入的攻击。 您应该阅读链接的文章。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.