Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Busqueda no muestra el resultado

Estas en el tema de Busqueda no muestra el resultado en el foro de Mysql en Foros del Web. hola que tal chicos tengo un problema con un sistema que estoy recien empezando en mi trabajo laboral de cada dia resulta que tengo un ...
  #1 (permalink)  
Antiguo 29/08/2011, 16:48
 
Fecha de Ingreso: abril-2010
Mensajes: 151
Antigüedad: 14 años, 8 meses
Puntos: 1
Busqueda no muestra el resultado

hola que tal chicos tengo un problema con un sistema que estoy recien empezando en mi trabajo laboral de cada dia resulta que tengo un buscador el cual busca los resultados de la db pero el problema es que en el registro que se hizo debe de buscarse tanto por la cedula del padre como la de la madre e alli el problema hice y me muestra en el buscador el numero de registro pero cuando coloco 1859 cuando coloco el 4to numero no me muestra nada asi coloque el numero completo

aqui mi consulta

Código PHP:
Ver original
  1. $items = 50;
  2. $page = 1;
  3.  
  4. if(isset($_GET['page']) and is_numeric($_GET['page']) and $page = $_GET['page'])
  5.         $limit = " LIMIT ".(($page-1)*$items).",$items";
  6.     else
  7.         $limit = " LIMIT $items";
  8.  
  9.  if(isset($_GET['q']) and !preg_replace('^ *$',$_GET['q'])){
  10.         $q = mysql_escape_string($_GET['q']); //para ejecutar consulta
  11.         $busqueda = htmlentities($q); //para mostrar en pantalla
  12.  
  13.         $sqlStr = "SELECT
  14. p.dp_id_folio,
  15. p.dp_nombre_apellidos,
  16. m.d_id_folio,
  17. m.d_nombre_apellidos,
  18. m.d_cedula_madre,
  19. p.dp_cedula_padre
  20. FROM
  21. datos_padre AS p
  22. INNER JOIN datos_madre AS m ON m.d_id_folio = p.dp_id_folio
  23. WHERE dp_cedula_padre LIKE '%$q%'
  24. AND d_cedula_madre LIKE '%$q%'";
  25.              
  26.         $sqlStrAux = "SELECT
  27. SUM(p.dp_id_folio + m.d_id_folio) as total,
  28. m.d_nombre_apellidos,
  29. m.d_cedula_madre,
  30. p.dp_cedula_padre,
  31. p.dp_nombre_apellidos
  32. FROM
  33. datos_padre AS p
  34. INNER JOIN datos_madre AS m ON m.d_id_folio = p.dp_id_folio
  35. WHERE dp_cedula_padre LIKE '%$q%'
  36. AND d_cedula_madre LIKE '%$q%'";
  37.              
  38.     }else{
  39.         $sqlStr = "SELECT
  40. *
  41. FROM
  42. datos_padre ,
  43. datos_madre";
  44.            
  45.         $sqlStrAux = "SELECT
  46. SUM(p.dp_id_folio + m.d_id_folio) as total,
  47. m.d_nombre_apellidos,
  48. m.d_cedula_madre,
  49. p.dp_cedula_padre,
  50. p.dp_nombre_apellidos
  51. FROM
  52. datos_padre AS p
  53. INNER JOIN datos_madre AS m ON m.d_id_folio = p.dp_id_folio
  54. WHERE dp_cedula_padre LIKE '%$q%'
  55. AND d_cedula_madre LIKE '%$q%'";
  56.  
  57.                
  58.     }
  59.  
  60. $aux = $db->fetch_assoc($db->query($sqlStrAux));
  61. $query = $db->query($sqlStr.$limit);
  62. ?>
  63.  
  64.     <form action="index.php" onsubmit="return buscar()">
  65.       <label>Buscar</label> <input type="text" id="q" name="q" value="<?php if(isset($q)) echo $busqueda;?>" onKeyUp="return buscar()">
  66.       <input type="submit" value="Buscar" id="boton">
  67.       <span id="loading"></span>
  68.     </form>
  69.    
  70.     <div id="resultados">
  71. <p><?php
  72.  
  73.  
  74.         if($aux['total'] and isset($busqueda)){
  75.                 echo "{$aux['total']} Resultado".($aux['total']>1?'s':'')." que coinciden con tu b&uacute;squeda \"<strong>$busqueda</strong>\".";
  76.             }elseif($aux['total'] and !isset($q)){
  77.                 echo "Total de registros: {$aux['total']}";
  78.             }elseif(!$aux['total'] and isset($q)){
  79.                 echo"No hay registros que coincidan con tu b&uacute;squeda \"<strong>$busqueda</strong>\"";
  80.             }
  81.     ?></p>
  82.  
  83. <?php
  84.         if($aux['total']>0){
  85.             $p = new pagination;
  86.             $p->Items($aux['total']);
  87.             $p->limit($items);
  88.             if(isset($q))
  89.                     $p->target("/buscar/?q=".urlencode($q));
  90.                 else
  91.                     $p->target("/buscar/");
  92.             $p->currentPage($page);
  93.             $p->show();
  94.             echo "\t<table class=\"registros\">\n";
  95.             echo "<tr class=\"titulos\"><td>CEDULA</td></tr>\n";
  96.             $r=0;
  97.             while($row = mysql_fetch_assoc($query)){
  98.                          
  99.           echo "<tr class=\"row$r\">"; echo"<td><a href=\"{$tsConfig['url']}/busqueda.php?q={$row['dp_id_folio']}\" target=\"_blank\">".htmlentities($row['dp_cedula_padre'])."</a></td>";
  100.        
  101.             echo'<td><form action="/imprimir-nacimiento.php" method="post" target="_blank"><input type="hidden" name="id_folio" id="id_folio" value="'. $row['dp_id_folio'].'"><input type="image" class="editar"/></form></td> ';
  102.           echo '</tr>';
  103.          
  104.           echo"<tr><td><a href=\"{$tsConfig['url']}/busqueda.php?q={$row['d_id_folio']}\" target=\"_blank\">".htmlentities($row['d_cedula_madre'])."</a></td></tr>";
  105.           if($r%2==0)++$r;else--$r;
  106.         }
  107.             echo "\t</table>\n";
  108.             $p->show();
  109.         }
  110.     ?></div>

