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

Buscadpr mysql con mas de un campo?

Estas en el tema de Buscadpr mysql con mas de un campo? en el foro de Mysql en Foros del Web. Buenas, esta vez me ha surgido una duda mas problematica que de costumbre... Quiero hacer un sencillo buscador mediante php con una base de datos ...
  #1 (permalink)  
Antiguo 13/03/2012, 14:45
 
Fecha de Ingreso: mayo-2011
Mensajes: 214
Antigüedad: 12 años, 11 meses
Puntos: 16
Pregunta Buscadpr mysql con mas de un campo?

Buenas, esta vez me ha surgido una duda mas problematica que de costumbre...
Quiero hacer un sencillo buscador mediante php con una base de datos php, mi base de datos tiene una tabla dividida en tres campos: nombre, edad y genero.
Tengo un formulario en html donde pone nombre (<input type="text"....) edad y genero para buscar en la tabla. Y el programa en phpes muy senzillo, en el momento de buscar con sql pongo select * from table gente (y aqui el problema) where nombre='$nombre' and edad='$edad'....
Es un buen resultado si el que busca no se deja ninguna casilla en blanco, pero yo no quiero que mi buscador sea asi, por ejemplo, si solo quieres buscar todos los que tengan 40 años, quiero que solo con llenar la casilla edad se tenga suficiente, pero si quieres buscar toda la gente con 40 años y femeninos, no haga falta llenar el campo nombre. No se si me explico.... En fin si alguien me ha entendido porfavor que me ayude, estoy desesperado! Y si alguien no me entiende y cree que me puede ayudar que comente e intentare explicarme mejor!
  #2 (permalink)  
Antiguo 14/03/2012, 06:17
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Buscadpr mysql con mas de un campo?

Utiliza la combinación de and y or junto con un if para evaluar sólo los valores que sean distinto de NULL, en principio no tiene más complicación.
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 14/03/2012, 08:09
 
Fecha de Ingreso: mayo-2011
Mensajes: 214
Antigüedad: 12 años, 11 meses
Puntos: 16
Respuesta: Buscadpr mysql con mas de un campo?

Vale, algo asi me imaginaba, pero me iría mucho mejor si me pusieras un ejemplo.
Y mi "programa" consta de 8 campos de búsqueda, eso con alargaría el programa un poco no?
  #4 (permalink)  
Antiguo 14/03/2012, 13:07
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Buscadpr mysql con mas de un campo?

Adáptalo a tu sistema pero la idea es esta:

Código PHP:
Ver original
  1. <?php
  2. ini_set('display_errors', 1);
  3.  
  4. if(isset($_POST['buscar']))//Porcesar sólo si se ha enviado algo por formulario
  5. {
  6.     $sql = "SELECT * FROM TABLA T WHERE 1 ";
  7.     //Nombre, si está definido
  8.     if(isset($_POST['nombre']) && $_POST['nombre']) {
  9.         $sql .="AND T.nombre LIKE '%{$_POST['nombre']}%' ";
  10.         echo "<h5>Nombre se parece a: {$_POST['nombre']}</h5>";
  11.     }
  12.  
  13.     //Género siempre está definido pero puede tener distintos valores, en este caso, sólo vale cuando
  14.     //es 0 o 1
  15.     if($_POST['genero']!="-1"){
  16.         $sql .="AND T.genero = '{$_POST['genero']}' ";
  17.         echo "<h5>El género es: {$_POST['genero']}</h5>";
  18.     }
  19.     else {
  20.         echo "<h5>No se ha definido el género</h5>";
  21.     }
  22.     //Calcular máximo y mńimo
  23.     if($_POST['min'] && $_POST['max'])
  24.     {
  25.         $sql .="AND (T.edad <= '{$_POST['max']}' AND T.edad >= '{$_POST['min']}') ";
  26.     }
  27.     elseif($_POST['min'] && !$_POST['max'])
  28.     {
  29.         $sql .="AND T.edad >= '{$_POST['min']}' ";
  30.  
  31.     }
  32.     elseif(!$_POST['min'] && $_POST['max'])
  33.     {
  34.         $sql .="AND T.edad <= '{$_POST['max']}' ";
  35.     }
  36.     echo "<h5>Mínimo es: {$_POST['min']}</h5>";
  37.     echo "<h5>Máximo es: {$_POST['max']}</h5>";
  38.     $sql .=";";
  39.    
  40.     echo "<h3>La select es: $sql</h3>";
  41.  
  42. }
  43. ?>
  44. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  45. <html xmlns="http://www.w3.org/1999/xhtml">
  46. <head>
  47. <meta http-equiv="Content-Type"
  48.     content="text/html; charset=windows-1252" />
  49. <title>Documento sin t&iacute;tulo</title>
  50. </head>
  51. <body>
  52.     <form id="form1" name="form1" method="post" action="">
  53.         <table width="300" border="0">
  54.             <tr>
  55.                 <td colspan="2"><div align="center">Buscador de personas</div></td>
  56.             </tr>
  57.             <tr>
  58.                 <td>G&eacute;nero</td><input name="buscar" type="hidden" id="buscar" size="1"
  59.                     maxlength="1" value="go" />
  60.                 <td><label> <select name="genero" id="genero">
  61.                             <option value="-1" selected="selected">Seleccione...</option>
  62.                             <option value="0">Masculino</option>
  63.                             <option value="1">Femenino</option>
  64.                     </select> </label></td>
  65.             </tr>
  66.             <tr>
  67.                 <td>Edad (min)</td>
  68.                 <td><input name="min" type="text" id="minimo" size="3"
  69.                     maxlength="3" /></td>
  70.             </tr>
  71.             <tr>
  72.                 <td>Edad (max)</td>
  73.                 <td><input name="max" type="text" id="maximo" size="3"
  74.                     maxlength="3" /></td>
  75.             </tr>
  76.             <tr>
  77.                 <td>Nombre</td>
  78.                 <td><label> <input name="nombre" type="text" id="nombre" size="20"
  79.                         maxlength="20" /> </label>
  80.                 </td>
  81.             </tr>
  82.             <tr>
  83.                 <td colspan="2"><input type="Submit"></td>
  84.             </tr>
  85.         </table>
  86.     </form>
  87. </body>
  88. </html>
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 17/03/2012, 10:04
 
Fecha de Ingreso: mayo-2011
Mensajes: 214
Antigüedad: 12 años, 11 meses
Puntos: 16
Respuesta: Buscadpr mysql con mas de un campo?

He intentado todo lo que he podido con lo que mas pasado, pero no encuentro solucion y me pareze que no entendiste del todo la idea.
Tengo unas 6 columnas: nombre - apellido- segundo apellido- correo - telefono - etc...
Y un documento html con esos campos, lo que quiero es una apliacion php para buscar en todas las columnas a la vez. El problema es que si uso el comando and me obligo a rellenar TODOS los campos ya que si no busca "" en el campo que dejo vacio! y logicamente no encuentra nada!
Ese es el problema, si solo queiro buscar a todos los Juan quiero que con solo poner juan en el campo nombre ya me salgan todos los juan, si ademas quiero a todos los juan de China, pongo en el campo nombre juan y en localidad china! Y si quiero rellenar todos los campos para encontrar especificamente a una persona pos que tambien funcione. Eso es lo que no consigo de ninguna de las maneras!

Etiquetas: php, select, sql, tabla, campos
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 04:25.