Foros del Web » Programando para Internet » PHP »

problema con paginacion (ya mire otros posts)

Estas en el tema de problema con paginacion (ya mire otros posts) en el foro de PHP en Foros del Web. Hola, ojala puedan echarme una mano, veran, estoy intentando hacer una paginacion pero me da problemas. Ya he buscado en el foro, hay un post ...
  #1 (permalink)  
Antiguo 01/07/2005, 15:48
 
Fecha de Ingreso: junio-2005
Mensajes: 16
Antigüedad: 12 años, 5 meses
Puntos: 0
problema con paginacion (ya mire otros posts)

Hola, ojala puedan echarme una mano, veran, estoy intentando hacer una paginacion pero me da problemas. Ya he buscado en el foro, hay un post de un usuario llamado jorka, crei que me iba a servir pero no he podido solucionar el problema por más vueltas que le he dado. Antes que nada avisarles que soy novato (bastante) y que mucho de los conceptos que dan en las explicaciones pues me cuesta cogerlos pero aun así voy a prendiendo poco a poco. He hecho una primera base de datos y de momento aunque el código está fatal, y la estructura posiblemente peor , el proyecto "funciona". Pero me ha surgido un problema que no se resolver con la paginación. Verán hago la paginación para consultar la base de datos y me funciona pero cuando hago esa misma paginación en una consulta con "restricciones" no me funciona. El problema es que hago una búsqueda, y cuando le doy a siguiente para que me muestre el siguiente registro que ha encontrado se queda la página en blanco, no muestra absolutamente nada. Les pongo el códig omitiendo las cajas de texto donde aparecen los resultados ya que es un código muy grande:

este es el formulario donde escribo la busqueda

Código:
<form action="resultado_busqueda.php" method="post">
<select name="busqueda_seleccion" id="busqueda_seleccion">
  <option value="apellidos">apellidos</option>
  <option value="dni">D.N.I.</option>
  <option value="telefono">Tel&eacute;fono</option>
  <option value="telefono_familiar">Tel&eacute;fono Familiar</option>
</select>
Introducir <input name="busqueda_informacion" type="text" id="busqueda_informacion" size="75">
<input name="busqueda_boton" type="submit" id="busqueda_boton" value="INFORMACION">
</font></strong></p>
<p>&nbsp;</p>
<p><strong><font color="#990000">BUSCAR <font color="#0000FF">VALORACI&Oacute;N ALUMNO</font>  
Introducir nombre <input name="busquedas_valoracion" type="text" id="busquedas_valoracion" size="75">
<input name="busqueda_boton" type="submit" id="busqueda_boton" value="VALORACION">
Y este otro el que hace la paginación

Código:
trim($busqueda_seleccion);
trim($busqueda_informacion);

$busqueda_seleccion = addslashes($busqueda_seleccion);
$busqueda_informacion = addslashes ($busqueda_informacion);


@ $db = mysql_pconnect ("localhost","root", "");
if (!$db)
{
	echo "Error, intente conectarse más tarde";
	exit;
	}
mysql_select_db("isol");
?>

<form action="modificar_alumno.php" method="post">

<?php // PAGINACIÓN_________________________________________________________________________________________________________


