Foros del Web » Programando para Internet » PHP »

Buscador especifico por criterios

Estas en el tema de Buscador especifico por criterios en el foro de PHP en Foros del Web. Hola, tengo una base de datos con trabajadores y sus datos mi problema es que necesito hacer un buscador especifico por ejemplo: Ocupacion: Contruccion Estudios: ...
  #1 (permalink)  
Antiguo 19/03/2010, 12:35
 
Fecha de Ingreso: marzo-2010
Mensajes: 8
Antigüedad: 9 años, 8 meses
Puntos: 0
De acuerdo Buscador especifico por criterios

Hola, tengo una base de datos con trabajadores y sus datos

mi problema es que necesito hacer un buscador especifico

por ejemplo:

Ocupacion: Contruccion

Estudios: Enseñanza Media Completa

Sexo: Masculino


y que esta busqueda solo me arroje resultados donde se cumplan todos

estos criterios, he trabado con match y agains pero me salen datos

donde no se cumplen todos los criterios de busqueda .

este este es mas o menos la estructura de mi DB.

APELLIDO NOMBRE OCUPACION SEXO

espero su ayuda la necesito . GRACIAS.
  #2 (permalink)  
Antiguo 19/03/2010, 12:40
Avatar de TolerantX  
Fecha de Ingreso: marzo-2006
Ubicación: Guadalajara, México.
Mensajes: 408
Antigüedad: 13 años, 8 meses
Puntos: 10
Respuesta: Buscador especifico por criterios

Has intentado con LIKE?
__________________
TolerantX
http://tolerantx.com
Linux User #385226
  #3 (permalink)  
Antiguo 19/03/2010, 13:11
 
Fecha de Ingreso: marzo-2010
Mensajes: 8
Antigüedad: 9 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Buscador especifico por criterios

gracias por responder

si he intentado con %like% pero me sucede lo mismo

me aparecen los registros de lo que busco pero no cumpliendo con

todos los criterios, o sea si busco por ocupacion y sexo

operario de aseo y masculino por decir una cosa

me aparecen tambien

datos de trabajores con ocupacion operario de aseo pero sexo femenino

espero me puedan ayudar

gracias
  #4 (permalink)  
Antiguo 19/03/2010, 13:19
 
Fecha de Ingreso: enero-2010
Mensajes: 127
Antigüedad: 9 años, 10 meses
Puntos: 2
Respuesta: Buscador especifico por criterios

puedes hacerlo asi amigo:

"SELECT campos FROM tabla WHERE campo1 = '".$_REQUEST['campo de busqueda']."' AND campo1 = '".$_REQUEST['campo de busqueda']."'";

ese que t di es muy exacto es decir solo aparecera si lo escrito por el usuario es lo mismisimo que el valor del campo si quieres quitart el dolor d cabeza que la busqueda la haga por select y asi si va a ser exacto ya que el usuario no escribe nada.

Otra forma:

es agregarle like si pones encerrada la palabra de busqueda entre % % el va a buscar los que se parescan mas a lo que el usuario ingreso es decir que si coloca: hola, hummer por ejemplo puede ser que aparescan ambos 2 porque el ve la h osea busca una relacion en toda la palabra si pones solo un % busca solo relacion al final y al contrario al principio por lo que lei tu estas buscando la primera opcion que t di q es exacto.
  #5 (permalink)  
Antiguo 19/03/2010, 13:22
 
Fecha de Ingreso: marzo-2010
Mensajes: 8
Antigüedad: 9 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Buscador especifico por criterios

bueno para aclarar un poco mas mi consulta envio el codigo de buscador que estoy usando