me muestra el resultado de las cedulas tanto del padre como la de la madre pero si ay mas de cien me daria problemas con la busqueda porq no me muestra coolocando los numero completos


espero me entiendan y puedan ayudarme
  #2 (permalink)  
Antiguo 31/08/2011, 04:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Busqueda no muestra el resultado

No se entiende muy bien lo que te pasa pero....

Veo que usas onKeyUp="return buscar()" con esto estas forzando a buscar cedulas incompletas, es decir despues de introducir el primer digito hace una busqueda de todas las cedulas que contengan ese digito y asi sucesivamente....

Para poder hacer lo anterior usas "dp_cedula_padre LIKE '%$q%'" no tiene mucho sentido buscar la cedulas que "contengan" los datos que pasas, es decir si:

Nombre Cedula
Jose 123
Miguel 0123
thehack 96712389

ese LIKE te los dará todos

Manual
Cita:
% Coincidencia de cualquier número de caracteres, incluso cero caracteres
Lo logico seria usar

dp_cedula_padre='$q'

para la madre tambien.... quitanto claro esta el onKeyUp y siempre buscar cedulas completas.

O en todo caso usa "dp_cedula_padre LIKE '$q%'" sin el primer % de manera que las busquedas con cedulas incompletas se limitaran a las cedulas que empiecen igual a los digitos introducidos... no a las que los contengan

Nombre Cedula
Jose 123
Miguel 0123
thehack 96712389
quimfv 123456

si los digitos entrados son 123 solo daria José y quimfv....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 31/08/2011 a las 04:59

Etiquetas: ajax, ajax-php, buscadorphp, busquedas
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 09:33.