【问题标题】:Pagination problem needing assistance需要帮助的分页问题
【发布时间】:2011-01-14 22:47:32
【问题描述】:

嘿,我正在尝试添加一个按钮,单击该按钮将从 mysql 数据库中获取数据并以分页方式显示。但是,我似乎无法让它正常工作。

第一个主页如下所示: 分页.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>

<style>
body { margin: 0; padding: 5; font-family:Verdana; font-size:10px }
a
{
text-decoration:none;
color:#B2b2b2;

}

a:hover
{

color:#DF3D82;
text-decoration:underline;

}
#loading { 
width: 100%; 
position: absolute;
}

#pagination
{
text-align:center;
margin-left:120px;

}
li{ 
list-style: none; 
float: left; 
margin-right: 16px; 
padding:5px; 
border:solid 1px #dddddd;
color:#0063DC; 
}
li:hover
{ 
color:#FF0084; 
cursor: pointer; 
}
td{
border:solid 1px #dddddd;
padding:5px;
}


</style>



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

<p id="marketing">MARKETING</p>
</ul>
<br />
<br />

如您所见,该页面上方的按钮如下所示:

<p id="marketing">MARKETING</p>

所以,当用户点击它时,我需要它从数据库中获取结果。

我用 jquery 这样做:

$(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, Hide_Load());

    });


// Editing below.        
        // Sort content Marketing    
        $("#pagination p").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("filter_marketing.php?page=" + pageNum, Hide_Load());
        });

});

问题在于它不起作用的主要原因有一个: 1. PageNum = 营销。我需要它是上面“分页 li”这样的数字。我不知道如何正确修复它。

如果我让你感到困惑,我会尝试更好地解释:

我想创建一个按钮(即营销),单击该按钮时将从数据库中获取数据并显示,但我还需要“刷新”分页编号以补偿新数据。

如果您需要进一步解释,请告诉我。任何帮助将不胜感激。谢谢你。

【问题讨论】:

  • 选择特定列的计数,而不是抓取整个表数据。 SELECT COUNT(*) FROM explore 会更好

标签: php jquery mysql pagination jquery-pagination


【解决方案1】:

您可能正在寻找index()。

 var pageNum = $(this).index() + 1;

请记住,索引是基于 0 的,因此添加 1。

这也取决于您的 html 标记,因为索引返回:

一个整数,表示 jQuery 对象中第一个元素相对于其兄弟元素的位置。

编辑:

因此,如果您在更新#content 的内容时也更改了data-page 属性,那么您也可以在单击#marketing 时获得该信息,从而知道要获取哪个页面。

如果您要为其中一个 LI 元素提供“当前页面”类,然后获取 .current-class LI 的 id,这也可以。

<div id="content" data-page="1"></div>

Js:

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


$("#pagination p").click(function () {
    //...
    var pageNum = $('#content').attr('data-page');

    $("#content").load("filter_marketing.php?page=" + pageNum, Hide_Load());
 });

【讨论】:

  • 你确定它是一个 jQuery 对象吗?我刚刚将您的标记从 this.id 更改为 $(this).index()?
  • 是的。它转到第 4 页,但没有任何显示,并且数字与以前保持一致。
  • 当您从 url 加载 filter_marketing.php?page=4 时,它是否显示它应该显示的内容?
  • 不,它没有,因为数据库中只有 4 个营销条目,应该等于 2 页。如果我手动输入 URL,第 1 页和第 2 页可以工作。
  • Ohhhhhh....我想我之前误解了你的问题。我更新了我的答案,因为它更容易阅读
猜你喜欢
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多