Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Zeroql en 27 Junio 2011, 22:09 pm



Título: Sistema de busqueda!!! no me da!!!!! (Cerrado)
Publicado por: Zeroql en 27 Junio 2011, 22:09 pm
Buenas
bueno estoy ahora haciendo un sistema de busqueda para la pagina web, con un sistema de multipaginas para mostrar solo 10 resultados por pagina, bueno eso es lo que esta en la configuracion de la base de datos. (el valor se puede cambiar)

pero no me muestra los resultados. aqui dejo el code que estoy haciendo para ver k problema es el k tengo....


Código
  1. <?
  2. //if (!isset($_POST['s'])) { $msg="error no se ha encontrado el meotod get"; exit(); }
  3.  
  4. include ('adm/conexion.php');
  5. include ('adm/rconfig.php');
  6.  
  7. $itemv=readconfig('search'); //saber cuantos resultados se van a ver.
  8.  
  9. //TODO ESTA ZONA ES PARA SABER CUANTOS RESULTADOS SE VAN A MOSTRAR
  10. $page=0; $N=0; $numrows=0; $msg="ninguno";$cont=0;
  11. if (isset($_GET['p'])) { $page=trim($_GET['p']); }
  12. else { $page=1; }
  13.  
  14. //Mostrar desde que resultados dependiendo del numero de pagina en la que se encuentre
  15. switch ($page) {
  16. case 1: $N=1; break;
  17. case 2: $N=11; break;
  18. case 3: $N=21; break;
  19. case 4: $N=31; break;
  20. case 5: $N=41; break;
  21. case 6: $N=51; break;
  22. case 7: $N=61; break;
  23. case 8: $N=71; break;
  24. case 9: $N=81; break;
  25. case 10: $N=91; break;
  26. }
  27.  
  28. //Un sistema para el contador de los numeros mostrados
  29. //*************************************************************************
  30. $resultN=($N-1)+$itemv;
  31. trim($_GET['s']);
  32. if ($_GET['s']!=NULL) {
  33. $link=conectarse();
  34. mysql_select_db('agsiscom',$link)or die ('Error al seleccionar la Base de Datos '.mysql_error());
  35. $result=mysql_query("SELECT * FROM items WHERE search LIKE '%" .$_GET['s']. "%'");
  36. if (mysql_fetch_array($result)){
  37. $numrows=mysql_num_rows($result);
  38. $idx=0;
  39. $codigo=array(); $txtsearch=array();
  40. while ($row=mysql_fetch_assoc($result)){
  41. echo $row['codigo']; echo $row['search'];
  42. $codigo[$idx]=$row['codigo'];
  43. $txtserach[$idx]=$row['search'];
  44. $cont=$idx+1;
  45. $idx++;
  46. }
  47. } else {
  48. $msg="No hay coincidencias en la palabra buscada.";
  49. }
  50. }
  51. ?>
  52.  
  53. <h2>Resultados de la busqueda</h2>
  54.      <?
  55.   if ($msg!="") {
  56. $final=($cont % $resultN);
  57. for($idx=0;$idx<$final;$idx++) {
  58.     echo "<div class='marker'><div class='wrapper'>";
  59.         echo "<p class='pad_bot2'><a href='showitem.php?cod=".$codigo[$idx]."'>".$txtsearch[$idx]."</a></p>";
  60.                 echo "</div></div>";
  61. }
  62. echo "<p class='pad_bot2'>";
  63. if ($page>1) { echo "Anterior "; }
  64. $numpages=($numrows % $itemv);
  65. for ($idx=1;$idx<=$numpages;$idx++) {
  66. echo "<a href='search.php?s=".$_GET['s'].",p=".($idx)."'> <strong>".$idx."</strong> </a>";
  67. }
  68. if ($page<$numpages) { echo "<a href='search.php?s=".$_GET['s'].",p=".($page+1)."'>Siguiente</a>"; }
  69. echo "</p>";
  70. } else { echo "<p class='pad_bot2'>".$msg."</p>"; }
  71.  ?>
  72.  
  73.  

no he podido saber cual es el problema pero no me imprime $msg, asi que pienso que si hace la consulta y trae resultados.

alguien le ve el problema???

les agradezco la ayuda


Título: Re: Sistema de busqueda!!! no me da!!!!!
Publicado por: Nakp en 27 Junio 2011, 22:23 pm
jeje que desmadre xD no seria mas sencillo usar una consulta con limit y offset? y el offset seria el numero de pagina*limit :)


Título: Re: Sistema de busqueda!!! no me da!!!!!
Publicado por: Zeroql en 28 Junio 2011, 14:27 pm
Nakp estuve investigando el limit y el offset y solo encuentro errores ocasionados, no veo ni informacion en php.net
me podrias dar n ejemplo pequeño o un lugar donde encuentre info???

te lo agradezco


Título: Re: Sistema de busqueda!!! no me da!!!!!
Publicado por: EFEX en 28 Junio 2011, 15:06 pm
Se usa de la siguiente forma en una consulta:

Citar
SELECT * FROM `user` WHERE 1=1 LIMIT 0,10

Donde LIMIT 0(Offset),10(Limite), cuando pensas en paginaciòn esta es la consulta que tenes que utilizar.
Prueba haciendo consultas desde phpmyadmin, para entenderlo mejor  :)


Título: Re: Sistema de busqueda!!! no me da!!!!!
Publicado por: Zeroql en 28 Junio 2011, 15:53 pm
Bueno ya implemente el code que uds me dieron por cierto muchas gracias por el limit, no lo conocia en SQL.
el problema es que ahora no me muestra ningun resultado de la busqueda

bueno dejo el code completo de la pagina y me digan que tengo mal.

Código
  1. <?
  2.  
  3. $msg=NULL; $page=0; $rowtot=NULL;$total=0;
  4.  
  5. if (!isset($_GET['s'])) { $msg="Error no se ha encontrado el metodo get"; exit(); }
  6.  
  7. include ('adm/conexion.php');
  8. include ('adm/rconfig.php');
  9.  
  10. $limit=(int)readconfig('search'); //saber cuantos resultados se van a ver.
  11.  
  12. if (isset($_GET['p'])) {
  13. $page=(int)trim($_GET['p']);
  14. }
  15. else {
  16. $page=1;
  17. }
  18. $offset = ($page-1) * $limit;
  19. //La consulta SQL y paginacion
  20. //*************************************************************************
  21. trim($_GET['s']);
  22. if ($_GET['s']!=NULL) {
  23. $link=conectarse();
  24. mysql_select_db('agsiscom',$link)or die ('Error al seleccionar la Base de Datos '.mysql_error());
  25. $rs = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM items WHERE search LIKE '%".$_GET['s']."%' LIMIT ".$offset.",".$limit);
  26. $sqlrt=mysql_query("SELECT FOUND_ROWS() as total");
  27. if ($rs){
  28. $rowtot = mysql_fetch_assoc($sqlrt);
  29. $total = $rowtot["total"];
  30. } else { $msg="No hay coincidencias para la palabra buscada."; }
  31. } else {
  32. $msg="No se ha definido un texto para buscar.";
  33. }
  34. ?>
  35.  
  36. <h2>Resultados de la busqueda</h2>
  37.      <?
  38.   if ($msg!="") {
  39. while ($row=mysql_fetch_assoc($rs))
  40.         {
  41.     echo "<div class='marker'><div class='wrapper'>";
  42.         echo "<p class='pad_bot2'><a href='showitem.php?cod=".$row['codigo']."'>".$row['search']."</a></p>";
  43.                 echo "</div></div>";
  44. }
  45. echo "<p class='pad_bot2'>";
  46. if ($page>1) { echo "<a href='search.php?s=".$_GET['s'].",p=".($page-1)."'>Anterior</a>"; }
  47. $npages=ceil($total/$limit);
  48. for ($idx=1;$idx<=$npages;$idx++) {
  49. if ($page==$idx) {
  50. echo "<a href='search.php?s=".$_GET['s'].",p=".($idx)."'><strong><font color='#0033FF'> ".$idx."</font></strong> </a>";
  51. }else {
  52. echo "<a href='search.php?s=".$_GET['s'].",p=".($idx)."'> <strong>".$idx."</strong> </a>";
  53. }
  54. }
  55. if ($page<$npages) { echo "<a href='search.php?s=".$_GET['s'].",p=".($page+1)."'>Siguiente</a>"; }
  56. echo "</p>";
  57. } else { echo "<p class='pad_bot2'>".$msg."</p>"; }
  58.  ?>
  59.  

ejecute la consulta en mysql bajo phpmyadmin y me da perfectamente...
el problema es que tampoco me imprime lo de la numeracion de las paginas...

que tengo mal ahora????


Título: Re: Sistema de busqueda!!! no me da!!!!!
Publicado por: Zeroql en 28 Junio 2011, 16:24 pm
ok ya corregi el error.
radicaba cuando se comprobaba la variable $msg

Código
  1. if ($msg!="")
  2.  

resulta que la varible no se estaba tomando en cuenta, asi que la saque aparte e hice esto:

Código
  1. if ($msg!="" or $msg!=NULL){ echo "<p class='pad_bot2'>".$msg."</p>"; exit(); }

algo mas que tenia malo era el paso de la variable p
lo hacia con una coma cuando al pasar variables con GET se dede separar con &

Código
  1. echo "&laquo;<a href='search.php?s=".$_GET['s']."&amp;p=".($page-1)."'>Anterior</a> ";
  2.  
  3. GRACIAS A TODOS POR SU COLABORACION.
  4.  
  5. :xD  :D
  6.  


Título: Re: Sistema de busqueda!!! no me da!!!!! (Cerrado)
Publicado por: Nakp en 28 Junio 2011, 16:36 pm
es mas efectivo comprobar la variable con la funcion empty? Si es un array vacio, false, null, 0, '' devolvera true