Foros del Web » Programando para Internet » PHP »

paginator y mod_rewrite

Estas en el tema de paginator y mod_rewrite en el foro de PHP en Foros del Web. Hola a todos Pues veran, tengo un pekeño problema con el paginator de nuestro amigo jpinedo, resulta ke lo ke kiero paginar son los comentarios ...
  #1 (permalink)  
Antiguo 07/07/2006, 16:22
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
paginator y mod_rewrite

Hola a todos

Pues veran, tengo un pekeño problema con el paginator de nuestro amigo jpinedo, resulta ke lo ke kiero paginar son los comentarios en las secciones de descargas de mi web y pues la url para entrar en una de ellas es de esta manera miweb.com/descarga.php?categoria=$categoria&id_down=$id_down y al reescribirla con mod_rewrite me keda de la seguiente manera miweb.com/descargas/categoria/id/ hasta ahi todo me funciona perfecto; ahora bien, yo kisiera ke se muestren los comentarios paginados de 10 en 10 desde el mas actual al mas antiguo, y pues al probar me muestra la barra de navegacion pero cuando le doy en un enlace la url es asi miweb.com/descarga.php?_pagi_pg=2 y por ende me da un error, lo ke hice leyendo el manual del paginator era añadir los campos necesarios en la variable $_pagi_propagar y kedo asi miweb.com/descarga.php?categoria=$categoria&id_down=$id_down &_pagi_pg=$_pag_num y funciona bien, pero lo ke kiero es reescribir esa direccion con el mod_rewrite del apache para ke me kede asi miweb.com/descargas/categoria/id/pagnum/ la linea de reescritura ya la tengo hecha en el arhico .HTACCESS

Código PHP:
RewriteRule ^descargas/([0-9a-z_-]+)/([0-9]+)/pag([0-9]+)/?$ descarga.php?categoria=$1&id_down=$2&_pagi_pg=$[NC,L
Pero mi problema esta en donde puedo modificar los enlaces dentro de paginator.

Espero haberme dejado entender y ke alguien ke sepa como hacerlo me eche una mano, se lo agradecere mucho la consulta SQL ke uso actualmente para mostrar los registros es la siguiente:

Código PHP:
SELECT nk.avatarct.* FROM comdescargas ctusers nk WHERE nk.id ct.idautor AND ct.id_down=$id_down ORDER BY ct.fecha DESC 
Saludos
  #2 (permalink)  
Antiguo 07/07/2006, 19:12
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
se entiende lo q keres hacer y parece esta bien

"Pero mi problema esta en donde puedo modificar los enlaces dentro de paginator."

y bueno tendras q ver donde pones el link, el select esta bien :)
  #3 (permalink)  
Antiguo 07/07/2006, 20:18
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
Bueno mirando el archivo paginator.inc.php casi al final estan los enlaces ke hacen la paginacion pero estan metidos en variables, y pues me hago muchos lios ke no se como modificar, aparte ke si lo hago, se me estropearan otros dos scripts de paginacion simple donde tb uso el paginator, a ver kien me echa una mano

Saludos
  #4 (permalink)  
Antiguo 07/07/2006, 23:23
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
bueno no se q decirte, y sino me muestras el codigo q te genera el problema, no puedo ayudarte. lo q me has mostrado esta perfecto.
  #5 (permalink)  
Antiguo 08/07/2006, 07:58
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
Haber el codigo del paginator.inc.php es enorme voy a poner solo la parte ke genera la paginacion ok?:

Código PHP:
for ($_pagi_i $_pagi_nav_desde$_pagi_i<=$_pagi_nav_hasta$_pagi_i++){//Desde página 1 hasta última página ($_pagi_totalPags)
    
if ($_pagi_i == $_pagi_actual) {
        
// Si el número de página es la actual ($_pagi_actual). Se escribe el número, pero sin enlace y en negrita.
        
$_pagi_navegacion_temporal[] = "<span ".$_pagi_nav_estilo_mod.">$_pagi_i</span>";
    }else{
        
// Si es cualquier otro. Se escibe el enlace a dicho número de página.
        
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_i."'>".$_pagi_i."</a>";
    }
 }

 if (
$_pagi_actual $_pagi_totalPags){
    
// Si no estamos en la última página. Ponemos el enlace "Siguiente"
    
$_pagi_url $_pagi_actual 1//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_siguiente</a>";
 }
 
$_pagi_navegacion implode($_pagi_separador$_pagi_navegacion_temporal);

//------------------------------------------------------------------------


/*
 * Obtención de los registros que se mostrarán en la página actual.
 *------------------------------------------------------------------------
 */
 // Calculamos desde qué registro se mostrará en esta página
 // Recordemos que el conteo empieza desde CERO.
 
$_pagi_inicial = ($_pagi_actual-1) * $_pagi_cuantos;
 
 
// Consulta SQL. Devuelve $cantidad registros empezando desde $_pagi_inicial
 
$_pagi_sqlLim $_pagi_sql." LIMIT $_pagi_inicial,$_pagi_cuantos";
 
