Foros del Web » Programando para Internet » PHP »

Problemas con Paginator

Estas en el tema de Problemas con Paginator en el foro de PHP en Foros del Web. Hola, estoy trabajando con la versión 1.6 de paginator y con php 5. La barra de navegación me aparce con multiples saltos de lineas... separados ...
  #1 (permalink)  
Antiguo 14/02/2006, 07:11
 
Fecha de Ingreso: agosto-2004
Ubicación: Stgo de Chile
Mensajes: 64
Antigüedad: 13 años, 4 meses
Puntos: 0
Problemas con Paginator

Hola, estoy trabajando con la versión 1.6 de paginator y con php 5.
La barra de navegación me aparce con multiples saltos de lineas...
separados los anteriores (arriba de la página), la página actual (al centro) y las siguientes como en 6 espacios en blanco más abajo, no importa la cantidad de registros en la base de datos, occurre el mismo problema.

¿Alguien conoce la solución?
  #2 (permalink)  
Antiguo 14/02/2006, 07:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si indicases el código que usas completo podríamos ver el problema. Podría ser que fuese de "Paginator" o de uso del mismo o algo de tu própio código que origine el problema y lo estás achacando a un script de terceros.

Un saludo,
  #3 (permalink)  
Antiguo 14/02/2006, 07:56
 
Fecha de Ingreso: agosto-2004
Ubicación: Stgo de Chile
Mensajes: 64
Antigüedad: 13 años, 4 meses
Puntos: 0
En realidad el Script no necesita más que conectarse a la base de datos e indicar la tabla, es posible que tengas razón Cluster y yo estoy errado en la forma de trabajar con el Script.

En la página donde tengo la tabla y la barra de navegación este es el codex:

Código PHP:
<?
//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("funciones/paginator.inc.php");
echo 
$_pagi_navegacion;
//Leemos y escribimos los registros de la página actual
while($fila mysql_fetch_array($_pagi_result)){
   
// echo $fila['folio_interno_factura']."<br />";
    
 
echo "<tr><td>".$fila["id"]."</td><td>".$fila["concepto"]."</td><td>".$fila["subtitulo"]."</td><td>".$fila["item"]."</td><td>".$fila["asignacion"]."</td><td>".$fila["nombre"]."</td><td>".$fila["detalle"]."</td><td>".$fila["valor_unitario"]."</td><td>"."<a href='detalle.php?numero=$id'>Ver</a>"."</td></tr>";
}
?>
La verdad es que es bastante claro y sencillo, por eso creo que el problem de saltos de linea lo genera el script.
  #4 (permalink)  
Antiguo 14/02/2006, 08:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Seguro que ese es todo el script? ...

Ahí se vé (fuera de contexto tal vez) una definición de tabla HTML .. con unas filas y celdas .. pero no se vé donde armas tu tabla (<table ..>) ni donde la cierras (</table>).

Debes poner todo en su contexto .. Por qué .. en principio el "Paginator" no hace lo que mencionas (o por lo menos lo he visto funcionar sin el problema que describes).

Un saludo,
  #5 (permalink)  
Antiguo 14/02/2006, 08:17
 
Fecha de Ingreso: agosto-2004
Ubicación: Stgo de Chile
Mensajes: 64
Antigüedad: 13 años, 4 meses
Puntos: 0
Más antecedentes...

Sorry Master...

No incluyo todo el html de la página de resultados (Distinta a la del script, debido a que el codex no es relevante, la unica parte de interaccion con el script es la que se menciona abajo..)

<table id="tabla" width="700" border="1" align="center" cellpadding="0" cellspacing="1" bordercolor="#000000" class="FormularioDetalle" style="border-collapse: collapse">
<tr>
<td width="16" class="fondo-Titulos" ><center>
id
</center></td>
<td width="121" height="15" class="fondo-Titulos" ><center>
Concepto
</center></td>
<td width="55" class="fondo-Titulos"><center>
Subtitulo
</center></td>
<td width="50" class="fondo-Titulos"><center>
Item
</center></td>
<td width="72" class="fondo-Titulos"><center>
Asignacion
</center></td>
<td width="120" class="fondo-Titulos"><center>
Nombre
</center></td>
<td width="108" class="fondo-Titulos"><center>
Detalle
</center></td>
<td width="101" class="fondo-Titulos"><center>
Valor-Unitario
</center></td>
<td width="27" class="fondo-Titulos"><center>
Ver
</center></td>
</tr>
<?
//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("funciones/paginator.inc.php");
echo
$_pagi_navegacion;
//Leemos y escribimos los registros de la página actual
while($fila = mysql_fetch_array($_pagi_result)){
// echo $fila['folio_interno_factura']."<br />";

echo "<tr><td>".$fila["id"]."</td><td>".$fila["concepto"]."</td><td>".$fila["subtitulo"]."</td><td>".$fila["item"]."</td><td>".$fila["asignacion"]."</td><td>".$fila["nombre"]."</td><td>".$fila["detalle"]."</td><td>".$fila["valor_unitario"]."</td><td>"."<a href='detalle.php?numero=$id'>Ver</a>"."</td></tr>";
}


