Foros del Web » Programando para Internet » PHP »

Filtrar una Busqueda...

Estas en el tema de Filtrar una Busqueda... en el foro de PHP en Foros del Web. Pues veran estoy haciendo un sistema para un cementerio, dicho cementerio consta de 10 bloques de las cuasles 4 son dobles 4 sencillos, 1 infantil ...
  #1 (permalink)  
Antiguo 17/06/2010, 09:14
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Pregunta Filtrar una Busqueda...

Pues veran estoy haciendo un sistema para un cementerio, dicho cementerio consta de 10 bloques de las cuasles 4 son dobles 4 sencillos, 1 infantil y 1 de restos...

ahora en la Bd yo e creado una tabla por cada bloque es decir tengo las tablas:
doble01,doble02,doble03,doble04,sencilla01,sencill a02,sencilla03,sencilla04,restos01,infantil01.

cada tabla tiene los mismos campos: Id, fmuerte, finhumacion,nombres,edad,boveda

Ahora en la busqueda tengo un formulario donde pido dichos campos, pero necesito filtrar la busqueda es decir, en el codiso SQL que no tome los campos que estan vacios, para cuando busque separa cada campo por un "AND"... si tomo campos en blancos me arroja una consulta NULL y si cambio AND por OR me arroja TODO lo que tiene la BD...

Entonces como puedo filtrar una busqueda de datos que se encuentran en varias tablas??? Gracias
  #2 (permalink)  
Antiguo 17/06/2010, 09:23
 
Fecha de Ingreso: abril-2010
Mensajes: 89
Antigüedad: 14 años
Puntos: 1
Respuesta: Filtrar una Busqueda...

