2010-04-07 5 views
0

안녕하세요, 저는 더 ajaxy가되도록 this pagination class을 얻으려고했습니다. 페이지 [2]와 같은 페이지 번호를 클릭하면 데이터가로드되지만 다른 데이터로 이동하지 않고 데이터를로드하려고합니다. 페이지 (페이지를 다시로드하지 않고 백그라운드에서 HTTP 요청).PHP 페이지 매김을 jQuery로 변환 하시겠습니까?

php와 jquery에 익숙하지 않기 때문에이 결과를 얻는 방법에 대해 약간의 확신이 없습니다. 특히 php 클래스를 사용할 때 더욱 그렇습니다. 위에서 볼 수 있듯이

<?php 
$categoryId=$_GET['category']; 
echo $categoryId; 
?> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script> 
<script type="text/javascript" src="jquery_page.js"></script> 

<?php 
    //Include the PS_Pagination class 
    include('ps_pagination.php'); 
    //Connect to mysql db 
    $conn = mysql_connect('localhost', 'root', 'root'); 
    mysql_select_db('ajax_demo',$conn); 
    $sql = "select * from explore where category='$categoryId'"; 
    //Create a PS_Pagination object 
    $pager = new PS_Pagination($conn, $sql, 3, 11, 'param1=value1&param2=value2'); 
    //The paginate() function returns a mysql 
    //result set for the current page 
    $rs = $pager->paginate(); 
    //Loop through the result set 

echo "<table width='800px'>"; 

    while($row = mysql_fetch_assoc($rs)) {    

       echo "<tr>"; 
        echo"<td>"; 
         echo $row['id']; 
        echo"</td>"; 

        echo"<td>"; 
         echo $row['site_description']; 
        echo"</td>"; 

        echo"<td>"; 
         echo $row['site_price']; 
        echo"</td>"; 
       echo "</tr>"; 

    } 
echo "</table>"; 

     echo "<ul id='pagination'>"; 

      echo "<li>"; 
      //Display the navigation 
      echo $pager->renderFullNav(); 
      echo "</li>"; 

     echo "</ul>"; 

?> 

<div id="loading" ></div> 
<div id="content" ></div> 

내가 클래스?이 부분에 뭔가를 할 필요가 :

메인 페이지 그런데 모습입니다

$pager = new PS_Pagination($conn, $sql, 3, 11, 'param1=value1&param2=value2'); 

또는이 ? :

echo $pager->renderFullNav(); 

내가하지 더 많은 JQuery와에 대해,하지만 난 생각 나는 그것을 좋아하지 시작하지 않을 것이다 않습니다

$("#pagination li").click(function() { 

그럼 내가 어떤을하지 어쩌면 뭔가 ...

을로드합니다. 이것에 대한 도움이 될 것입니다. 감사.

+0

'PS_Pagination' 생성자의 매개 변수는 무엇입니까? –

+0

매개 변수는 다음에서 찾을 수 있습니다. http://phpsense.com/php/php-pagination-script.html – ClarkSKent

답변

1

이 클래스를 사용하는 방법을 모르겠다면, 스크립트를 작성한 스크립트가 데이터를 검색하기 위해 현재 PS_pagination 인스턴스에 액세스해야하기 때문에 약간 까다로울 것 같습니다. .

클래스가 없으면 너무 까다 롭지 않습니다.

페이지 당 레코드 수와 현재 페이지 번호를 사용하는 데이터를 실제로 반환하려면 PHP 스크립트가 필요합니다. 이 스크립트에서는 데이터를 반환하는 대신 HTML을 반환합니다. 그래서 데이터베이스에서 데이터를 가져 와서 테이블을 생성합니다. 이것은 내가 아약스의 성공에해야 할 일은 현재이 스크립트에서 얻을 수있는 새로운 html로 현재 가능한 것을 대체한다는 것을 의미합니다. Heres는 예 ..

//Current Page Number 
$page_num = isset($_GET['page_number']) ? mysql_real_escape_string($_GET['page_number']) : 1; 

//Number of records to show on each page 
$num_records = isset($_GET['num_records_pp']) ? mysql_real_escape_string($_GET['num_records_pp']) : 10; 

//Row to start collecting data from 
$start_row = $num_records * ($page_num - 1); 

//String to store html to return 
$return_html = ''; 

//SQL Query 
$sql = mysql_query("SELECT * FROM my_table LIMIT $start_row, $num_records"); 

//Query success 
if($sql) {  
    //Construct html for table 
    $return_html = "<table width='800px'>";   

    while($row = mysql_fetch_array($sql) {  

     $return_html .= "<tr>";  
     $return_html .= "<td>" . $row['id'] . "</td>";   
     $return_html .= "<td>" . $row['site_description'] . "</td>"; 
     $return_html .= "<td>" . $row['site_price'] . "</td>"; 
     $return_html .= "</tr>"; 

    }  
    $return_html .= "</table>"; 

//Query Failed 
} else { 

    $return_html = "<p class='error'>Error Fetching Data</p>"; 

} 

return $return_html; 

은 그럼 그냥 아약스를 통해 GET 요청을하고 페이지 번호, 원하는 행의 수를 전달합니다.

$.get("get_data.php", { page_number: 1, num_records_pp: 20 }, 
    function(data){ 
    $('div#my_table').html(data); 
    }); 

그래서,이 쿼리는 당신이 당신의 테이블을 포함하는 "MY_TABLE"의 ID로 사업부를 가지고 assumses, 그 다음 사용자가 요청한 데이터 만의 새로운 테이블 consistion으로이 대체됩니다.

이 코드는 단지 jist를 제공하기 위해 일부 오류가있을 수 있지만 도움이 되길 바랍니다.

+0

예를 들어 SQL 인젝션 취약점이 가장 걱정됩니다. 사용자 입력을 정말로 위생적으로 처리해야합니다. 비록 그것이 단지 IMHO의 예일지라도. 필자의 요점을 설명하기 위해,이 예제를 취하면,'$ _GET [ 'num_records_pp'] = "10; DELETE * FROM USERS;".... –

+0

그 외에도 좋은 예가 있습니다. ;) +1 –

+0

감사합니다. 언급 해 주셔서 고맙습니다. 필자는 위의 내용을 약간 변경했습니다. 난 그냥 그것을 간과 한 예를 들어,하지만 난 아마 shoudnt가 :) – cast01

관련 문제