2012-06-01 2 views
2

Я работаю над сайтом на основе PHP-Mysql, на котором есть некоторые большие списки для отображения (например, списки продуктов). Теперь мне пришлось разбивать его на страницы для удобства пользователя. Поэтому я добавил разбивку на страницы, используя PHP.Now это обновляет страницу каждый раз, когда я нажимаю на номер страницы. Так что у меня есть база с PHP/MySQL и вы хотите добавить Ajax/jquery к ней, чтобы избежать ненужное обновление страницы . Как я могу добавить разбиение на страницы на существующий код, который у меня есть? Это код php для справки.Добавление jquery в php mysql pagination

 <div class="flt width710"> 
      <div style="margin-top:10px;" class="flt mapnewalert"> <?php //echo ucfirst($_SESSION['$city']) ?></div> 
      <div style="float:right" id="toppagesel"> 
      <?php 
        echo $pages->display_pages(); 
        echo $pages->display_items_per_page(); 
        //echo "<span class=\"\">".$pages->display_jump_menu()."</span>"; 
        $query = "SELECT * from properties,locality,cities where properties.city_id='".$_SESSION['$cityId']."' and properties.locality_id=locality.locality_id and properties.city_id=cities.city_id $pages->limit"; 
        $result = mysql_query($query) or die(mysql_error()); 

        //$getProperty = $propertyDetails->getPropertyDetailsByCityIdPaginate($_SESSION['$cityId'],$limit); 
      ?> 
      <?php //echo $pages->display_pages(); ?><?php //echo $pages->display_items_per_page();?> 
      </div> 
     </div> 

А класс пагинация:

  class Paginator{ 
var $items_per_page; 
var $items_total; 
var $current_page; 
var $num_pages; 
var $mid_range; 
var $low; 
var $limit; 
var $return; 
var $default_ipp; 
var $querystring; 
var $ipp_array; 

      function Paginator() 
{ 
    $this->current_page = 1; 
    $this->mid_range = 2; 
    $this->ipp_array = array(2,4,6,8,'All'); 
    $this->items_per_page = (!empty($_GET['ipp'])) ? $_GET['ipp']:$this->default_ipp; 
} 

      function paginate() 
{ 
    if(!isset($this->default_ipp)) $this->default_ipp=2; 
    if($_GET['ipp'] == 'All') 
    { 
     $this->num_pages = 1; 
      // $this->items_per_page = $this->default_ipp; 
    } 
    else 
    { 
     if(!is_numeric($this->items_per_page) OR $this->items_per_page <= 0) $this->items_per_page = $this->default_ipp; 
     $this->num_pages = ceil($this->items_total/$this->items_per_page); 
    } 
    $this->current_page = (isset($_GET['page'])) ? (int) $_GET['page'] : 1 ; // must be numeric > 0 
    $prev_page = $this->current_page-1; 
    $next_page = $this->current_page+1; 
    if($_GET) 
    { 
     $args = explode("&",$_SERVER['QUERY_STRING']); 
     foreach($args as $arg) 
     { 
      $keyval = explode("=",$arg); 
      if($keyval[0] != "page" And $keyval[0] != "ipp") $this->querystring .= "&" . $arg; 
     } 
    } 

    if($_POST) 
    { 
     foreach($_POST as $key=>$val) 
     { 
      if($key != "page" And $key != "ipp") $this->querystring .= "&$key=$val"; 
     } 
    } 
    if($this->num_pages > 4) 
    { 
     $this->return = ($this->current_page > 1 And $this->items_total >= 10) ? "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$prev_page&ipp=$this->items_per_page$this->querystring\">&laquo; Previous</a> ":"<span class=\"inactive\" href=\"#\">&laquo; Previous</span> "; 

     $this->start_range = $this->current_page - floor($this->mid_range/2); 
     $this->end_range = $this->current_page + floor($this->mid_range/2); 

     if($this->start_range <= 0) 
     { 
      $this->end_range += abs($this->start_range)+1; 
      $this->start_range = 1; 
     } 
     if($this->end_range > $this->num_pages) 
     { 
      $this->start_range -= $this->end_range-$this->num_pages; 
      $this->end_range = $this->num_pages; 
     } 
     $this->range = range($this->start_range,$this->end_range); 

     for($i=1;$i<=$this->num_pages;$i++) 
     { 
      if($this->range[0] > 2 And $i == $this->range[0]) $this->return .= " ... "; 
      // loop through all pages. if first, last, or in range, display 
      if($i==1 Or $i==$this->num_pages Or in_array($i,$this->range)) 
      { 
       $this->return .= ($i == $this->current_page And $_GET['page'] != 'All') ? "<a title=\"Go to page $i of $this->num_pages\" class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" title=\"Go to page $i of $this->num_pages\" href=\"$_SERVER[PHP_SELF]?page=$i&ipp=$this->items_per_page$this->querystring\">$i</a> "; 
      } 
      if($this->range[$this->mid_range-1] < $this->num_pages-1 And $i == $this->range[$this->mid_range-1]) $this->return .= " ... "; 
     } 
     $this->return .= (($this->current_page < $this->num_pages And $this->items_total >= 10) And ($_GET['page'] != 'All') And $this->current_page > 0) ? "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$next_page&ipp=$this->items_per_page$this->querystring\">Next &raquo;</a>\n":"<span class=\"inactive\" href=\"#\">&raquo; Next</span>\n"; 
     $this->return .= ($_GET['page'] == 'All') ? "<a class=\"current\" style=\"margin-left:10px\" href=\"#\">All</a> \n":"<a class=\"paginate\" style=\"margin-left:10px\" href=\"$_SERVER[PHP_SELF]?page=1&ipp=All$this->querystring\">All</a> \n"; 
    } 
    else 
    { 
     for($i=1;$i<=$this->num_pages;$i++) 
     { 
      $this->return .= ($i == $this->current_page) ? "<a class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$i&ipp=$this->items_per_page$this->querystring\">$i</a> "; 
     } 
     $this->return .= "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=1&ipp=All$this->querystring\">All</a> \n"; 
    } 
    $this->low = ($this->current_page <= 0) ? 0:($this->current_page-1) * $this->items_per_page; 
    if($this->current_page <= 0) $this->items_per_page = 0; 
    $this->limit = ($_GET['ipp'] == 'All') ? "":" LIMIT $this->low,$this->items_per_page"; 
} 

    } 