?>
</table>
  #6 (permalink)  
Antiguo 14/02/2006, 08:17
 
Fecha de Ingreso: agosto-2004
Ubicación: Stgo de Chile
Mensajes: 64
Antigüedad: 13 años, 4 meses
Puntos: 0
El codex de paginator es el siguiente:

<?


$con = mysql_connect("localhost") or die (mysql_error());
mysql_select_db("facturas",$con) or die (mysql_error());

$_pagi_sql = "SELECT * FROM prueba";

if(empty($_pagi_sql)){
// Si no se definió $_pagi_sql... grave error!
// Este error se muestra sí o sí (ya que no es un error de mysql)
die("<b>Error Paginator : </b>No se ha definido la variable \$_pagi_sql");
}

if(empty($_pagi_cuantos)){
// Si no se ha especificado la cantidad de registros por página
// $_pagi_cuantos será por defecto 20
$_pagi_cuantos = 50;
}

if(!isset($_pagi_mostrar_errores)){
// Si no se ha elegido si se mostrará o no errores
// $_pagi_errores será por defecto true. (se muestran los errores)
$_pagi_mostrar_errores = true;
}
if(!isset($_pagi_conteo_alternativo)){
// Si no se ha elegido el tipo de conteo
// Se realiza el conteo dese mySQL con COUNT(*)
$_pagi_conteo_alternativo = false;
}

if(!isset($_pagi_separador)){
// Si no se ha elegido un separador
// Se toma el separador por defecto.
$_pagi_separador = " | ";
}

if(isset($_pagi_nav_estilo)){
// Si se ha definido un estilo para los enlaces, se genera el atributo "class" para el enlace
//$_pagi_nav_estilo_mod = "class=\"$_pagi_nav_estilo\"";
//$_pagi_nav_estilo_mod = "../css/estilo.css";
$_pagi_nav_estilo_mod = "../css/misEstilos.css";
}else{
// Si no, se utiliza una cadena vacía.
$_pagi_nav_estilo_mod = "";
}

if(!isset($_pagi_nav_anterior)){
// Si no se ha elegido una cadena para el enlace "siguiente"
// Se toma la cadena por defecto.
//$_pagi_nav_anterior = "&laquo; Anterior";
$_pagi_nav_anterior = "&laquo; Anterior";
}

if(!isset($_pagi_nav_siguiente)){
// Si no se ha elegido una cadena para el enlace "siguiente"
// Se toma la cadena por defecto.
$_pagi_nav_siguiente = "Siguiente &raquo;";
}

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

/*
* Establecimiento de la página actual.
*------------------------------------------------------------------------
*/
if (empty($_GET['_pagi_pg'])){
// Si no se ha hecho click a ninguna página específica
// O sea si es la primera vez que se ejecuta el script
// $_pagi_actual es la pagina actual-->será por defecto la primera.
$_pagi_actual = 1;
}else{
// Si se "pidió" una página específica:
// La página actual será la que se pidió.
$_pagi_actual = $_GET['_pagi_pg'];
}
//------------------------------------------------------------------------

/*
* Establecimiento del número de páginas y del total de registros.
*------------------------------------------------------------------------
*/
// Contamos el total de registros en la BD (para saber cuántas páginas serán)
// La forma de hacer ese conteo dependerá de la variable $_pagi_conteo_alternativo
if($_pagi_conteo_alternativo == false){
$_pagi_sqlConta = eregi_replace("select (.*) from", "SELECT COUNT(*) FROM", $_pagi_sql);
$_pagi_result2 = mysql_query($_pagi_sqlConta);
// Si ocurrió error y mostrar errores está activado
if($_pagi_result2 == false && $_pagi_mostrar_errores == true){
die (" Error en la consulta de conteo de registros: $_pagi_sqlConta. Mysql dijo: <b>".mysql_error()."</b>");
}
$_pagi_totalReg = mysql_result($_pagi_result2,0,0);//total de registros
}else{
$_pagi_result3 = mysql_query($_pagi_sql);
// Si ocurrió error y mostrar errores está activado
if($_pagi_result3 == false && $_pagi_mostrar_errores == true){
die (" Error en la consulta de conteo alternativo de registros: $_pagi_sql. Mysql dijo: <b>".mysql_error()."</b>");
}
$_pagi_totalReg = mysql_num_rows($_pagi_result3);
}
// Calculamos el número de páginas (saldrá un decimal)
// con ceil() redondeamos y $_pagi_totalPags será el número total (entero) de páginas que tendremos
$_pagi_totalPags = ceil($_pagi_totalReg / $_pagi_cuantos);
//------------------------------------------------------------------------

