2012-09-14 2 views
2

데이터베이스가 있고 1000 개가 넘는 레코드가 있습니다. 프론트 엔드 PHP 페이지에서 표시해야합니다. 사용자가 스크롤 한 후 스크롤해야한다면 스크롤하는 데 더 많은 시간이 걸릴 것입니다. 페이스 북과 Pinterest처럼. 달성 방법 ... My DB : - mysql 서버 : - wamp스크롤하는 동안 mysql 데이터베이스에서 데이터를 가져 오는 방법

+1

안돼, 제발 아니, [무한 스크롤 (http://blog.tommorris.org/post/21073443312/introducing-awf ... 같다 ulness-js). – Quentin

+0

이것은 MySQL에 관한 실제 질문이 아니라 자바 스크립트 중 하나입니다 ... http://stackoverflow.com/a/5212757/889604 – ChrisW

+0

[Facebook은 무한 스크롤을 어떻게 얻을 수 있습니까?] (http : // stackoverflow.com/questions/10404699/how-does-facebook-achieve-infinite-scrolling) – Quentin

답변

0

jQuery (또는 좋아하는 라이브러리)를 사용하여 사용자가 페이지의 끝에 도달했을 때를 감지 한 다음 AJAX 요청을 트리거합니다. 다음 N 결과에 대한 서버. 예를 들어

:

자바 스크립트 부분 :

var n = 0; 

$(document).ready(function() { 
    $(window).scroll(function() { 
     if ($('body').height() <= ($(window).height() + $(window).scrollTop())) { 
      $.ajax({ 
       url: "my_page.php", 
           data: {'n' : n}, 
       context: document.body 
      }).done(function(data) { 
       n += 1; 
       console.log(data); // <--- do stuff with received data here 
      }); 
     } 
    }); 
}); 

PHP 부분 :

$n = $_POST['n']; 
$n = 10 * $n; 
$sql = "SELECT * FROM mytable LIMIT $n, 10"; // get 10 new entries each request. 
+0

이 링크를 제공하거나 자세히 설명하십시오 – user1561923

+0

@ user1561923 - 원래 질문에 댓글에 3 개 이상의 사례가 있습니다. – ChrisW

+0

글쎄, JavaScript 부분은 copy-and-paste 작업 예제처럼 더 이상의 예제가 필요하지 않습니다. 매번 N 개의 항목을 가져 오는 "my_page.php"에 코드를 작성해야합니다. 내 대답을 업데이트 할게. – alexandernst

0

귀하의 질문의 코드 조각으로 대답 할 일반적이고 어렵다.

  • 는 AJAX 호출을 확인 스크롤 이벤트를
  • 를 감지하는이 SELECT * FROM yourTable WHERE ..... ORDER BY .... LIMIT 50
  • 사용 jQuery를 같은 쿼리를 수행하여 요소의 기본 수 (50 말)을 가져 오기 의사 언어의 해결책이 될 수 당신이 스크롤 이벤트를 감지하면
  • 는 AJAX
  • 에서 반환 된 요소를 렌더링 (그래서, 델타을 추가하거나 오프셋)
  • 은 다시 50 개 요소를 가져 오는 새 쿼리를 확인하지만, 이번에는 스크롤 한 고려
+1

나는 그 대답을 여기에서 얻었다. http : //www.9lessons.info/2009/07/load-data-while-scroll-with-jquery-php.html – user1561923

1

단계 1]과 같은 약간의 JQuery와의 도움을 받아 ....

var countScroll= 0; 
$(window).scroll(function() 
{ 
     if ($(window).scrollTop() == $(document).height() - $(window).height()) 
     { 
     loadData(); 
     } 
     countScroll++; 
}); 

단계 2] loadData 전화 AJAX의 도움을 받아() 함수

function loadData() 
{ 
    var xmlhttp; 
    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     {    
     var res = xmlhttp.responseText; 
     document.getElementById("respDiv").innerHTML=res;   
      } 
    } 
    xmlhttp.open("GET","loadPageData.php?loadLimit="+countScroll,true); 
     xmlhttp.send(); 
    } 

단계 3 ] 당신의 PHP 페이지 즉 loadPageData.php는

$loadLimit= $_GET['loadLimit']; 
    $result = mysql_query("SELECT * FROM tableName limit $loadLimit"); 
    if(mysql_num_rows($result)>0) 
    { 
     while($row = mysql_fetch_array($result)) 
     { 
     echo $yourVariable= $row['fieldName']; 
      } 
    } 
관련 문제