Komut daha dinamik hale

1 Cevap php

Benim sayfalama komut biraz daha dinamik hale getirmek için çalışıyorum ve sayfa numaraları kısmının hesaplanmasından ile bazı yardıma ihtiyacı duyuyorum.

Ancak ben tıklandığında pagination numaraları tekrar hesaplanması gerekir anlamına gelir verileri filtrelemek ve sıralamak olacak diğer düğmeler eklemek istiyorum, php kullanarak sayfaların sayısını hesaplar aşağıda bu komut dosyası var.

Bunun için ben komut dosyası izin vermez, o halde ben şimdi yapıyorum şekilde sayfalama sayıları hesaplama daha verimli / dinamik bir yol olup olmadığını merak ediyorum.

Bu ana sayfa (pagination.php) olduğunu

<?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 />

Ve burada JS betik (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);
        });
    });
});

Ben bu sayfaya gitmek için bir düğme veya bağlantı tıklandığında bu yüzden her şeyi üretmek istiyorum 'pagination_data.php' dosyasında script hesaplama kısmını koymak için çalıştım, ama işe yaramadı.

Yani, bunu yapmanın iyi bir yolu bulmaktan üzerinde herhangi bir yardım büyük olurdu. Teşekkürler.

1 Cevap

Sayfanız nesil kod bu değiştirilmesi gereken kullanıyor sabit bir sorgu, gayet iyi. Ben herhangi bir filtre ayarlanabilir doğru sorguda geçebileceği şekilde bir $sql parametre alır bir işlev içine sayfalama kodunu değiştirerek öneririm:

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>';
  }
}

ve sonra bu gibi diyoruz:

<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 />

ya da bir filtre ile:

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