$_pagi_result mysql_query($_pagi_sqlLim);
 
// Si ocurrió error y mostrar errores está activado
 
if($_pagi_result == false && $_pagi_mostrar_errores == true){
     die (
"Error en la consulta limitada: $_pagi_sqlLim. Mysql dijo: <b>".mysql_error()."</b>");
 }

//------------------------------------------------------------------------


/*
 * Generación de la información sobre los registros mostrados.
 *------------------------------------------------------------------------
 */
 // Número del primer registro de la página actual
 
$_pagi_desde $_pagi_inicial 1;
 
 
// Número del último registro de la página actual
 
$_pagi_hasta $_pagi_inicial $_pagi_cuantos;
 if(
$_pagi_hasta $_pagi_totalReg){
     
// Si estamos en la última página
    // El ultimo registro de la página actual será igual al número de registros.
     
$_pagi_hasta $_pagi_totalReg;
 }
 
 
$_pagi_info "desde el $_pagi_desde hasta el $_pagi_hasta de un total de $_pagi_totalReg"
Espero ke con eso sea suficiente, gracias por tu ayuda
  #6 (permalink)  
Antiguo 08/07/2006, 13:24
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
Ejemplo de como cmabiarlo:

probemos

donde dice
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_i."'>".$_ pagi_i."</a>";

poner
Código PHP:
$url $_pagi_enlace."_pagi_pg=".$_pagi_i;
$url str_replace('descarga.php?','descarga/',$url);
$url str_replace('categoria=','',$url);
$url str_replace('&id_down=','/',$url);
$url str_replace("&_pagi_pg=$_pag_num",'/'.$_pag_num,$url);
$url .='/'

 
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$url"'>".$_pagi_i."</a>"
  #7 (permalink)  
Antiguo 08/07/2006, 16:35
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
haciendo eso me salioi este error

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/chs/canalchiclayo.net/home/html/paginator.inc.php on line 202

y si modifico cosas en el paginator se me estropea la paginacion de otros scripts con el ke uso paginator :S
  #8 (permalink)  
Antiguo 10/07/2006, 11:51
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
faltaba un '.' en est linea

$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$url"'>".$_pagi_i."</a>";

1ro lo q yo te dije seria para este, asi q guarda esa clase con otro nombre y ya.
2do me parece dentro de un mismo sitio estaria copado apliques los mismos metodos para todo el sitio no solo para un modulo.

Saludos!
  #9 (permalink)  
Antiguo 10/07/2006, 12:52
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
Hice esos cambios ke me dijiste con la correccion pero el enlace en el ke probe no se muestra :S a ver si jpinedo se pasa por aki y me echa una mano, gracias por tu ayuda

Saludos
  #10 (permalink)  
Antiguo 10/07/2006, 13:52
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
q raro hicist la sustitucion correspondiente?
entiende a mi tambien se me complica un poco ayudarte sin tener yo los codigos, pero aun asi me los pasaras yo tal vez no tenga el tiempo.

suerte
  #11 (permalink)  
Antiguo 11/07/2006, 16:42
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Hola ZydRick:

Paginator, tal como está, no va a funcionar con tus reglas de reescritura. Si lo vas a cambiar, cambiará para todos los archivos que lo van a usar.

Sería bueno que te fijes en cómo se están generando los enlaces y cómo crees que deben quedar.

Te pongo un ejemplo de lo que deberías cambiar para que funcione:
Código PHP:
<?php
//Esto:
 
$_pagi_query_string "?";
//Debe quedar así:
 
$_pagi_query_string "/";

//.........................................

// La parte del foreach del propagar debe quedar así (les quitamos el $var.= y ponemos un /):
 
foreach($_pagi_propagar as $var){
     if(isset(
$GLOBALS[$var])){
        
// Si la variable es global al script
        
$_pagi_query_string.= $GLOBALS[$var]."/";
    }elseif(isset(
$_REQUEST[$var])){
        
// Si no es global (o register globals está en OFF)
        
$_pagi_query_string.= $_REQUEST[$var]."/";
    }
 }
 
//............................................

//Si te fijas, los enlaces son de esta manera:
"<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>...."
//Debes cambiar el _pagi_pg= por un / y quedarán así (deberás cambiarlos en todas las líneas en que aparecen):
"<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."/".$_pagi_url."'>..."
?>
Saludos
  #12 (permalink)  
Antiguo 11/07/2006, 22:00
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
Gracias jpinedo lo probare

Saludos
  #13 (permalink)  
Antiguo 12/07/2006, 03:09
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Pruébalo y me cuentas... es cuestión de que mires los enlaces que se generan y vayas ajustando el código. A simple vista creo que en el código anterior habrá un error porque se repetirá la barra "/" antes del número de página. Simplemente no le pongas el "/" en los enlaces de paginación.

O sea, los enlaces deberán quedar así:
Código PHP:
<?
"<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace.$_pagi_url."'>..."
Así por el estilo pueden haber otros errores. Si no los encuentras y no se genera lo que esperas, me avisas.

Saludos
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 10:38.