2012-07-04 18 views
0

我很难在滚动窗口时迭代通过记录。我最初的想法是加载足够的记录以适应屏幕,然后在窗口滚动到底部时加载另外一组记录。我试过使用会话/变量来传递一个计数器到一个函数,没有运气。下面的代码返回足够的记录来适应窗口高度,但是有0,10个限制。什么是解决这个问题的简单方法?一个简单的方法来无限滚动MySql拉

另一个问题是我应该在Mysql查询上使用LIMIT或ID> + LIMIT?

$(function(){ 

setInterval(function(){ 

var totalHeight, currentScroll, visibleHeight; 

if (document.documentElement.scrollTop) 
{ currentScroll = document.documentElement.scrollTop; } 
else 
{ currentScroll = document.body.scrollTop; } 

totalHeight = document.body.offsetHeight; 
visibleHeight = document.documentElement.clientHeight; 

if (totalHeight <= currentScroll + visibleHeight) 
    { 

    $.get('infinite_pull.php', function(data) { 
     $('body').append(data); 
     //alert('Load was performed.'); 
    }); 

    } 
    else 
    { 
    $('.dd').css('background-color','white'); 
    } 
      } 
, 100); 

}); 

PHP

<?php 
    session_start(); 
    mysql_connect('localhost','root',''); 
    mysql_select_db('project5'); 

    $query = "select user_email from users limit 0,10;"; 
    $results= mysql_query($query); 

    while($row = mysql_fetch_array($results)){ 
     echo $row['0'] . '<br/>'; 
    } 

?> 

回答

2

调用PHP文件多次隔音太差, 所有开销proberly差那么得到的一次。 你不能只计算你需要多少,并要求这个数字?

<?php 
    $from = (int) $_GET['from']; 
    $count = (int) $_GET['count']; 

    mysql_connect('localhost','root',''); 
    mysql_select_db('project5'); 

    $query = "select user_email from users limit {$from},{$count};"; 
    $results= mysql_query($query); 

    while($row = mysql_fetch_array($results)){ 
     echo $row['0'] . '<br/>'; 
    } 

?> 

我也认为你应该添加一个命令,以确保结果总是以相同的顺序。

0

使用LIMIT,它结合了偏移量(第一参数)和行数以得到(第二参数)。以下是一个简短的分页示例,它可以一次获得100个数字7的第7页。

<?php 

$arr = array(); 
for ($x = 0; $x < 100; $x += 1) { 
    $arr[] = $x; 
}; 

$page = 7; 
$per_page = 7; 
$current_page = 1; 

for ($z = 0; $z < count($arr); $z += 1) { 
    if (0 === ($z % $per_page)) { 
     $current_page += 1; 
    } 
    if ($current_page === $page) { 
     $num_results = $current_page * $per_page; 
     $query = "select user_email from users limit {$num_results},{$per_page};"; 
     echo "value $z on page $page via $query \n"; 
    } 
} 


?> 

输出:

$ php pagination.php 
value 35 on page 7 via select user_email from users limit 49,7; 
value 36 on page 7 via select user_email from users limit 49,7; 
value 37 on page 7 via select user_email from users limit 49,7; 
value 38 on page 7 via select user_email from users limit 49,7; 
value 39 on page 7 via select user_email from users limit 49,7; 
value 40 on page 7 via select user_email from users limit 49,7; 
value 41 on page 7 via select user_email from users limit 49,7; 
相关问题