Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: den_22 en 15 Mayo 2010, 17:47 pm



Título: Paginador de resultados ayuda!
Publicado por: den_22 en 15 Mayo 2010, 17:47 pm
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.


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 15 Mayo 2010, 18:45 pm
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....


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 15 Mayo 2010, 19:03 pm
Hola, quité esa parte del if, pero sigue igual. que debo cambiar en el $result ?


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 15 Mayo 2010, 19:11 pm
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.  


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 15 Mayo 2010, 19:18 pm
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?


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 15 Mayo 2010, 19:19 pm
Pues $reg1 ni $tampag están definidos. Fijate en mi post anterior.


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 15 Mayo 2010, 19:22 pm
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. ?>


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 15 Mayo 2010, 19:45 pm
Imprime la variable $pag antes del if(i!sset($pag))... y verifica si la estás pasando correctamente.


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 15 Mayo 2010, 19:53 pm
Lo hago con var_dump ? o con echo?


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 15 Mayo 2010, 19:55 pm
Con cualquiera...


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 15 Mayo 2010, 19:59 pm
No pasa nada al hacerlo, es lo mismo, lo que yo me pregunto, es como se hace para "conservar" los datos que se filtraron en la búsqueda y para que aparezcan en las paginas siguientes los usuarios con las mismas caracteristicas.
En vez de poner
Código
  1. <?php echo paginar($pag, $total, $tampag, "show_results.php?pag="); ?>

deberia poner algo como
Código
  1. <?php echo paginar($pag, $total, $tampag, "show_results.php?pag=".$url.""); ?>
   ?


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 15 Mayo 2010, 20:05 pm
A que te refieres? Cuando imprimias la variable $pag no cambiaba el valor?


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 15 Mayo 2010, 20:11 pm
Puse algo asi:

Código
  1. <?php
  2. include('header.inc');
  3.  
  4.  
  5. $id=$_SESSION["id"];
  6. $usuario=$_SESSION["usuario"];
  7.  
  8.  
  9.  
  10. include_once ("connect.php");
  11.  
  12.  
  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. echo $pag;
  44.  
  45. if (!isset($pag)) $pag = 1; // Por defecto, pagina 1
  46. $result = mysql_query("SELECT COUNT(*) FROM members");
  47. list($total) = mysql_fetch_row($result);
  48. $tampag = 5;
  49. $reg1 = ($pag-1) * $tampag;
  50.  
  51. function paginar($actual, $total, $por_pagina, $enlace) {
  52.  $total_paginas = ceil($total/$por_pagina);
  53.  $anterior = $actual - 1;
  54.  $posterior = $actual + 1;
  55.  if ($actual>1)
  56.    $texto = "<a href=\"$enlace$anterior\">&laquo;</a> ";
  57.  else
  58.    $texto = "<b>&laquo;</b> ";
  59.  for ($i=1; $i<$actual; $i++)
  60.    $texto .= "<a href=\"$enlace$i\">$i</a> ";
  61.  $texto .= "<b>$actual</b> ";
  62.  for ($i=$actual+1; $i<=$total_paginas; $i++)
  63.    $texto .= "<a href=\"$enlace$i\">$i</a> ";
  64.  if ($actual<$total_paginas)
  65.    $texto .= "<a href=\"$enlace$posterior\">&raquo;</a>";
  66.  else
  67.    $texto .= "<b>&raquo;</b>";
  68.  return $texto;
  69. }
  70.  
  71.  
  72. $s = "SELECT * FROM members "
  73.        . $where
  74.        . $sexo
  75.        . $interestin
  76.        . $pais
  77.        . $estadocivil
  78.        ." LIMIT $reg1, $tampag";
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85. $query = mysql_query($s) or die(mysql_error());
  86.  
  87.  
  88.  
  89. while($row = mysql_fetch_array($query)) {
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97. ?>

y no pasa nada. aparece <1><2> pero al presionar en la pagina 2 me muestra los resultados no que yo filtré sino todos los usuarios de la bd


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 15 Mayo 2010, 20:18 pm
Ese <1> <2> lo ves en la misma pagina? Estás seguro que es el echo que pusiste?

Código
  1. echo "<h1>Estas en la pagina: $pag</h1>";
  2.  

Después haces click en los links y fijate si $pag cambia o no. Si no cambia es problema de la variable, si cambia es problema de la query....


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 15 Mayo 2010, 20:21 pm
Haciendo lo que dijiste dice Estas en la pagina : 1, los links cambian pag=1 pag=2; pero el tema es que si yo presiono la 2 no mantiene el rango de usuarios que estoy buscando, me muestra todos.


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 15 Mayo 2010, 20:26 pm
El punto es, cuando los links cambian, y visitas la nueva pagina con el nuevo argumento en &pag, cambia el texto? Dice Estás en la Pagina 2, 3, 4?


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 15 Mayo 2010, 20:30 pm
Ah, no no cambia, o sea el numero si cambia pero el Estas en la pagina, siempre se mantiene en 1


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 15 Mayo 2010, 20:38 pm
Si siempre dice Estás en la pagina 1 es porque no estás pasando bien la variable post.

prueba hacer

Código
  1. $pag = $_POST['pag'];
  2.  

Antes de que se use $pag por supuesto.


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 15 Mayo 2010, 20:45 pm
Pero $pag no viene del buscador si yo pongo esto

Código
  1. $id=$_SESSION["id"];
  2. $usuario=$_SESSION["usuario"];
  3. $pag=$_POST['pag'];

 no entiendo como deberia ser.


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 15 Mayo 2010, 20:48 pm
Si haces eso, la variable $pag obtiene el valor directamente de la variable HTTP pag.


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 15 Mayo 2010, 20:51 pm
Pero es que haciendo esto:

Código
  1. <?php
  2. include('header.inc');
  3. error_reporting(E_ALL ^ E_NOTICE);
  4. session_name('deemoLogin');
  5.  
  6. $id=$_SESSION["id"];
  7. $usuario=$_SESSION["usuario"];
  8. $pag=$_POST['pag'];
  9.  
  10.  
  11. include_once ("connect.php");
  12.  
  13.  
  14.  
  15.  
  16. $sexo = (!empty($_POST["sexo"])
  17.    ? " sexo='".trim($_POST["sexo"])."'"
  18.        : "");
  19.  
  20. $interestin = (!empty($_POST["interestin"])
  21.        ? (!empty($sexo)
  22.                ? " AND interestin='".trim($_POST["interestin"])."'"
  23.                : " interestin='".trim($_POST["interestin"])."'")
  24.        : "");
  25.  
  26. $pais = (!empty($_POST["pais"])
  27.        ? (!empty($sexo) || !empty($interestin)
  28.                ? " AND pais='".trim($_POST["pais"])."'"
  29.                : " pais='".trim($_POST["pais"])."'")
  30.        : "");
  31.  
  32. $estadocivil= (!empty($_POST["estadocivil"])
  33.        ? (!empty($sexo) || !empty($interestin) || !empty($pais)
  34.                ? " AND estadocivil='".trim($_POST["estadocivil"])."'"
  35.                : " estadocivil='".trim($_POST["estadocivil"])."'")
  36.        : "");
  37.  
  38.  
  39.  
  40. $where = (!empty($sexo) || !empty($interestin) || !empty($pais) || !empty($estadocivil)  
  41.        ? " WHERE "
  42.        : "");
  43.  

sigue diciendome lo mismo estas en la pagina 1


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 15 Mayo 2010, 20:55 pm
Prueba $_GET['pag'] entonces.


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 15 Mayo 2010, 21:00 pm
Ahora si, me salió, muchisimas gracias de verdad, te agradezco!!!

Puse
Código
  1. <?php $pag=$_REQUEST['pag']; ?>


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 16 Mayo 2010, 17:12 pm
Hola, disculpas por volver a reflotar el tema, pero la cuestion es que ayer me olvidé de probar cuando iba hacia atrás el buscador. hacia adelante no hay problemas, sigue respetando los filtros pero hacia atras, vuelve a mostrarme todos los usuarios.
Dejo el código que tengo:

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

Para mostrar la paginacion:

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


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 16 Mayo 2010, 17:21 pm
A que te refieres con atrás? Hablas del anterior en el código o el boton de atrás del navegador?

No deberías tener problema con eso, porque no se estan cargando variables de formularios por post o algo parecido....

Prueba hacer de nuevo el echo (Estás en la pagina: $pag) y revisa la url que concuerde.


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 16 Mayo 2010, 17:25 pm
Hola MinusFour, bueno gracias por responder, me refiero al link  por ejemplo hay tres paginas 1|2|3 si de la 1 paso a la 2 todo bien o de la 2 a la 3 pero cuando vuelvo a la 1 me vuelve a mostrar todos los usuarios.
La url está bien.
Asi que no sé cual puede ser el error. :huh:


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 16 Mayo 2010, 17:30 pm
Si la url está bien, entonces el link esta bien :/

Quieres decir que cuando le das click en "«" en tu pagina, te lleva a otra pagina que no tiene filtrado?


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 16 Mayo 2010, 17:33 pm
Claro por ejemplo «1 2 » estoy en la 2 y vuelvo a la 1 me muestra todos los usuarios de la bd, y no los que yo habia especificado.
Debe ser asi?


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 16 Mayo 2010, 21:29 pm
Algo para agregar, comentar que en la paginacion de resultados todo el codigo de la pagina se repite, o sea no solamente las tablas con los datos, sino toda la pagina eso está bien?, será eso el problema que produce lo que comentaba antes?
Realmente a esto de la paginacion no le encuentro la solucion.


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 17 Mayo 2010, 19:22 pm
Hola amigos, les hago una pequeña pregunta, como hago para ponerle si no encuentra resultados un mensaje de no se han encontrado resultados?


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 17 Mayo 2010, 20:27 pm
Respecto a tu duda acerca de la paginación, vuelve al echo como te dije, para ver que valor toma pag cuando te salen todos los resultados.

Y acerca de tu otra duda, puedes hacerlo con

Código
  1. <?php
  2. if(mysql_num_rows($query) != 0){
  3. desplegarData();
  4. }
  5. else{
  6. echo "No hay datos";
  7. }
  8. ?>
  9.  


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 17 Mayo 2010, 21:36 pm
Te hago una pregunta, puede ser que el error, sea que se repite toda la pagina siempre, o sea yo tengo una tabla y abajo de esa tabla pongo el <?php echo paginar($pag, $total, $tampag, "show_results.php?pag="); ?>
Pero la cuestion es que debajo de cada tabla con los datos aparecen siempre links, y no uno solo

o sea

la tabla
<1><2>
otra tabla
<1><2>
y asi sucesivamente, puede ser ese el error?, que se me repite toda la pagina?


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 17 Mayo 2010, 21:54 pm
Puede que sea el
Código
  1. while($row = mysql_fetch_array($query)) {
que hace que se repita todo otra vez?, hay otra forma de mostrar los resultados?


Título: Re: Paginador de resultados ayuda!
Publicado por: MinusFour en 18 Mayo 2010, 02:37 am
La query se ve bien, si estás haciendo algo más, pega el código completo...


Título: Re: Paginador de resultados ayuda!
Publicado por: den_22 en 18 Mayo 2010, 05:40 am
Hola, eso de que se repite la pagina ya lo arreglé, tenia que poner el echo paginar debajo del termino del while, pero sin embargo el buscador aparentemente no anda bien, me parece que voy a tener que hacer otro codigo, porque en la primer pantalla muestra los usuarios con filtro y en las siguientes todos los usuarios.
Por ejemplo si yo busco femenino, aparece en la primera bien, pero despues todos masculinos.
Entonces debe ser el codigo del buscador.
Veré que hago entonces.