/*
* 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/f18/para-paginar-con-php-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;

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

/*
* Generación de los enlaces de paginación.
*------------------------------------------------------------------------
*/
// La variable $_pagi_navegacion contendrá los enlaces a las páginas.
$_pagi_navegacion_temporal = array();
if ($_pagi_actual != 1){
// Si no estamos en la página 1. Ponemos el enlace "anterior"
$_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_anterior</a>";
}

// La variable $_pagi_nav_num_enlaces sirve para definir cuántos enlaces con
// números de página se mostrarán como máximo.
// Ojo: siempre se mostrará un número impar de enlaces. Más info en la documentación.

if(!isset($_pagi_nav_num_enlaces)){
// Si no se definió la variable $_pagi_nav_num_enlaces
// Se asume que se mostrarán todos los números de página en los enlaces.
$_pagi_nav_desde = 1;//Desde la primera
$_pagi_nav_hasta = $_pagi_totalPags;//hasta la última
}else{
// Si se definió la variable $_pagi_nav_num_enlaces
// Calculamos el intervalo para restar y sumar a partir de la página actual
$_pagi_nav_intervalo = ceil($_pagi_nav_num_enlaces/2) - 1;

// Calculamos desde qué número de página se mostrará
$_pagi_nav_desde = $_pagi_actual - $_pagi_nav_intervalo;
// Calculamos hasta qué número de página se mostrará
$_pagi_nav_hasta = $_pagi_actual + $_pagi_nav_intervalo;

// Ajustamos los valores anteriores en caso sean resultados no válidos

// Si $_pagi_nav_desde es un número negativo
if($_pagi_nav_desde < 1){
// Le sumamos la cantidad sobrante al final para mantener el número de enlaces que se quiere mostrar.
$_pagi_nav_hasta -= ($_pagi_nav_desde - 1);
// Establecemos $_pagi_nav_desde como 1.
$_pagi_nav_desde = 1;
}
// Si $_pagi_nav_hasta es un número mayor que el total de páginas
if($_pagi_nav_hasta > $_pagi_totalPags){
// Le restamos la cantidad excedida al comienzo para mantener el número de enlaces que se quiere mostrar.
$_pagi_nav_desde -= ($_pagi_nav_hasta - $_pagi_totalPags);
// Establecemos $_pagi_nav_hasta como el total de páginas.
$_pagi_nav_hasta = $_pagi_totalPags;
// Hacemos el último ajuste verificando que al cambiar $_pagi_nav_desde no haya quedado con un valor no válido.
if($_pagi_nav_desde < 1){
$_pagi_nav_desde = 1;
}
}
}
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";

?>
  #7 (permalink)  
Antiguo 14/02/2006, 08:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si te fijas .. la variable "$_pagi_navegacion" que muestra los links de navegación de "Paginator" genera la estás llamando dentro de tu tabla HTML .. entre una celda y otra (o fila .. ahí me perdí) .. Lo más natural sería que saques esa variable de ahí y la uses antes de la definición de esa tabla ..

Mueve el include() de "Paginator" al principio de tu script (que mania de ponerlo entre el "HTML" los include!!!) .. y el $_pagi_navegación ponlo donde quieras mostrar tu barra de navegación .. ya sea dentro de otra tabla y celda correspondiente .. o dentro de una capa (<div>) o como tu veas.

Un saludo,

PD: el código original de "Paginator" . .con un link hacia su sitio oficial sobra. Sigue esta recomendación cuando hagas referencia a código de terceros.
  #8 (permalink)  
Antiguo 14/02/2006, 08:33
 
Fecha de Ingreso: agosto-2004
Ubicación: Stgo de Chile
Mensajes: 64
Antigüedad: 13 años, 4 meses
Puntos: 0
Bueno veremos como resulta, te agradezco el tiempo y las recomendaciones.
  #9 (permalink)  
Antiguo 14/02/2006, 13:19
 
