Foros del Web » Programando para Internet » PHP »

Función PHP para paginar consultas a MySQL.

Estas en el tema de Función PHP para paginar consultas a MySQL. en el foro de PHP en Foros del Web. Hola, comparto con vosotros este articulo ( http://www.hackingkorpse.com/index.php?id=34 ) con una útil función para paginar consultas a MySQL. Por favor decidme que os parece y ...
  #1 (permalink)  
Antiguo 08/01/2006, 13:18
Avatar de KarQ  
Fecha de Ingreso: septiembre-2005
Mensajes: 88
Antigüedad: 12 años, 3 meses
Puntos: 1
Función PHP para paginar consultas a MySQL.

Hola, comparto con vosotros este articulo (http://www.hackingkorpse.com/index.php?id=34) con una útil función para paginar consultas a MySQL. Por favor decidme que os parece y cómo la podría mejorar.

Un saludo.
__________________
KarQ - xC
mi weblog en: http://www.monochromatic.es

Última edición por Cluster; 09/01/2006 a las 05:38
  #2 (permalink)  
Antiguo 09/01/2006, 05:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Según parece dejas al usuario que se propague las variables que pueda recibir dicho script como buenamente pueda.

Para próximas versiones podrías ver forma de automatizar ese punto.

Como referencia podrías ver la técnica que usa al respecto este script:

Paginator (de Jpinedo):
http://jpinedo.webcindario.com/


Otro detalle:
Cita:
$string* AÑADE MÁS CARACTERES A LA CADENA HREF DEL ENLACE (ÚTIL PARA AÑADIR PARÁMETROS AL GET)
Lo correcto o más técnico sería decir .. "añade variables para propagar por GET en el URL". No estaría de más un ejemplo tipo:

&variable=valor&variable2=valor .... (para que se sepa que es necesario el & inicial si se añaden .. pues tus funciones no lo añaden).

Un saludo,

PD: modifiqué tu link hacia el artículo concreto.
  #3 (permalink)  
Antiguo 09/01/2006, 06:28
Avatar de KarQ  
Fecha de Ingreso: septiembre-2005
Mensajes: 88
Antigüedad: 12 años, 3 meses
Puntos: 1
Hola Cluster, gracias por tu comentario.

No entiendo muy bien a que te refieres con :

Cita:
Según parece dejas al usuario que se propague las variables que pueda recibir dicho script como buenamente pueda.
Si eres más concreto analizaré el problema y lo consideraré para modificaciones. Un saludo y gracias de nuevo.
__________________
KarQ - xC
mi weblog en: http://www.monochromatic.es
  #4 (permalink)  
Antiguo 09/01/2006, 06:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El comentario va que en tu código actual .. tu variable $string es el usuario el que debe colocar ahí las variables extras que pueda usar en sus scritps que necesite propagar (se entiende el concepto "propagar"?: .. pasar a otro script o si mismo .. hacer llegar .. enviar ...)

El caso es que la mayoría de veces uno cuando usa un script de paginación .. ya gestiona N variables (por GET y por POST incluso .. no siempre todo por GET), .. los scripts de paginado incluyen al URL para el link de paginado alguna variable más de control ($pagina? .. la que corresponda). Por ejemplo variabels que definan "orden" de presentación de esos datos .. u "ordenado por" tal parámetro .. y cosas similares.

De esta forma .. según tu solución .. yo como "usuario" de tu script tendría que tener encuenta las variables que me puedan llegar al script por el URL (en GET o POST) y añadirlas al $string manualmente.

Esto mismo lo hacen automáticamente la mayoría de scripts de paginado (o por lo menos es una "funcionalidad" que alivia mucho el trabajo con este tipo de scripts).

Fijate .. el ejemplo del "Paginator" (script de Jpinedo que dejé el link en el anterior mensaje), usa esta técnica/código para tal fin:

Cita:
Código PHP:
/*
 * Propagación de variables por el URL.
 *------------------------------------------------------------------------
 */
 // La idea es pasar también en los enlaces las variables hayan llegado por url.
 
$_pagi_enlace $_SERVER['PHP_SELF'];
 
$_pagi_query_string "?";
 
 if(!isset(
$_pagi_propagar)){
     
//Si no se definió qué variables propagar, se propagará todo el $_GET (por compatibilidad con versiones anteriores)
    //Perdón... no todo el $_GET. Todo menos la variable _pagi_pg
    
if (isset($_GET['_pagi_pg'])) unset($_GET['_pagi_pg']); // Eliminamos esa variable del $_GET
    
$_pagi_propagar array_keys($_GET);
 }elseif(!
is_array($_pagi_propagar)){
    
// si $_pagi_propagar no es un array... grave error!
    
die("<b>Error Paginator : </b>La variable \$_pagi_propagar debe ser un array");
 }
 
// Este foreach está tomado de la Clase Paginado de webstudio
 // (http://www.forosdelweb.com/showthread.php?t=65528)
 
foreach($_pagi_propagar as $var){
     if(isset(
$GLOBALS[$var])){
        
// Si la variable es global al script
        
$_pagi_query_string.= $var."=".$GLOBALS[$var]."&";
    }elseif(isset(
$_REQUEST[$var])){
        
// Si no es global (o register globals está en OFF)
        
$_pagi_query_string.= $var."=".$_REQUEST[$var]."&";
    }
 }

 
// Añadimos el query string a la url.
 
$_pagi_enlace .= $_pagi_query_string;
 
//--------------------------------------------------------------------- 
Un saludo,
  #5 (permalink)  
Antiguo 09/01/2006, 10:09
Avatar de KarQ  
Fecha de Ingreso: septiembre-2005
Mensajes: 88
Antigüedad: 12 años, 3 meses
Puntos: 1
Gracias

Interesante, gracias por tu interés Cluster, volveré a publicar otro post si hago nuevas modificaciones. El caso es que mi única intención era que el script pudiera funcionar de la manera más abstracta posible, pero de todas formas haré que la función devuelva en el array más variables útiles así como la url al desnudo o una tira de números de página enlazados para poder poner entre el Siguiente y el Anterior al estilo Google.

De nuevo muchas gracias, si alguien más quiere aportar algo estaré encantado. Un saludo.
__________________
KarQ - xC
mi weblog en: http://www.monochromatic.es
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 20:36.