Código PHP:
Ver original
  1. <FORM METHOD=POST ACTION="">
  2. Buscar: <INPUT TYPE="text" NAME="busqueda">
  3. </FORM>
  4.  
  5.  
  6.  
  7. <?php
  8. //cadena de conexion
  9. include('conexion.inc.php');
  10.  
  11. $busqueda=$_POST[busqueda];
  12. // DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
  13. if ($busqueda<>''){
  14.   //CUENTA EL NUMERO DE PALABRAS
  15.   $trozos=explode(" ",$busqueda);
  16.   $numero=count($trozos);
  17.   if ($numero==1) {
  18.     //SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
  19.     $cadbusca="SELECT  APELLIDO,NOMBRE,OCUPACION,SEXO,ESTUDIOS FROM seguir WHERE OCUP1 LIKE  '%$busqueda%' AND SEXO LIKE  '%$busqueda%' OR ESTUDIOS LIKE  '%$busqueda%'";
  20.   } elseif ($numero>1) {
  21.     //SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
  22.     //busqueda de frases con mas de una palabra y un algoritmo especializado
  23.     $cadbusca="SELECT  APELLIDO,NOMBRE,OCUPACION,SEXO,ESTUDIOS, MATCH ( OCUPACION,ESTUDIOS,SEXO)
  24.      AGAINST (  '$busqueda' ) AS Score FROM seguir WHERE
  25.      MATCH ( OCUPACION,ESTUDIOS,SEXO) AGAINST (  '$busqueda' ) ORDER  BY APELLIDO DESC";
  26.   }
  27.   $result=mysql_query($cadbusca);
  28. ?>
  29. <table width="200" border="0" cellspacing="2">
  30.   <tr>
  31.     <td class="etiqueta2">APELLIDO</td>
  32.     <td class="etiqueta2">NOMBRE</td>
  33.     <td class="etiqueta2">OCUPACION</td>
  34.     <td class="etiqueta2">ESTUDIOS</td>
  35.     <td class="etiqueta2">SEXO</td>
  36.   </tr>
  37.  
  38. <?  
  39.  
  40.  
  41.   While($row=mysql_fetch_object($result))
  42.   {
  43.   echo'<tr>';
  44.     $APELLIDO1=$row->APELLIDO;
  45.     $NOMBRE=$row->NOMBRE;
  46.     $OCUP1=$row->OCUPACION;
  47.     $ESTUDIOS=$row->ESTUDIOS;
  48.     $SEXO=$row->SEXO;
  49.     echo "<td class='etiqueta'>".$APELLIDO."</td><td class='etiqueta'>".$NOMBRE."</td><td class='etiqueta'>".$OCUPACION."</td><td class='etiqueta'>".$SEXO."</td><td class='etiqueta'>".$ESTUDIOS."</td>";
  50.  
  51.  
  52.   echo'</tr>';
  53.   }
  54.  
  55.  
  56. }
  57.  
  58.  
  59. ?>
  60. </table>

estoy usando un fulltext pero tampoco me resulta, me arroja resultados aunque

no cumplan con todos los criterios exactamente

saludos
  #6 (permalink)  
Antiguo 19/03/2010, 13:31
 
Fecha de Ingreso: enero-2010
Mensajes: 127
Antigüedad: 9 años, 10 meses
Puntos: 2
Respuesta: Buscador especifico por criterios

ese codigo no creo que lo hayas hecho tu te lanzastes x lo mas dificil que against
  #7 (permalink)  
Antiguo 19/03/2010, 13:36
 
Fecha de Ingreso: marzo-2010
Mensajes: 8
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Buscador especifico por criterios

claro que no lo lo hice yo

sino ni estaria preguntado obviamente

lo busque de la web y funciona bien

pero no para lo que yo quiero

gracias por tu buena observacion XD
  #8 (permalink)  
Antiguo 19/03/2010, 15:41
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima, Perú
Mensajes: 136
Antigüedad: 9 años, 8 meses
Puntos: 2
Respuesta: Buscador especifico por criterios

Haber, Otra Opcion:

Tomando como ejemplo la siguiente tabla trabajadores:
codigo identificador del trabajador, DNI, unico, no null
appaterno
apmaterno
nombres
sexo
ocupacion
estudios

1) construir selects con los campos de la tabla
2) construir el formulario para que seleccione los valores
3) hacer la consulta de acuerdo a los valores seleccionados


1) select.php
Código PHP:
Ver original
  1. <!--INICIO  construccion del select con los nombres de los sexo !-->
  2.     <?php
  3.         $sql_sex = "SELECT DISTINCT `sexo` FROM `trabajadores` ORDER BY `sexo` ASC ";
  4.         $result_sex = mysql_query($sql_sex);
  5.         $options_sex = '';
  6.         while ($row_sex = mysql_fetch_array($result_sex))
  7.             {   $options_sex = $options_sex.'<option value="'.$row_sex['sexo'].'">'.$row_sex['sexo'].'</option>'; }
  8.     ?>
  9. <!--FIN  construccion del select con los nombres de los sexo !-->
  10.  
  11. <!--INICIO  construccion del select con los nombres de los ocupaciones !-->
  12.     <?php
  13.         $sql_ocu = "SELECT DISTINCT `ocupaciones` FROM `trabajadores` ORDER BY `ocupaciones` ASC ";
  14.         $result_ocu = mysql_query($sql_ocu);
  15.         $options_ocu = '';
  16.         while ($row_ocu = mysql_fetch_array($result_ocu))
  17.             {   $options_ocu = $options_ocu.'<option value="'.$row_ocu['ocupaciones'].'">'.$row_ocu['ocupaciones'].'</option>'; }
  18.     ?>
  19. <!--FIN  construccion del select con los nombres de los ocupaciones !-->
  20.  
  21. <!--INICIO  construccion del select con los nombres de los estudios !-->
  22.     <?php
  23.         $sql_est = "SELECT DISTINCT `estudios` FROM `trabajadores` ORDER BY `estudios` ASC ";
  24.         $result_est = mysql_query($sql_est);
  25.         $options_est = '';
  26.         while ($row_est = mysql_fetch_array($result_est))
  27.             {   $options_est = $options_est.'<option value="'.$row_est['estudios'].'">'.$row_est['estudios'].'</option>'; }
  28.     ?>
  29. <!--FIN  construccion del select con los nombres de los estudios!-->