Fecha de Ingreso: agosto-2004
Ubicación: Stgo de Chile
Mensajes: 64
Antigüedad: 13 años, 4 meses
Puntos: 0
Finalmente al eliminar la etiqueta <span></span>, logré solucionar el problem (aprox. linea 297)
$_pagi_navegacion_temporal[] = "<span ".$_pagi_nav_estilo_mod.">$_pagi_i</span>";
  #10 (permalink)  
Antiguo 14/02/2006, 13:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por htmlPedrote
Finalmente al eliminar la etiqueta <span></span>, logré solucionar el problem (aprox. linea 297)
$_pagi_navegacion_temporal[] = "<span ".$_pagi_nav_estilo_mod.">$_pagi_i</span>";
Estaría bueno que te contactes con jPinedo (autor de "Paginator") en su web oficial dispone de una zona de comentarios/foro.

De esta forma vean UDs. si hay alguna "interferencia" entre tu HTML generado o donde querías mostrar tu barra de navegación y esa etiqueta html que incluye "Paginator" .. así todos nos beneficiaremos.

Un saludo,
  #11 (permalink)  
Antiguo 14/02/2006, 14:19
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Hola:

Justo estaba respondiendo al email que me enviaste cuando ví que también habías posteado acá en el foro. Así que mejor intento responder aquí mismo.

En realidad no he podido reproducir tu error. Pero, de momento, te puedo decir que hay un error en la construcción de tu html, pues estás colocando la barra de navegación entre un </tr> y un <tr>. O sea:
Código HTML:
<table>
<tr>
	<td>...</td>
	<td>...</td>
</tr>
Barra de navegación (Debería estar también dentro de <tr> y <td>, pero no lo está)
<tr>
	<td>...</td>
	<td>...</td>
</tr>
</table> 
La etiqueta <span> no produce salto de línea, así que te voy a pedir que utilices el Paginator original, hagas los arreglos en tu HTML y me cuentes si sigues teniendo el error.
Código PHP:
<?
//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("funciones/paginator.inc.php");
echo 
"<tr><td colspan='9'>".$_pagi_navegacion."</td></tr>";
//Leemos y escribimos los registros de la página actual
while($fila mysql_fetch_array($_pagi_result)){
Mil gracias por compartir tus dudas,

Saludos
  #12 (permalink)  
Antiguo 15/02/2006, 06:58
 
Fecha de Ingreso: agosto-2004
Ubicación: Stgo de Chile
Mensajes: 64
Antigüedad: 13 años, 4 meses
Puntos: 0
Bien amigos, he realizado algunas pruebas con distintos navegadores (IE 6.0 V/S mozilla firefox) y le problema de salto de linea no se manifiesta igual. Da lo mismo la etiqueta <span></span>, y la barra de navegacion no es afectada mayormente, aunque de todas maneras se obtienen mejores resultados estéticos si se inserta dentro de una tabla como propone Cluster o dentro de una nueva fila como propone Jpinedo.

Resumiendo:
1-El problem no se manifiesta en todos los navegadores.
2-Posiblemente necesite alguna actulización mi navegador IE
3-Ofrezco mis disculpas Jpinedo, al haber pensado que la causa podría haber estado en el script.

Gracias a todos los que colaboraron.
  #13 (permalink)  
Antiguo 15/02/2006, 15:11
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Cita:
Ofrezco mis disculpas Jpinedo, al haber pensado que la causa podría haber estado en el script.
Al contrario, yo te agradezco por reportar el error. En este caso no fue de paginator, pero lo creiste y lo reportaste.

Gracias otra vez.
  #14 (permalink)  
Antiguo 17/02/2006, 09:14
Avatar de El Condor  
Fecha de Ingreso: febrero-2006
Mensajes: 18
Antigüedad: 11 años, 9 meses
Puntos: 0
saco este post de aca.. lo edite.

Saludos y espero respuestas en el otro tema.

El_Condor

Pd: lo edite asi queda todo en el otro.
PD: todavia no me deja colocar el link , asi si alguien lo puede colocar se lo agradesco.

Última edición por El Condor; 20/02/2006 a las 09:12
  #15 (permalink)  
Antiguo 17/02/2006, 09:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El_Condor ..

Deberías hacer tus preguntas en un tema nuevo .. Si bien aquí se habla de "Paginator" .. tu problema puede ser (y lo es) diferente al de este mensaje. Por un tema de ordenamiento en el foro, por favor inicia un nuevo tema con tu pregunta. (y especifica en el título del mensaje que usas "Paginator" de jpinedo).

Un saludo,
  #16 (permalink)  
Antiguo 17/02/2006, 16:38
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Yo también te rogaría que abras un tema nuevo.

Gracias
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 17:23.