if ($busqueda_boton == "INFORMACION")
{

//$sql = "SELECT * FROM informacion";
$sql = "SELECT * FROM informacion WHERE ".$busqueda_seleccion." LIKE '%".$busqueda_informacion."%'";
$res=mysql_query($sql); 
$numeroRegistros=mysql_num_rows($res); 

if($numeroRegistros<=0) 
{
    echo "<div align='center'>"; 
    echo "<font face='verdana' size='-2'>No se encontraron resultados</font>"; 
    echo "</div>"; 
}else{ 

    if(!isset($orden)) 
    { 
       $orden=".$busqueda_seleccion."; 
    } 

    $tamPag=1; 

    if(!isset($_GET["pagina"])) 
    { 
       $pagina=1; 
       $inicio=1; 
       $final=$tamPag; 
    }else{ 
       $pagina = $_GET["pagina"]; 
    } 

} 
    $limitInf=($pagina-1)*$tamPag; 

    $numPags=ceil($numeroRegistros/$tamPag); 
    if(!isset($pagina)) 
    { 
       $pagina=1; 
       $inicio=1; 
       $final=$tamPag; 
    }else{ 
       $seccionActual=intval(($pagina-1)/$tamPag); 
       $inicio=($seccionActual*$tamPag)+1; 

       if($pagina<$numPags) 
       { 
          $final=$inicio+$tamPag-1; 
       }else{ 
          $final=$numPags; 
       } 

       if ($final>$numPags){ 
          $final=$numPags; 
       } 
    }
$sql = "SELECT * FROM informacion WHERE ".$busqueda_seleccion." LIKE '%".$busqueda_informacion."%' ORDER BY ".$busqueda_seleccion." ASC LIMIT ".$limitInf.",".$tamPag ;
$res=mysql_query($sql); 
echo "</font></div>"; 

while($registro=mysql_fetch_array($res)) 
{ 
?>

-----------------------aqui ya irian las cajas de texto donde se muestran los resultados



<?
}

if($pagina>1) 
    { 
       echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&orden=".$busqueda_seleccion."'>"; 
       echo "<img src='../../../Imagenes/Otras/btn_ant.gif' width='40' height='40' border='0'></a>"; 
    } 
?>

</div></td>
<td><div align="center">

<?
for($i=$inicio;$i<=$final;$i++) 
    { 
       if($i==$pagina) 
       { 	   
		echo "<font face='verdana' size='-1'><b>Registro ".$i."</b> </font>"; 
       }else{ 
          echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&orden=".$busqueda_seleccion."'>"; 
          echo "<font face='verdana' size='-1'> Registro ".$i."</font></a> "; 
       } 
    }
?>

</div></td>
<td><div align="right">

<?
if($pagina<$numPags) 
   { 
       echo " <a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&orden=".$busqueda_seleccion."'>"; 
       echo "<img src='../../../Imagenes/Otras/btn_sig.gif' width='40' height='40' border='0'></a>"; 
   } 
?>
       
	         <?php
echo "<div align='center'>"; 
echo "<font face='verdana' size='-2'>Encontrados ".$numeroRegistros." resultados<br>"; 
echo "Ordenados por <b>".$busqueda_sel."</b>"; 

?>

Última edición por caramon; 02/07/2005 a las 04:51
  #2 (permalink)  
Antiguo 02/07/2005, 04:56
 
Fecha de Ingreso: junio-2005
Mensajes: 16
Antigüedad: 12 años, 5 meses
Puntos: 0
pagina en blanco, ayuda por favor

Bueno, ya he conseguido un poquito más (he actualizado el código de arriba para no tener que ponerlo de nuevo), ahora ya se visulizan los resultados encontrados, el orden que llevan, y el filtro utilizado.

Pero el problema mas gordo continua igual, me muestra solo el primer registro encontrado y cuando le doy a mostrar la pagina 2 se queda todo en blanco.

Estoy desesperado y no se que hacer, porque en principio debería funcionar, ya que tengo otro formulario con la paginacion que si se muestra, y lo unico que le diferencia es que el que no me funciona recibe dos valores pero nada más.

Ayuda por favor,
  #3 (permalink)  
Antiguo 02/07/2005, 08:50
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 9 meses
Puntos: 17
A ver... leyendo el código me parece que tenés un error en el query... en el ORDER BY pusiste las condiciones del WHERE...

$sql = "SELECT * FROM informacion WHERE ".$busqueda_seleccion." LIKE '%".$busqueda_informacion."%' ORDER BY ".$orden." ASC LIMIT ".$limitInf.",".$tamPag ;

lo que te recomiendo para ver esos errores de MySQL es que te los marque cuando hacés la query
$res=mysql_query($sql) or die(mysql_error());

como "algo para mejorar" del código te recomiendo que no hagas consultas innecesarias a la DB, porque hacés dos consultas casi iguales, trataría de evitar una de ellas
  #4 (permalink)  
Antiguo 04/07/2005, 12:00
 
Fecha de Ingreso: junio-2005
Mensajes: 16
Antigüedad: 12 años, 5 meses
Puntos: 0
Gracias Seppo por tu ayuda, Ya conseguí resolver el problema, resulta que al cambiar de página no se estaban mandando los valores de las variables. por si a alguien le nteresa el problema se resuelve así:

echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&orden=".$orden."&sel=".$sel."&inf =".$inf."'>";
echo "<font face='verdana' size='-1'> Registro ".$i."</font></a> ";

PD: cambié el nombre de la variable que recogía los valores, antes era busqueda_seleccion y busqueda_informacion, y ahora puse sel e inf.
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 15:59.