Как я могу добиться этого ?? Я говорил другие темы, и пытался, но не мог заставить его работать в моих context.I новичок в Ajax JQuery часть извините, если это простая задача! : P

PS: Возможно ли это в текущем сценарии или мне нужно внести изменения в класс pgination и php-код. Пожалуйста, пролите свет на него!
Благодаря

ответ

0
$(document).ready(function() 
{ 
$('.paginate').live('click', function(e) 
{ 
    e.preventDefault(); 
    var btnPage = $(this); 
    $.ajax(
    { 
     url : btnPage.attr('href'), 
     success : function(resp) 
     { 
      // replace current results with new results. 
      $('#project_section').html(resp); 
     }, 
     error : function() 
     { 
      window.location.href = btnPage.attr('href'); 
     } 
    }); 
}); 

});

Здесь $(".paginate") является классом <li> в моем классе paginator. я получил ответ here Спасибо

1

Есть много JavaScript библиотека нумерации страниц поможет вам упростить вашу работу,

вы можете попробовать эту библиотеку постраничной,

Демы: http://www.frequency-decoder.com/demo/table-sort-revisited/paginate/

Сайт: http://www.frequency-decoder.com/2007/10/19/client-side-table-pagination-script/

+0

Большое спасибо за быстрый ответ, но я хотел бы что-то, что подходит выше код или я должен вернуться к logic.Can't я просто заменить DIV с новым один с использованием ajax ?? Что-то подобное предлагалось здесь, но я не смог заставить его работать - http://stackoverflow.com/questions/10755118/how-to-add-ajax-on-existing-php-mysql-based-pagination – KillABug