Foros del Web » Programando para Internet » PHP »

Ayuda con paginacion filtrada

Estas en el tema de Ayuda con paginacion filtrada en el foro de PHP en Foros del Web. Tengo un problema que me esta rompiendo la cabeza. Estoy haciendo una paginacion de una tabla, todo funciona bien, pero mi problema se presenta cuando ...
  #1 (permalink)  
Antiguo 18/03/2009, 18:55
 
Fecha de Ingreso: marzo-2009
Mensajes: 46
Antigüedad: 15 años, 1 mes
Puntos: 1
Ayuda con paginacion filtrada

Tengo un problema que me esta rompiendo la cabeza. Estoy haciendo una paginacion de una tabla, todo funciona bien, pero mi problema se presenta cuando quiero filtrar los datos.
tengo un archivo consulta.php donde ingreso el criterio de busqueda y me lleva al archivo consultapag.php, pero solo me muestra la primera pagina de acuerdo al filtro que puse y la siguientes paginas no me toma el filtro.
les dejo el codigo

Código PHP:
<?php 
if (isset($_REQUEST['pos'])) 
$inicio=$_REQUEST['pos']; 
else 
$inicio=0
?> 
<html> 
<head> 
<title>Problema</title> 
</head> 
<body> 

<?php 
// aca me toma el valor del campo txthc de la pagina consulta.php 
$txt_criterio $_POST["txthc"]; 

$conexion=mysql_connect("localhost","user","pass") or 
die(
"Problemas en la conexion"); 
mysql_select_db("base",$conexion) or 
die(
"Problemas en la selección de la base de datos"); 
$registros=mysql_query("select * from pacientes where hc like '%$txt_criterio%' 
limit $inicio,2"

$conexion) or 
die(
"Problemas en el select:".mysql_error()); 

$impresos=0
while (
$reg=mysql_fetch_array($registros)) 


$impresos++; 
echo 
"HC:".$reg['hc']."<br>"
echo 
"Nombre:".$reg['nombre']."<br>"
echo 
"Apellido:".$reg['apellido']."<br>"
echo 
"Obra Social:".$reg['obrasocial']."<br>"
echo 
"<hr>"
echo 
"$txt_criterio"

