使脚本更具动态性

时间:2010-02-16 20:24:37

标签: php jquery pagination

我正在努力使我的分页脚本更加动态,并且需要一些帮助来计算页码部分。

我在下面有这个脚本使用php计算页数,但我想添加其他按钮,点击后会过滤和整理数据,这意味着需要再次计算分页数。

我所拥有的脚本不允许这种情况发生,所以我想知道是否有一种更有效/更动态的方式来计算分页数,那就是我现在的方式。

这是主页面(pagination.php)

<?php
include('config.php');
$per_page = 3;

//Calculating no of pages
$sql = "select * from explore";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
$pages = ceil($count/$per_page)
?>

<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_pagination.js"></script>


<div id="loading" ></div>
<div id="content" data-page="1"></div>
<ul id="pagination">
<?php
//Pagination Numbers
for($i=1; $i<=$pages; $i++)
{
    echo '<li class="page_numbers" id="'.$i.'">'.$i.'</li>';
}
?>

</ul>
<br />
<br />

这是JS脚本(jquery.pagination.js)

$(document).ready(function(){

    //Display Loading Image
    function Display_Load()
    {
        $("#loading").fadeIn(900,0);
        $("#loading").html("<img src='bigLoader.gif' />");
    }

    //Hide Loading Image
    function Hide_Load()
    {
        $("#loading").fadeOut('slow');
    };

    //Default Starting Page Results
    $("#pagination li:first").css({'color' : '#FF0084'}).css({'border' : 'none'});

    Display_Load();

    $("#content").load("pagination_data.php?page=1", Hide_Load());

    //Pagination Click
    $("#pagination li").click(function(){
        Display_Load();

        //CSS Styles
        $("#pagination li")
            .css({'border' : 'solid #dddddd 1px'})
            .css({'color' : '#0063DC'});

        $(this)
            .css({'color' : '#FF0084'})
            .css({'border' : 'none'});

        //Loading Data
        var pageNum = this.id;

        $("#content").load("pagination_data.php?page=" + pageNum, function(){
            Hide_Load();
            $(this).attr('data-page', pageNum);
        });
    });
});

我尝试将脚本的计算部分放在'pagination_data.php'文件中,所以当我点击按钮或链接转到该页面时,它会生成所有内容,但它不起作用。

所以,任何帮助找出这样做的好方法都会很棒。感谢。

1 个答案:

答案 0 :(得分:1)

您的页面生成代码很好,它正在使用的固定查询需要更改。我建议将您的分页代码更改为一个带$sql参数的函数,以便您可以传入由任何过滤器调整的正确查询:

function generate_pagination($sql) {
  include_once('config.php');
  $per_page = 3;

  //Calculating no of pages
  $result = mysql_query($sql);
  $count = mysql_num_rows($result);
  $pages = ceil($count/$per_page)

  //Pagination Numbers
  for($i=1; $i<=$pages; $i++)
  {
    echo '<li class="page_numbers" id="'.$i.'">'.$i.'</li>';
  }
}

然后像这样调用它:

<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_pagination.js"></script>

<div id="loading" ></div>
<div id="content" data-page="1"></div>
<ul id="pagination">
<?php generate_pagination('SELECT * FROM explore'); ?>
</ul>
<br />
<br />

或使用过滤器:

<?php generate_pagination('SELECT * FROM explore WHERE key="value"'); ?>