从最后一个记录检索后从postgresql拉记录

从最后一个记录检索后从postgresql拉记录

问题描述:

我正在做一个查询,从SQL表中拉出大量的数据。我想实现无限滚动功能,以便每次只能拖动25条左右的记录。从最后一个记录检索后从postgresql拉记录

虽然我有一些麻烦。

当用户向下滚动时,会调用此查询。 jquery发布到php上的最后一个记录的最后一个id放在页面上;

//ie, this js pulls the id 
var last_order_number = $('.order_number_divs:last').attr('id'); 

//from this div 
<div id="2476" class="order_number_divs"> 1121310 </div> 

我想,如果我选择了两个结果其中ID比页面上的上号时,我肯定会得到以下两个结果。但是,我每次都得到相同的两个结果。

SELECT 
    id, 
    order_number 
    FROM sales_orders 
    WHERE id > '$last_id' 
    ORDER BY id ASC 
    LIMIT 2 

这是通过模板运行数据来填充div的jquery。由于vkTemplate不支持追加,因此一旦完成了将内容填充到div的操作,我删除了刚刚填充的div的ID,并将ID赋予其下面的div,因此下一次有滚动时,内容将进入该分区。

$(window).scroll(function() { 

    if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) { 



     var last_order_number = $('.order_number_divs:last').attr('id'); 

     console.log(last_order_number); 
     $.ajax({ 
      type: "POST", 
      async: false, 
      url: "queries/privileged_search_more_content.php", 
      data: "user=" + "<?=$_COOKIE['username']?>" + "&last_order_number=" + last_order_number, 
      dataType: "json", 
      success: function (data) { 
       console.log(data); 

       $('#INT-order_information_container').vkTemplate("templates/get_orders_initial_template.tmpl?" + <?=time()?> , data, function() { 

       $('#INT-order_information_container').removeAttr('id'); 
       $('#template_div_next').removeAttr('id') 
             .attr('id', 'INT-order_information_container'); 

       }); 
       console.log($.active); 
      } 
     }); 

    } 
    }); 

你有什么想法为什么相同的两个记录被反复拉扯?

非常感谢!

此外,我发现这个滚动功能似乎被调用上下来。但这是一个不同的问题。只是说,所以你知道我至少知道那么多。

+1

查询看起来是合理的。如果从psql运行它,会发生什么情况,每次都要用最后一个ID代替?如果它在psql中有效,你可以合理地断定问题是你的代码;你可能实际上并没有使用新的行,所以你不断重新提交旧的行。查询日志也可能有用;在'postgresql.conf'中启用'log_statement ='all''并重新启动Pg。 – 2012-08-15 01:15:32

+0

@CraigRinger我认为这听起来很合乎逻辑。不幸的是,postgre conf的修改将不得不等到服务器人员回到办公室。感谢您的建议! – 1252748 2012-08-15 01:52:01

+0

如果你不能修改'postgresql.conf',你可以使用'SET log_statement ='all';'在你的数据库连接代码中设置它的每个会话。只有来自该连接的语句才会被记录到PostgreSQL服务器日志中。另外,我很惊讶你没有在本地PostgreSQL安装上进行开发/测试,所以你可以设置快速但不安全的选项,所以你不必担心“服务器人”。 – 2012-08-15 01:55:08

vkTemplate支持添加。看看在vkTemplate主页

http://www.eslinstructor.net/vktemplate/

有菜单项“追加技术”。

用vkTemplate实现追加的另一种方法是定制这个插件。原因很简单:开放代码,找到线#94102117 https://github.com/vkiryukhin/vkTemplate/blob/master/vktemplate.js

$(elm).empty().append(. . .) 

,并从该表达式删除空的()。

希望这有助于

-Vadim