elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Paginador de resultados ayuda!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: Paginador de resultados ayuda!  (Leído 6,182 veces)
den_22

Desconectado Desconectado

Mensajes: 69



Ver Perfil
Paginador de resultados ayuda!
« en: 15 Mayo 2010, 17:47 »

Hola! que tal, verán estoy tratando de hacer un paginador de resultados de un buscador de usuarios, pero lamentablemente no me sale, tengo este codigo, que es el mostrar_resultados.php, pero al hacer la busqueda en vez de mostrar 5 resultados me muestra 6, y al pasar a siguiente, me muestra todos los usuarios de la bd.
Entonces la pregunta es cómo hago para poder paginarlo bien?, hay algo que estoy haciendo mal? cuando la pagina ya existe como hago para cargarla y que siga manteniendo la consulta?

Código
  1. <?php
  2. include('header.inc');
  3.  
  4.  
  5. if(!$_SESSION['usuario']=='usuario'){
  6. header("Location: index.php");// si no es igual a nick te direcciona al inicio u a otra pagina
  7. }
  8.  
  9. include_once ("connect.php");
  10.  
  11. $id=$_SESSION["id"];
  12. $usuario=$_SESSION["usuario"];
  13.  
  14.  
  15. $sexo = (!empty($_POST["sexo"])
  16.    ? " sexo='".trim($_POST["sexo"])."'"
  17.        : "");
  18.  
  19. $interestin = (!empty($_POST["interestin"])
  20.        ? (!empty($sexo)
  21.                ? " AND interestin='".trim($_POST["interestin"])."'"
  22.                : " interestin='".trim($_POST["interestin"])."'")
  23.        : "");
  24.  
  25. $pais = (!empty($_POST["pais"])
  26.        ? (!empty($sexo) || !empty($interestin)
  27.                ? " AND pais='".trim($_POST["pais"])."'"
  28.                : " pais='".trim($_POST["pais"])."'")
  29.        : "");
  30.  
  31. $estadocivil= (!empty($_POST["estadocivil"])
  32.        ? (!empty($sexo) || !empty($interestin) || !empty($pais)
  33.                ? " AND estadocivil='".trim($_POST["estadocivil"])."'"
  34.                : " estadocivil='".trim($_POST["estadocivil"])."'")
  35.        : "");
  36.  
  37.  
  38.  
  39. $where = (!empty($sexo) || !empty($interestin) || !empty($pais) || !empty($estadocivil)  
  40.        ? " WHERE "
  41.        : "");
  42.  
  43.  
  44.  
  45. $s = "SELECT * FROM members "
  46.        . $where
  47.        . $sexo
  48.        . $interestin
  49.        . $pais
  50.        . $estadocivil;
  51.  
  52. $query = mysql_query($s) or die(mysql_error());
  53.  
  54. if (!isset($pag)) $pag = 1; // Por defecto, pagina 1
  55. $result = mysql_query("SELECT COUNT(*) FROM members");
  56. list($total) = mysql_fetch_row($result);
  57. $tampag = 5;
  58. $reg1 = ($pag-1) * $tampag;
  59. $result = mysql_query("SELECT sexo, interestin, pais, estadocivil FROM members
  60.  LIMIT $reg1, $tampag");
  61.  
  62.  
  63. function paginar($actual, $total, $por_pagina, $enlace) {
  64.  $total_paginas = ceil($total/$por_pagina);
  65.  $anterior = $actual - 1;
  66.  $posterior = $actual + 1;
  67.  if ($actual>1)
  68.    $texto = "<a href=\"$enlace$anterior\">&laquo;</a> ";
  69.  else
  70.    $texto = "<b>&laquo;</b> ";
  71.  for ($i=1; $i<$actual; $i++)
  72.    $texto .= "<a href=\"$enlace$i\">$i</a> ";
  73.  $texto .= "<b>$actual</b> ";
  74.  for ($i=$actual+1; $i<=$total_paginas; $i++)
  75.    $texto .= "<a href=\"$enlace$i\">$i</a> ";
  76.  if ($actual<$total_paginas)
  77.    $texto .= "<a href=\"$enlace$posterior\">&raquo;</a>";
  78.  else
  79.    $texto .= "<b>&raquo;</b>";
  80.  return $texto;
  81. }
  82.  
  83.  
  84.  
  85. while($row = mysql_fetch_array($query)) {
  86.  
  87.  
  88.  
  89.  
  90. ?>

en la parte del html, muestro los detalles del usuario haciendo
Código
  1. <?php echo $row['estadocivil'];?>
por ejemplo

y en el final de la pagina hago lo siguiente

Código
  1. <?php echo paginar($pag, $total, $tampag, "mostrar_resultados.php?pag="); ?>

Gracias por leer.


En línea

MinusFour
Colaborador
***
Desconectado Desconectado

Mensajes: 4.933


I'm fourth.


Ver Perfil WWW
Re: Paginador de resultados ayuda!
« Respuesta #1 en: 15 Mayo 2010, 18:45 »

Pues primeramente creo que el código este:

Código
  1. if(!$_SESSION['usuario']=='usuario'){
  2. header("Location: index.php");// si no es igual a nick te direcciona al inicio u a otra pagina
  3. }

Necesita corregirse en la parte del if... porque 'usuario' es constante.

Y hasta donde tengo entendido, el LIMIT lo aplicas solamente a una query que nunca consultas, al menos en el código asi lo veo....


En línea

den_22

Desconectado Desconectado

Mensajes: 69



Ver Perfil
Re: Paginador de resultados ayuda!
« Respuesta #2 en: 15 Mayo 2010, 19:03 »

Hola, quité esa parte del if, pero sigue igual. que debo cambiar en el $result ?
En línea

MinusFour
Colaborador
***
Desconectado Desconectado

Mensajes: 4.933


I'm fourth.


Ver Perfil WWW
Re: Paginador de resultados ayuda!
« Respuesta #3 en: 15 Mayo 2010, 19:11 »

Si bueno, lo que pasa es esto... tu quieres limitar los resultados de tu primera consulta $s.

Porque tecnicamente estas haciendo el fetch_row con el query de $s. Y en ningun lugar estás limitando la consulta.

Código
  1. $s = "SELECT * FROM members "
  2.        . $where
  3.        . $sexo
  4.        . $interestin
  5.        . $pais
  6.        . $estadocivil;
  7.  

Aqui te das cuenta que no estás haciendo ningun limit a la consulta, puesto que nunca variable lo tiene.

Lo que necesitas hacer es poner este código arriba de la query.

Código
  1. if (!isset($pag)) $pag = 1; // Por defecto, pagina 1
  2. $tampag = 5;
  3. $reg1 = ($pag-1) * $tampag;

Y también agregar el limit a la consulta.


Código
  1. $s = "SELECT * FROM members "
  2.        . $where
  3.        . $sexo
  4.        . $interestin
  5.        . $pais
  6.        . $estadocivil
  7.        ." LIMIT $reg1, $tampag";
  8.  
« Última modificación: 15 Mayo 2010, 19:12 por MinusFour » En línea

den_22

Desconectado Desconectado

Mensajes: 69



Ver Perfil
Re: Paginador de resultados ayuda!
« Respuesta #4 en: 15 Mayo 2010, 19:18 »

Bueno, MinusFour, hice lo que me indicaste, lo puse asi:

Código
  1. <?php
  2. include('header.inc');
  3.  
  4. $id=$_SESSION["id"];
  5. $usuario=$_SESSION["usuario"];
  6.  
  7.  
  8.  
  9. include_once ("connect.php");
  10.  
  11.  
  12.  
  13.  
  14. $sexo = (!empty($_POST["sexo"])
  15.    ? " sexo='".trim($_POST["sexo"])."'"
  16.        : "");
  17.  
  18. $interestin = (!empty($_POST["interestin"])
  19.        ? (!empty($sexo)
  20.                ? " AND interestin='".trim($_POST["interestin"])."'"
  21.                : " interestin='".trim($_POST["interestin"])."'")
  22.        : "");
  23.  
  24. $pais = (!empty($_POST["pais"])
  25.        ? (!empty($sexo) || !empty($interestin)
  26.                ? " AND pais='".trim($_POST["pais"])."'"
  27.                : " pais='".trim($_POST["pais"])."'")
  28.        : "");
  29.  
  30. $estadocivil= (!empty($_POST["estadocivil"])
  31.        ? (!empty($sexo) || !empty($interestin) || !empty($pais)
  32.                ? " AND estadocivil='".trim($_POST["estadocivil"])."'"
  33.                : " estadocivil='".trim($_POST["estadocivil"])."'")
  34.        : "");
  35.  
  36.  
  37.  
  38. $where = (!empty($sexo) || !empty($interestin) || !empty($pais) || !empty($estadocivil)  
  39.        ? " WHERE "
  40.        : "");
  41.  
  42.  
  43.  
  44. $s = "SELECT * FROM members "
  45.        . $where
  46.        . $sexo
  47.        . $interestin
  48.        . $pais
  49.        . $estadocivil
  50.        ." LIMIT $reg1, $tampag";
  51.  
  52.  
  53. if (!isset($pag)) $pag = 1; // Por defecto, pagina 1
  54. $result = mysql_query("SELECT COUNT(*) FROM members");
  55. list($total) = mysql_fetch_row($result);
  56. $tampag = 5;
  57. $reg1 = ($pag-1) * $tampag;
  58.  
  59. function paginar($actual, $total, $por_pagina, $enlace) {
  60.  $total_paginas = ceil($total/$por_pagina);
  61.  $anterior = $actual - 1;
  62.  $posterior = $actual + 1;
  63.  if ($actual>1)
  64.    $texto = "<a href=\"$enlace$anterior\">&laquo;</a> ";
  65.  else
  66.    $texto = "<b>&laquo;</b> ";
  67.  for ($i=1; $i<$actual; $i++)
  68.    $texto .= "<a href=\"$enlace$i\">$i</a> ";
  69.  $texto .= "<b>$actual</b> ";
  70.  for ($i=$actual+1; $i<=$total_paginas; $i++)
  71.    $texto .= "<a href=\"$enlace$i\">$i</a> ";
  72.  if ($actual<$total_paginas)
  73.    $texto .= "<a href=\"$enlace$posterior\">&raquo;</a>";
  74.  else
  75.    $texto .= "<b>&raquo;</b>";
  76.  return $texto;
  77. }
  78.  
  79. $query = mysql_query($s) or die(mysql_error());
  80.  
  81.  
  82.  
  83. while($row = mysql_fetch_array($query)) {


pero al darle a buscar no sale nada, la pagina en blanco. deberia buscar. cual puede ser el error?
En línea

MinusFour
Colaborador
***
Desconectado Desconectado

Mensajes: 4.933


I'm fourth.


Ver Perfil WWW
Re: Paginador de resultados ayuda!
« Respuesta #5 en: 15 Mayo 2010, 19:19 »

Pues $reg1 ni $tampag están definidos. Fijate en mi post anterior.
En línea

den_22

Desconectado Desconectado

Mensajes: 69



Ver Perfil
Re: Paginador de resultados ayuda!
« Respuesta #6 en: 15 Mayo 2010, 19:22 »

Si, ahi me di cuenta, ahora poniendolo asi funciona, pero lo que pasa es que al pasar a la pagina siguiente sigue mostrandome todos los usuarios de la bd, en la unica que respeta es en la primera. pero no asi en las siguientes. existe algun problema en la url? en la forma de paginarlo?

yo al final del codigo pongo esto:

Código
  1. <?php echo paginar($pag, $total, $tampag, "mostrar_resultados.php?pag="); ?>

Código
  1. <?php
  2. include('header.inc');
  3.  
  4. $id=$_SESSION["id"];
  5. $usuario=$_SESSION["usuario"];
  6.  
  7.  
  8.  
  9. include_once ("connect.php");
  10.  
  11.  
  12.  
  13.  
  14. $sexo = (!empty($_POST["sexo"])
  15.    ? " sexo='".trim($_POST["sexo"])."'"
  16.        : "");
  17.  
  18. $interestin = (!empty($_POST["interestin"])
  19.        ? (!empty($sexo)
  20.                ? " AND interestin='".trim($_POST["interestin"])."'"
  21.                : " interestin='".trim($_POST["interestin"])."'")
  22.        : "");
  23.  
  24. $pais = (!empty($_POST["pais"])
  25.        ? (!empty($sexo) || !empty($interestin)
  26.                ? " AND pais='".trim($_POST["pais"])."'"
  27.                : " pais='".trim($_POST["pais"])."'")
  28.        : "");
  29.  
  30. $estadocivil= (!empty($_POST["estadocivil"])
  31.        ? (!empty($sexo) || !empty($interestin) || !empty($pais)
  32.                ? " AND estadocivil='".trim($_POST["estadocivil"])."'"
  33.                : " estadocivil='".trim($_POST["estadocivil"])."'")
  34.        : "");
  35.  
  36.  
  37.  
  38. $where = (!empty($sexo) || !empty($interestin) || !empty($pais) || !empty($estadocivil)  
  39.        ? " WHERE "
  40.        : "");
  41.  
  42.  
  43. if (!isset($pag)) $pag = 1; // Por defecto, pagina 1
  44. $result = mysql_query("SELECT COUNT(*) FROM members");
  45. list($total) = mysql_fetch_row($result);
  46. $tampag = 5;
  47. $reg1 = ($pag-1) * $tampag;
  48.  
  49. function paginar($actual, $total, $por_pagina, $enlace) {
  50.  $total_paginas = ceil($total/$por_pagina);
  51.  $anterior = $actual - 1;
  52.  $posterior = $actual + 1;
  53.  if ($actual>1)
  54.    $texto = "<a href=\"$enlace$anterior\">&laquo;</a> ";
  55.  else
  56.    $texto = "<b>&laquo;</b> ";
  57.  for ($i=1; $i<$actual; $i++)
  58.    $texto .= "<a href=\"$enlace$i\">$i</a> ";
  59.  $texto .= "<b>$actual</b> ";
  60.  for ($i=$actual+1; $i<=$total_paginas; $i++)
  61.    $texto .= "<a href=\"$enlace$i\">$i</a> ";
  62.  if ($actual<$total_paginas)
  63.    $texto .= "<a href=\"$enlace$posterior\">&raquo;</a>";
  64.  else
  65.    $texto .= "<b>&raquo;</b>";
  66.  return $texto;
  67. }
  68.  
  69.  
  70. $s = "SELECT * FROM members "
  71.        . $where
  72.        . $sexo
  73.        . $interestin
  74.        . $pais
  75.        . $estadocivil
  76.        ." LIMIT $reg1, $tampag";
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83. $query = mysql_query($s) or die(mysql_error());
  84.  
  85.  
  86.  
  87. while($row = mysql_fetch_array($query)) {
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95. ?>
« Última modificación: 15 Mayo 2010, 19:24 por den_22 » En línea

MinusFour
Colaborador
***
Desconectado Desconectado

Mensajes: 4.933


I'm fourth.


Ver Perfil WWW
Re: Paginador de resultados ayuda!
« Respuesta #7 en: 15 Mayo 2010, 19:45 »

Imprime la variable $pag antes del if(i!sset($pag))... y verifica si la estás pasando correctamente.
En línea

den_22

Desconectado Desconectado

Mensajes: 69



Ver Perfil
Re: Paginador de resultados ayuda!
« Respuesta #8 en: 15 Mayo 2010, 19:53 »

Lo hago con var_dump ? o con echo?
En línea

MinusFour
Colaborador
***
Desconectado Desconectado

Mensajes: 4.933


I'm fourth.


Ver Perfil WWW
Re: Paginador de resultados ayuda!
« Respuesta #9 en: 15 Mayo 2010, 19:55 »

Con cualquiera...
En línea

Páginas: [1] 2 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema if (!empty()) con paginador
PHP
soru13 5 2,635 Último mensaje 12 Mayo 2011, 04:15
por Nakp
ayuda con problema al usar IN causa desagrupacion de los resultados
Bases de Datos
trachtenberg 1 1,169 Último mensaje 26 Noviembre 2012, 03:11
por trachtenberg
paginador en jquery
Desarrollo Web
fdap91 3 1,004 Último mensaje 14 Agosto 2014, 03:45
por engel lex
No me muestra resultados Paginador PHP,MYSQL
PHP
Jarcx9 1 781 Último mensaje 2 Diciembre 2014, 14:26
por Jarcx9
Creación de un paginador
PHP
Arm144 0 725 Último mensaje 28 Mayo 2017, 18:15
por Arm144
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines