2012-09-14 85 views
2

我有一個數據庫,它包含1000多條記錄。我必須顯示它在前端的PHP頁面,如果我顯示所有它將需要更多的時間來加載,所以如果用戶滾動信息應該在滾動後獲取。就像Facebook和Pinterest一樣。如何實現這一目標? 我的DB: - MySQL的 服務器: - WAMP如何在滾動時從mysql數據庫獲取數據

+1

不,請不,不是[無限滾動](http://blog.tommorris.org/post/21073443312/introducing-awf ulness-JS)。 – Quentin

+0

這不是一個真正的MySQL問題,更多的是一個JavaScript的問題...嘗試http://stackoverflow.com/a/5212757/889604 – ChrisW

+0

可能的重複[Facebook如何實現無限滾動?](http:// stackoverflow.com/questions/10404699/how-does-facebook-achieve-infinite-滾動) – Quentin

回答

0

使用jQuery(或您喜愛的圖書館),當用戶到達頁面的最後檢測,然後就觸發一個Ajax請求下一個N結果的服務器。

例如:

JavaScript部分:

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部分不需要任何進一步的例子,因爲這是一個複製和粘貼的工作示例。您需要在「my_page.php」中編寫代碼,每次獲取N個條目。我會更新我的答案。 – alexandernst

0

你的問題是通用的,很難用的代碼片段來回答。
這可能是僞碼的解決方案

  • 通過做這樣SELECT * FROM yourTable WHERE ..... ORDER BY .... LIMIT 50
  • 使用jQuery查詢檢測滾動事件
  • 做一個AJAX調用取件的默認數量(比如50)一旦檢測到滾動事件
  • 您在哪裏再次讀取50個元素一個新的查詢,但這次考慮到已滾動(因此,加增量或偏移)
  • 渲染來自AJAX
  • 返回的元素
+1

我得到了答案在這裏它很好 http://www.9lessons。方式/ 2009/07 /負載數據而渦卷與 - jQuery的php.html – user1561923

1

步驟1]取點點的jquery作爲一個幫助....

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

步驟2]以AJAX的幫助來調用loadData()函數

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']; 
      } 
    } 
相關問題