0

ウィンドウのスクロール中にレコードを反復処理するのが困難です。私の最初の考えは、画面に収まるのに十分な数のレコードをロードし、ウィンドウが下にスクロールしたときに追加のセットをロードすることでした。セッション/変数を使用してカウンターを関数に渡そうとしましたが、うまくいきませんでした。以下のコードは、ウィンドウの高さに合わせて十分な数のレコードを返しますが、制限は 0.10 です。これを解決する簡単な方法は何でしょうか?

もう 1 つの質問は、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/>';
    }

?>
4

2 に答える 2

2

phpファイルを複数回呼び出すのは悪いことのように聞こえますが、そのすべてのオーバーヘッドは、一度にすべてを取得するよりもはるかに悪くなります。必要な数を計算して、その数を尋ねることはできませんか?

<?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/>';
    }

?>

また、結果が常に同じ順序になるように、で順序を追加する必要があると思います。

于 2012-07-04T18:33:55.140 に答える
0

LIMITオフセット (1 番目のパラメーター) と取得する行数 (2 番目のパラメーター) を組み合わせた を使用します。これは、一度に 100 個の数字の 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; 
于 2012-07-04T18:37:48.683 に答える