2) form.php
Código PHP:
Ver original
  1. <?php require './require/select.php'; ?>
  2. <form action="./query.php" method="post" >
  3.   <?php echo '<select name="sex">'.$options_sex.'</select>'; ?>
  4.   <?php echo '<select name="est">'.$options_est.'</select>'; ?>
  5.   <?php echo '<select name="ocu">'.$options_ocu.'</select>'; ?>
  6.   <input type="submit" name="consulta" value="consultar" size="30"/>
  7. </form>

3) query.php
Código PHP:
Ver original
  1. <?php require './require/head.php'; ?>
  2. <?php require './require/conexion.php'; ?>
  3. <?php
  4.     echo "<b>para realizar una busqueda presione: Control + F </b><br />" ;
  5.     echo "<b>para imprimir el reporte presione: Control + P </b><br />" ;
  6.     echo "<br />" ;
  7.  
  8. $sex = $_POST['sex'];
  9. $est = $_POST['est'];
  10. $ocu = $_POST['ocu'];
  11. $query_trab= ("SELECT * FROM trabajadores
  12. WHERE sexo = '$sex' AND estudios = '$est' AND ocupacion = '$ocu'
  13. ORDER BY appaterno ");
  14. $trab= mysql_query($query_trab, $conexion) or die(mysql_error());
  15. $row_trab = mysql_fetch_assoc($trab);
  16. $totalRows_trab= mysql_num_rows($trab);
  17. ?>
  18. <table border="4" cellpadding="2" cellspacing="5" bgcolor="#ffffff">
  19.     <tr>
  20.       <td>Ap. Paterno</td> <td>Ap. Materno</td> <td>Nombres</td>
  21.   </tr>
  22.   <?php do { ?>
  23.     <tr>
  24.       <td><?php echo $row_trab['appaterno']; ?></td>
  25.       <td><?php echo $row_trab['apmaterno']; ?></td>
  26.       <td><?php echo $row_trab['nombres']; ?></td>
  27.  
  28.     </tr>
  29.     <?php } while ($row_trab= mysql_fetch_assoc($trab)); ?>
  30. </table><br />
  31. <table border="0" cellpadding="1" cellspacing="1">
  32.     <tr>
  33.       <td><?php echo "El total de Trabajadores es :" . $totalRows_trab ?></td>
  34.     </tr>
  35. </table>
  36. <br /><a href="/index.php">Regresar a la pagina principal</a><br /><br />
  37. </body>
  38.  
  39. </html>
  40. <?php mysql_free_result($trab); ?>
  41. <?php require './require/foot.php'; ?>


Logicamente a lo de arriba le falta un huevo de cosas, que ya le dejo por tu cuenta, pistas:
- Seguridad,
- Rendimiento
- Funciones
  #9 (permalink)  
Antiguo 19/03/2010, 15:44
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima, Perú
Mensajes: 136
Antigüedad: 9 años, 8 meses
Puntos: 2
Respuesta: Buscador especifico por criterios

Por cierto, el codigo es antiguo y lo amolde a lo que el queria

tiene un sinfin de deficiencias, pero funciona, el que tengo ahora es mejor, pero no pienso dárselo, que trabaje un poco XD
  #10 (permalink)  
Antiguo 19/03/2010, 15:55
 
Fecha de Ingreso: marzo-2010
Mensajes: 8
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Buscador especifico por criterios

Muchas gracias por tu respuesta dantrix....

no lo he probado aun pero lo hare este fin de semana

en serio es un gran aporte nuevamente, te agradezco

saludo!!!!!
  #11 (permalink)  
Antiguo 19/03/2010, 16:41
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima, Perú
Mensajes: 136
Antigüedad: 9 años, 8 meses
Puntos: 2
Respuesta: Buscador especifico por criterios

Cita:
Iniciado por overloadxd Ver Mensaje
Muchas gracias por tu respuesta dantrix....

no lo he probado aun pero lo hare este fin de semana

en serio es un gran aporte nuevamente, te agradezco

saludo!!!!!
Si te sirve, me envias karma, saludos
  #12 (permalink)  
Antiguo 06/04/2010, 20:32
 
Fecha de Ingreso: marzo-2010
Mensajes: 8
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Buscador especifico por criterios

funciono impecablemente

ya conmo te envio karma¿?

Etiquetas: criterios, especifico, buscadores
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 13:00.