mysql_close($conexion); 
if (
$inicio==0
echo 
"anteriores "
else 

$anterior=$inicio-2
echo 
"<a href="consultapag.php?pos=$anterior">Anteriores </a>"

if (
$impresos==2


$proximo=$inicio+2
echo 
"<a href="consultapag.php?pos=$proximo">Siguientes</a>"


else 
echo 
"siguientes"
?> 

</body> 
</html>
En sintesis me aplica el filtro a la primera pagina solamente.
Probe colocando de la siguiente manera y funciona.
$registros=mysql_query("select * from pacientes where hc like '%1%'
limit $inicio,2",
$conexion) or
die("Problemas en el select:".mysql_error());
Me muestra todos los registros cuya historia clinica tiene un 1.
como puedo hacer para tomar la variable $txt_criterio en las demas paginas?
que es lo que estoy haciendo mal?
espero me puedan ayudar.
desde ya muchas gracias.-
  #2 (permalink)  
Antiguo 18/03/2009, 20:05
Avatar de gakutaru  
Fecha de Ingreso: agosto-2005
Ubicación: frente a mi NtbK
Mensajes: 239
Antigüedad: 18 años, 7 meses
Puntos: 6
Respuesta: Ayuda con paginacion filtrada

disculpa mi ignorancia pero
que es esta linia?
"select * from pacientes where hc like '%$txt_criterio%' limit $inicio,2",
conecta con mysql o no?
nunca habia visto una consulta asi
  #3 (permalink)  
Antiguo 18/03/2009, 20:38
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con paginacion filtrada

Es que en los enlaces debes propagar el criterio. Mediante otro valor en la URL, algo así podría servir:
Código php:
Ver original
  1. echo '<a href="consultapag.php?pos=' . $anterior . '&txthc=' . $txt_criterio . '">Anteriores </a>';
Y en lugar de usar $_POST['txthc'] usa $_REQUEST['txthc'].

P.S.: Ojo, debes filtrar el txthc para evitar inyección SQL.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 18/03/2009, 20:42
 
Fecha de Ingreso: marzo-2009
Mensajes: 46
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Ayuda con paginacion filtrada

selecciono todos los registros de la tabla pacientes donde la hc tengo un 1 por ej. si txt_criterio=1, entonces me muestra todos los registros con esa condicion (1,101,12,41...) que empieze desde el primer registro "limit $inicio" y me lo muestre de a dos registros.
  #5 (permalink)  
Antiguo 18/03/2009, 20:45
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con paginacion filtrada

mmm... ¿te funcionó lo que puse en el mensaje anterior?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 18/03/2009, 20:54
 
Fecha de Ingreso: marzo-2009
Mensajes: 46
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Ayuda con paginacion filtrada

gracias DAVID
Probe con lo que me dijiste me muestra la primera pagina cuando paso a la siguiente me aparece
¡Objeto no encontrado!
El enlace requerido no ha sido localizado en este servidor. El enlace en la página referente parece tener algun error o ha expirado. Por favor comunique al autor de la página el error.

Por favor contacte con el webmaster en caso de que usted crea que existe un error en el servidor.

me podrias decir que estoy haciendo mal, como seria la solucion a mi problema. Serias tan amable en explicarme lo del P.S.
Desde ya muchas gracias por tu atencion.-
  #7 (permalink)  
Antiguo 18/03/2009, 21:00
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con paginacion filtrada

Qué raro .

¿Podrías ir a tu navegador y seleccionar la opción "Ver Código Fuente" y mostrarnos cuál es el código del enlace?

Lo del P.S., es lo siguiente:
Código php:
Ver original
  1. $txt_criterio = mysql_real_escape_string($_REQUEST['txthc']);
Así impedirás que modifiquen de forma mal intencionada tu consulta.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 18/03/2009, 21:07
 
Fecha de Ingreso: marzo-2009
Mensajes: 46
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Ayuda con paginacion filtrada

Código PHP:
<head>
<
title>&iexcl;Objeto no encontrado!</title>
<
link rev="made" href="mailto:admin@localhost" />
<
style type="text/css"><!--/*--><![CDATA[/*><!--*/ 
    
body color#000000; background-color: #FFFFFF; }
    
a:link color#0000CC; }
    
paddress {margin-left3em;}
    
span {font-sizesmaller;}
/*]]>*/--></style>
</
head>

<
body>
<
h1>&iexcl;Objeto no encontrado!</h1>
<
p>


    
El enlace requerido no ha sido localizado en
    este servidor
.

  

    
El enlace en la
    
<a href="..//localhost/clinica/resconpac2.php">p&aacute;gina
    referente
</aparece tener algun error o ha expiradoPor favor
    comunique al autor de
    
<a href="..//localhost/clinica/resconpac2.php">la
    p
&aacute;gina</ael error.

  

</
p>
<
p>
Por favor contacte con el 
<a href="mailto:admin@localhost">webmaster</a>
en caso de que usted crea que existe un error en el servidor.

</
p>

<
h2>Error 404</h2>
<
address>
  <
a href="/">localhost</a><br />
  
  <
span>03/19/09 00:08:26<br />
  
Apache/2.2.9 (Win32DAV/2 mod_ssl/2.2.9 OpenSSL/0.9.8i mod_autoindex_color PHP/5.2.6</span>
</
address>
</
body>
</
html
esto me aparece en el codigo fuente del navegador
  #9 (permalink)  
Antiguo 18/03/2009, 21:12
 
Fecha de Ingreso: marzo-2009
Mensajes: 46
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Ayuda con paginacion filtrada

Listo david solucione el problema
como tengo tantas paginas con varios codigos de paginacion llamaba a otra pagina.
Modifique los enlaces en siguiente y anterior y funciona con lo que vos me pasaste
te agradesco un monton por tu ayuda, interes y rapidez.
Otra vez gracias.-
un abrazo.-
  #10 (permalink)  
Antiguo 18/03/2009, 21:24
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda con paginacion filtrada

Me alegra que te haya servido, y, como sugerencia, siempre aplica mysql_real_escape_string() a cualquier dato que vas a usar en una consulta a una base de datos MySQL. Ya que si no lo haces existe el peligro de que inyecten código malicioso en tu consulta.

Saludos .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 21:46.