Ver Mensaje Individual
  #4 (permalink)  
Antiguo 31/05/2006, 07:26
Avatar de seik!
seik!
 
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años
Puntos: 6
Consulta avanzada... o filtro lo llaman algunos

bueno este post lo respodi a otra usuaria ... pero me parece k es lo mismo... kieres buscar por criterios verdad? aki ahi un ejemplo de como hacerlo... con un criteri directo (que es id) o bien con mas de un criterio... espero te sirva..

--------------------------------------------------------------------------


lo primero es generar un formulario de busqueda.......
esto debe estar en tu pagina donde se ubicara el filtro...ademas lleva un script para transformar lo que escriba en minuscula... optimiza la busqueda...

------------------------------------------------------------------------
<form method="POST" name="form" action="pagina.php" ALIGN="top">

FILTRAR POR:

Nº documento
<input type="text" name="numero" maxlength="15" size="12" onChange="javascript:this.value=this.value.toLower Case();">

Nombre
<input type="text" name="nombre" maxlength="25" size="25" onChange="javascript:this.value=this.value.toLower Case();">

departamento
<input type="text" name="departamento" maxlength="15" size="11" onblur="valFecha(this)">*

Organismo
<select name="selorganismo">
<option value=""></option>
<option value="estado">SEC</option>
<option value="gobieno">CNE</option>
<option value="publico">CDEC</option>
</select>

<input type="submit" value="Filtrar" >

</form>


---------------------------------------------------------------------

si te das cuenta en esta linea

<form method="POST" name="form" action="pagina.php" ALIGN="top">

es necesario la direcciones a la pagina donde realizas las consultas a las base datos... o bien a un nuevo frame... esta vez lo haremos en la misma pagina

action="pagina.php"

primero seleccionamos ya los datos de la base datos y los listamos....
luego es necesario rescatar los datos del formulario... esto lo haremos antes del tag del <HTML> de la pagina misma.... seria mas o menos asi

---------------------------------------------------------------------

despues de conectarnos... realizamos la consulta...

<?php

$strsql = "SELECT numero, nombre, departamento , organismo FROM tutabla";

$numero=$_POST["numero"];
$nombre=$_POST["nombre"];
$departamento=$_POST["departamento"];

$organismo=$_POST["selorganismo"];

--------------------------------------------------------------------------
ahora generaremos el filtro... espero entiendas....
------------------------------------------------------------------------

//GENERAMOS FILTRO

if(strlen($numero)> 0) {
$strsql= $strsql.= " WHERE numero= '".$numero."'";
}
else {
if(strlen($nombre)>0 ){
$strsql.= " WHERE nombre LIKE '%".$nombre."%' ";

if(strlen($departamento)>0){
$strsql.= " AND departamento LIKE '%".$departamento."%' "; }
if(strlen($organismo)>0){
$strsql.= " AND organismo= '".$organismo."'";
}
}
----------------------------------------------------------------------
lo unico k hace es tomar la clave y preguntar por una id en el select... si esta vacio muestra todo lo k ahi en la base datos... asi cada vez k habras listara todo ya k no has llenado nada del filtro, luego podras aplicar filtro... si no ahi id (que en este caso es numero) no hace nada ... luego pregunta ahi nombre o algo k exista dentro de nombre.... EJ: filtrar por nombre: a ... mostrara todos los nombres de la base datos donde se encuentre contenida la vocal "a" en el nombre.... tambien puedes mezclar los criterios.... ej: nombre y departamento... etc.... y los lista... asi susecivamente... mmmm! si lo encuentra le suma otro criterio si es k lo has llenado claro en el filtro....con un AND y asi sucesivamente...
debes generar mas consultas anidadas por cuantos campos de filtro tengas... sino no podras mezclar todas los criterios de buskeda y se caera tu sistema ...
----------------------------------------------------------------------
de esta manera .. veras k solo invierto los dos primeros criterios....



if(strlen($departamento)>0 ){
$strsql.= " WHERE departamento LIKE '%".$departamento."%' ";

if(strlen($nombre)>0){
$strsql.= " AND nombre LIKE '%".$nombre."%' "; }
if(strlen($organismo)>0){
$strsql.= " AND organismo= '".$organismo."'";
}
}


asi sucesivamente con todos los campos de tu filtro..... espero sirva aios ;)

se me olvidava.... depues debes poner mas abajo la impresion de la ocnsulta de la base datos po... para ver el listado claro.... eso...aios ;)
atte seik -chile-