Buenas, quisiera ver si me pueden ayudar con un problemita, la verdad esque ya lo tengo medio resuelto, pero quisiera mejorarlo, ahi les va:
Tengo una clase en php llamada pagination_class.php:
Con esta clase se hacen las consultas al server y la paginacion necesaria(con "anterior", "siguiente", "1 ,2,3,4...etc". Esta clase solo funcionaba con recargas de pagina, pero bueno, ya logre usarla con jquery.
El problema es que al cambiar de pagina con la paginacion, los botones de navegacion tambien se recargan, digo esto es porque cada ves que se cambia la pagina se vuelven a hacer los calculos necesarios para que aparesca los nuevos botones de navegacion con la pagina actual seleccionada.
Lo que me gustaria hacer es que los botones de navegacion se queden estaticos.
la clase paginacion_class.php es la siguiente:
Código PHP:
<?php
class Pagination_class{
var $result;
var $anchors;
var $total;
function Pagination_class($qry,$starting,$recpage)
{
$rst = mysql_query($qry) or die(mysql_error());
$numrows = mysql_num_rows($rst);
$qry .= " limit $starting, $recpage";
$this->result = mysql_query($qry) or die(mysql_error());
$next = $starting+$recpage;
$var = ((intval($numrows/$recpage))-1)*$recpage;
$page_showing = intval($starting/$recpage)+1;
$total_page = ceil($numrows/$recpage);
if($numrows % $recpage != 0){
$last = ((intval($numrows/$recpage)))*$recpage;
}else{
$last = ((intval($numrows/$recpage))-1)*$recpage;
}
$previous = $starting-$recpage;
$anc = "<ul id='pagination-flickr'>";
if($previous < 0){
//$anc .= "<li class='previous-off'><<</li>";
$anc .= "<li class='previous-off'><</li>";
}else{
//$anc .= "<li class='next'><a href='javascript:void(0);'><<</a></li>";
$anc .= "<li class='next'><a id='$previous' href='javascript:void(0);'><</a></li>";
}
################If you dont want the numbers just comment this block###############
$norepeat = ceil(5/2);//no of pages showing in the left and right side of the current page in the anchors
$j = 1;
$anch = "";
for($i=$page_showing; $i>1; $i--){
$fpreviousPage = $i-1;
$page = ceil($fpreviousPage*$recpage)-$recpage;
$anch = "<li><a id='$page' href='javascript:void(0);'>$fpreviousPage</a></li>".$anch;
if($j == $norepeat) break;
$j++;
}
$anc .= $anch;
$anc .= "<li class='active'>".$page_showing."</li>";
$j = 1;
for($i=$page_showing; $i<$total_page; $i++){
$fnextPage = $i+1;
$page = ceil($fnextPage*$recpage)-$recpage;
$anc .= "<li><a id='$page' href='javascript:void(0);'>$fnextPage</a></li>";
if($j==$norepeat) break;
$j++;
}
############################################################
if($next >= $numrows){
$anc .= "<li class='previous-off'>></li>";
//$anc .= "<li class='previous-off'>>></li>";
}else{
$anc .= "<li class='next'><a id='$next' href='javascript:void(0);' > > </a></li>";
//$anc .= "<li class='next'><a href='javascript:void(0);' >>></a></li>";
}
$anc .= "</ul>";
$this->anchors = $anc;
$this->total = "Pagina : $page_showing de $total_page .";
}
}
?>
y los archivos con los que la llamo son:
lista.php
Código PHP:
<div id="page_contents">
<?
include('js/funcion.inc');
include('js/pagination_class.php');
conecta();
$tipo=$_GET['tipo'];
$estado=$_GET['estado'];
$ciudad=$_GET['ciudad'];
$colonia=$_GET['colonia'];
$sql = "SELECT * FROM propiedad";
if ($tipo!=''){
$sql .=" WHERE operacion=$tipo";
if ($estado!=''){
$sql .=" AND estado=$estado";
if ($ciudad!=''){
$sql .=" AND ciudad=$ciudad";
if ($colonia!=''){
$sql .=" AND colonia=$colonia";
}
}
}
}
if(isset($_GET['starting'])&& !isset($_REQUEST['submit'])){
$starting=utf8_decode($_GET['starting']);
}else{
$starting=0;
}
$recpage = 1;//number of records per page
$obj = new pagination_class($sql,$starting,$recpage);
$result = $obj->result;
while($row=mysql_fetch_array($result))
{
echo $row[0]." | ".$row[1]." | ".$row[2]."<br>";
}
echo $obj->anchors;
mysql_free_result($obj->result);
mysql_close()
?>
</div>
<script type="text/javascript">
$(document).ready(function(){
$("#pagination-flickr li a").click(function(){
var tipo = "<? echo $tipo; ?>";
var estado = "<? echo $estado; ?>";
var ciudad = "<? echo $ciudad; ?>";
var colonia = "<? echo $colonia; ?>";
var pageNum = this.id;
$("#page_contents").html('<img src="imagen/ajax-loader.gif" />').load("listapagi.php?tipo="+tipo+"&estado="+estado+"&ciudad="+ciudad+"&colonia="+colonia+"&starting="+pageNum);
});
});
</script>
y listapagi.php
Código PHP:
<div id="page_contents">
<?
include('js/funcion.inc');
include('js/pagination_class.php');
conecta();
$tipo=$_GET['tipo'];
$estado=$_GET['estado'];
$ciudad=$_GET['ciudad'];
$colonia=$_GET['colonia'];
$sql = "SELECT * FROM propiedad";
if ($tipo!=''){
$sql .=" WHERE operacion=$tipo";
if ($estado!=''){
$sql .=" AND estado=$estado";
if ($ciudad!=''){
$sql .=" AND ciudad=$ciudad";
if ($colonia!=''){
$sql .=" AND colonia=$colonia";
}
}
}
}
if(isset($_GET['starting']) && $start!='0'){
$starting=utf8_decode($_GET['starting']);
}else{
$starting=0;
}
$recpage = 1;//number of records per page
$obj = new pagination_class($sql,$starting,$recpage);
$result = $obj->result;
while($row=mysql_fetch_array($result))
{
echo $row[0]." | ".$row[1]." | ".$row[2]."<br>";
}
echo $obj->anchors;
mysql_free_result($obj->result);
mysql_close()
?>
</div>
<script type="text/javascript">
$(document).ready(function(){
$("#pagination-flickr li a").click(function(){
var tipo = "<? echo $tipo; ?>";
var estado = "<? echo $estado; ?>";
var ciudad = "<? echo $ciudad; ?>";
var colonia = "<? echo $colonia; ?>";
var pageNum = this.id;
$("#page_contents").html('<img src="imagen/ajax-loader.gif" />').load("listapagi.php?tipo="+tipo+"&estado="+estado+"&ciudad="+ciudad+"&colonia="+colonia+"&starting="+pageNum);
});
});
</script>
lista.php y listapagi.php son practicamente iguales, pero bueno.
Ahora bien, si alguien sabe de una mejor manera de paginar los resultados con jquery+php+mysql, que me recomiende y asi me dejo de romper la cabeza XDDD.Gracias de antemano