mira te complicaste mucho no hagas tantas tablas despues si tenes que cambiar algo te vas a volver mono, hace una tabla que se llame bloques con 10 campos
Código:
doble01,doble02,doble03,doble04,sencilla01,sencill a02,sencilla03,sencilla04,restos01,infantil01.
despues otra tabla que tenga los datos del difunto
Código:
id, nombre, apellido, edad, bloque
cuando tomes el valor id o nombre del difunto hace esto te doy un ejemplo
Código PHP:
mysql_query("SELECT FROM bloques WHERE id = $difunto[bloque]"); 
entonces tomas el valor del bloque del difunto
y lo de la busqueda hace un verificador de campos
Código PHP:
if(!isset($_POST['nombre'])) 
{
echo 
"no hay datos en campo nombre";

  #3 (permalink)  
Antiguo 17/06/2010, 09:56
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Filtrar una Busqueda...

Pues no entendi porque la tabla con los 10 campos, no entendi alli, pero lo de la busqueda, es decir yo tengo en el form de busqueda 6 campos. tonces si un campo no se llena al buscar, como tengo un "AND" no me arroja anda porque sera dato y NUL y NULL y NULL...

Entonces quiero que busque segun los campos que han sido ingresados, segun mi criterio y logica tengo que hacer permutaciones donde haga un codigo diferente para cada caso es decir cuando cada campo este lleno...

este es el form de busqueda:
Código PHP:
Ver original
  1. <form method="POST" action="cementerio_buscar.php" onSubmit="return checkform(this)">
  2.                  <table border="0" width="100%">
  3.                         <tr>
  4.                             <td class="texto2" width="20%">Fecha de Inhumacion:</td>
  5.                             <td>                            
  6.                             <input type="text" name="Fentierro" size="20" id="dateDefault1" onKeyPress="return(currencyFormat(this,'/','/',event))"/>
  7.                             </td>
  8.                         </tr>
  9.                  </table>
  10.                  <table border="0" width="100%">
  11.                         <tr>
  12.                             <td class="texto2" width="20%">Nombre y Apellido:</td>
  13.                             <td  width="50%"><input type="text" size="50" name="Nombre"></td>
  14.                             <td class="texto2" width="10%">Edad:</td>
  15.                             <td ><input type="text" size="10" name="Edad"></td>
  16.                         </tr>
  17.                  </table>
  18.                  <table border="0" width="100%">
  19.                         <tr>
  20.                             <td class="texto2"  width="20%">Numero de Boveda:</td>
  21.                             <td  width="10%"><input type="text" size="5" name="Numboveda"></td>
  22.  
  23.                             <td class="texto2" width="15%">Tipo de Boveda:</td>
  24.                             <td width="25%">
  25.                             <select size="1" name="Tipo">
  26.                                         <option></option>
  27.                                         <option>sencilla</option>
  28.                                         <option>doble</option>
  29.                                         <option>infantil</option>
  30.                                         <option>restos</option>
  31.                                         <option>feto</option>
  32.                                 </select>
  33.                             </td>
  34.  
  35.                             <td class="texto2" width="10%">Bloque:</td>
  36.                             <td><input type="text" size="10" name="Bloque"></td>
  37.                         </tr>
  38.                  </table>
  39.                  <BR><BR>
  40.                  <table border="0" width="100%">
  41.                         <tr>
  42.                             <td width="15%"></td>
  43.                             <td width="20%"><input type="submit" name ="submit" value="Buscar"></td>
  44.                             <td width="30%"><input type="reset" name ="clear" value="Limpiar"></td>
  45.                         </tr>
  46.                  </table>
  47.                  </form>
entonces para la busqueda solo debo tomar en cuenta los datos que han sidos ingresados...

Disculpa lo perdido que estoy pero no le veo mas camino...
  #4 (permalink)  
Antiguo 17/06/2010, 10:04
 
Fecha de Ingreso: abril-2010
Mensajes: 89
Antigüedad: 14 años
Puntos: 1
Respuesta: Filtrar una Busqueda...

ha en ese caso es muy facil lo que queres

Código PHP:
// ejemplo tenes la variable $sql como mysql_query de select
$sql "SELECT etc bla bla bla";
if(isset(
$_POST['nombre']))
{
$sql .= " AND tabla.campo LIKE '%" .$_POST['nombre']."%'";

¿osea que hace codigo?, lo que hace es verificar si campo nombre tiene datos insertados entonces si los tiene le agrega la funcion de busqueda al query y en ese caso ya no te tira mas NULL por que si no tiene datos no le agrega el AND
  #5 (permalink)  
Antiguo 17/06/2010, 10:25
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Filtrar una Busqueda...

aja entonces hago varios if incluyendo ese codigo... y con respecto a la tabla con los 10 campos no enetndi el porque osea en tal caso haria una tabla con todos los difuntos... o no me conviene?
  #6 (permalink)  
Antiguo 17/06/2010, 10:43
 
Fecha de Ingreso: abril-2010
Mensajes: 89
Antigüedad: 14 años
Puntos: 1
Respuesta: Filtrar una Busqueda...

si te convendria mas por que tenes 2 tablas solamente y no consume tana capacidad

lo que seria es hacer inner join.

tomar el valor del campo "bloque" en la tabla difunto ejemplo:
id: 1
nombre : fulano
apellido : de tal
edad : 109 ( vive mucho )
bloque : 1 (ejemplo el sencillo 01)

cuando vallas a tomar esos valores y saber en que bloque se encuentra haces un select de la tabla usuarios

Código PHP:
Ver original
  1. $d = mysql_query("SELECT * FROM difunto");  
  2. while ($difunto = mysql_fetch_array($d)) {
  3. $b = mysql_query("SELECT * FROM bloques WHERE id=$difunto[bloque]");  
  4. $bloque = mysql_fetch_array($b);
  5. <table>
  6. <tr>
  7. <td>nombre</td>
  8. <td>bloque</td>
  9. </tr>
  10. <tr>
  11. <td>$difunto[nombre]</td>
  12. <td>$bloque[nombre] // aca decimos el nombre del bloque en donde se encuentra el difunto</td>
  13. </tr>
  14. </table>
  15. }
  #7 (permalink)  
Antiguo 17/06/2010, 10:49
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Respuesta: Filtrar una Busqueda...

yo haria una tabla llamada bloques(bloque_id,bloque_nombre) y luego una difuntos(difunto_id,difunto_nombre,difunto_fecha_f allecimiento,difunto_boveda, etc)

y con eso la busqueda seria muy pero muy simple....
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #8 (permalink)  
Antiguo 17/06/2010, 10:52
 
Fecha de Ingreso: abril-2010
Mensajes: 89
Antigüedad: 14 años
Puntos: 1
Respuesta: Filtrar una Busqueda...

y que le estoy diciendo yo xD
  #9 (permalink)  
Antiguo 20/07/2010, 10:50
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Filtrar una Busqueda...

OK, disculpen la ausencia, Estoy provando el Codigo y por los momentos trabaja de maravilla... Gracias
  #10 (permalink)  
Antiguo 20/07/2010, 13:16
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Filtrar una Busqueda...

Disculpen el Doble Post:

Llevo esto:

Código PHP:
Ver original
  1. /////////////////////////////////////////////////////////////////
  2.                       // Aqui va la Busqueda ////                    
  3.                       $Consulta="SELECT FInhumacion as Fecha, Nombres as Nombre, Edad, Boveda, Tipo, Bloque FROM registros WHERE ID>1";
  4.                       $contar="SELECT FInhumacion as Fecha, Nombres as Nombre, Edad, Boveda, Tipo, Bloque FROM registros WHERE ID>1";
  5.                       if ($Tipo!=NULL)
  6.                       {
  7.                       $Consulta.=" AND Tipo='$Tipo'";
  8.                       $contar.=" AND Tipo='$Tipo'";
  9.                       }
  10.                       if ($Entierro!=NULL)
  11.                       {
  12.                       $Entierro=cambiarFormatoFecha($Entierro);                  
  13.                       $Consulta.=" AND FInhumacion='$Entierro'";
  14.                       $contar.=" AND FInhumacion='$Entierro'";
  15.                       }
  16.                       if ($Nombre!=NULL)
  17.                       {                  
  18.                       $Consulta.=" AND Nombres like '%$Nombre%'";
  19.                       $contar.=" AND Nombres like '%$Nombre%'";
  20.                       }
  21.                       if ($Edad!=NULL)
  22.                       {                  
  23.                       $Consulta.=" AND Edad='$Edad'";
  24.                       $contar.=" AND Edad='$Edad'";
  25.                       }
  26.                       if ($Numero!=NULL)
  27.                       {                  
  28.                       $Consulta.=" AND Boveda='$Numero'";
  29.                       $contar.=" AND Boveda='$Numero'";
  30.                       }
  31.                       if ($Bloque!=NULL)
  32.                       {                  
  33.                       $Consulta.=" AND Bloque='$Bloque'";
  34.                       $contar.=" AND Bloque='$Bloque'";
  35.                       }
  36.                       $Consulta.=" ORDER by Boveda  limit ". $inicial . "," . $cantidad;
  37.                       $contar.=" ORDER by Boveda";
  38.                      
  39.                       ///////////////////////////////////////////////////////////////////

y va funcionando de maravilla, quite el isset porque siempre lo hacia (a pesar de que el campo no fuera llenado)
Gracias por la ayuda cualquier problemita lo posteo...

Última edición por JuJoGuAl; 20/07/2010 a las 13:27

Etiquetas: filtrar, 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 15:53.