Foros del Web » Programando para Internet » Jquery »

Ayuda con Jquery+PHP+Mysql

Estas en el tema de Ayuda con Jquery+PHP+Mysql en el foro de Jquery en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 30/06/2010, 10:19
 
Fecha de Ingreso: enero-2010
Mensajes: 34
Antigüedad: 14 años, 10 meses
Puntos: 2
Ayuda con Jquery+PHP+Mysql

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
  #2 (permalink)  
Antiguo 01/07/2010, 17:55
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
Respuesta: Ayuda con Jquery+PHP+Mysql

Ese es un problema de PHP. O en todo caso, si lo que buscas es ajax, entonces la pregunta va mal encaminada.

Usaste ajax alguna vez? Recarga solo una seccion de la pagina, si así lo querés.
  #3 (permalink)  
Antiguo 04/07/2010, 16:43
 
Fecha de Ingreso: enero-2010
Mensajes: 34
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Ayuda con Jquery+PHP+Mysql

gracias mayid, perdon por tardar en responder, pero weno, jeje la paginacion ya esta hecha, por eso vine a esta seccion, porque la paginacion, al presionar un enlace, tambien desaparece...he visto paginas donde la paginacion se queda estatica (y solo se mueve si ha llegado su limite, es decir, si hay 20 paginas y la paginacion muestra solo 5 de 20, cuando llega a 5 recarga la paginacion para mostrar los siguientes 5) y el contenido es lo que cambia...jejeje no se si sea dificil, ya lo intente de varias maneras y aun no me sale nada :S
  #4 (permalink)  
Antiguo 05/07/2010, 17:59
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
Respuesta: Ayuda con Jquery+PHP+Mysql

Yo estoy usando paginator. Es comodo, y facil de implementar. Aunque puede que te cueste entender como funciona al principio.

Lo que te decía de .live() tiene que ver con que vos traes elementos nuevos, y esos elementos no estaban a la hora de declarar eventos click. Entonces live lo que hace es aplicar el evento a todo elemento nuevo también.
  #5 (permalink)  
Antiguo 08/07/2010, 23:20
 
Fecha de Ingreso: enero-2010
Mensajes: 34
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Ayuda con Jquery+PHP+Mysql

es el de esta web?...http://www.myjquery.co.uk/docs/x/plugins/pagination/jquery_pagination.php y si es, e podrias dar un ejemplo sencillo de uso???, es que ya lo habia visto pero en su "documentacion" esta un pokito muy complicado de entender :S grax ^^
  #6 (permalink)  
Antiguo 09/07/2010, 17:25
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
Respuesta: Ayuda con Jquery+PHP+Mysql

Es el de jPinedo . Lo publico originalmente en este foro.

El ejemplo te va a resultar mas claro en cuanto lo tengas en uso. Entenderlo en abstracto es medio complicado. Hace que lo que dicen las instrucciones y probalo:
http://www.desarrolloweb.com/articulos/1733.php

Puede que te de algun error. COnsultalo en el foro de PHP, o usa el buscador del foro porque esos temas ya estan tratados.

En fin, es tema de php. ( no creo que sea bueno usarla con ajax ).

Si lo que queres es hacer el paginador vos, las consultas de mysql tienen que tener un LIMIT variable. Que se corresponda con los numeros del paginador, de alguna manera.

  #7 (permalink)  
Antiguo 10/07/2010, 01:34
 
Fecha de Ingreso: enero-2010
Mensajes: 34
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: Ayuda con Jquery+PHP+Mysql

ahhhh¡¡¡ si ese ya lo habia usado, pero como dices es php, es decir, hay ke recargar ke es lo ke estoy buscando kitar, jejej bueno de todas maneras gracias la intencion es lo que cuenta ^^
  #8 (permalink)  
Antiguo 10/07/2010, 20:00
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
Respuesta: Ayuda con Jquery+PHP+Mysql

Cita:
Lo que me gustaria hacer es que los botones de navegacion se queden estaticos.
Lo que podes hacer es modificar él archivo php para que no imprima los numeros. Hay varias maneras de evitar la numeración. Por qué hacerlo desde jquery?

También podes hacer que la segunda consulta envia una variable a PHP, para que a partir de entonces devuelva todo menos los numeros.

Tambien desde jquery podes tomar los valores de los numeros y "estamparlos" en un div aparte, que sea estatico.

En fin, mil cosas, dependiendo de tu proyecto.

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:24.