Ver Mensaje Individual
  #7 (permalink)  
Antiguo 11/07/2003, 14:40
Avatar de cofyman
cofyman
 
Fecha de Ingreso: noviembre-2002
Ubicación: Murcia - Spain
Mensajes: 17
Antigüedad: 21 años, 5 meses
Puntos: 0
Sonrisa Yo tengo algo, usalo si te vale :)

Bueno yo tengo un buscador "avanzado" que me curre hace tiempo para una web... te he sacado unas lineas (las mas importantes) y te las comento...
si no se entiende lo explico con mas detalles

Código PHP:
<?
$BgcolorHead        
"#91AAC1";        // Color de las cabeceras de las celdas 
$BgcolorHead2        "#93BEE2";
$BgcolorDatos        "#BECFDF";

//Recogemos los datos pasados por POST o GET
// la variable buscar nos dirá si hay que mostrar el formulario o ya podemos empezar la busqueda
$buscar     = (isset($_GET['buscar'])) ? $_GET['buscar'] : $_POST['buscar'];

//Recuperamos los datos personales
// Primero definamos con qué método se llamó    
$variables $_SERVER["REQUEST_METHOD"]=="GET"?$_GET:$_POST;

foreach(
$variables as $clave => $valor){
    if (
$valor!="") {    
        
//echo $clave."=".$valor."<br>";//El chivato que me dice si todo esta entrando bien        $array_consulta[$clave]=$valor;
    
}//end if
}//end foreach

//Con todas las lineas anteriores, que no son mias (no recuerdo ahora de quien, pero es idea de otro) consigo que no haga falta usar checkbox si hay cosas escribas me vale para la busqueda, si no paso
//Ahora miramos buscar para mostrar o no el formulario y en una sola página php lo hago todo
if (!$buscar) {
?>
<form name="f1" action="<? echo $_SERVER['PHP_SELF']?>" method="GET">
<table border="0" width="100%" cellpadding="0" cellspacing="0">
    <tr>
      <td valign="top">
        <table border="0" width="100%">
        <tr>
            <td colspan="2">
                <table border="0" width="100%" cellpadding="2" cellspacing="0">
                <tr bgcolor="<?= $BgcolorHead2 ?>">
                    <th align="center" valign="middle">Datos Personales</th>
                </tr>
                </table>
              </td>
        </tr>
        <tr>
            <td align="right" bgcolor="<?= $BgcolorHead ?>" width="25%"><b>NIF:</b></td>
            <td bgcolor="<?= $BgcolorDatos ?>">
            <input type="text" MAXLENGTH="10" SIZE="70" name="PER_NIF" onMouseOver="cambia(this,'Lavender');" onMouseOut="cambia(this,'ffffff');" onkeyup="this.value=comprobar(this)" value="<? echo $array_consulta['PER_NIF'?>">&nbsp;
              </td>
        </tr>
        <tr>
              <td align="right" bgcolor="<? echo $BgcolorHead ?>"><b>NOMBRE:</b></td>
            <td bgcolor="<?= $BgcolorDatos ?>"><input type="text" MAXLENGTH="100" SIZE="70" name="PER_NOMBRE" onMouseOver="cambia(this,'Lavender');" onMouseOut="cambia(this,'ffffff');" value="<? echo $array_consulta['PER_NOMBRE'?>">&nbsp;</td>
        </tr>
        <tr>
            <td align="right" bgcolor="<? echo $BgcolorHead ?>"><b>APELLIDOS:</b></td>
            <td bgcolor="<?= $BgcolorDatos ?>"><input type="text" MAXLENGTH="100" SIZE="70" name="PER_APELLIDOS" onMouseOver="cambia(this,'Lavender');" onMouseOut="cambia(this,'ffffff');" value="<? echo $array_consulta['PER_APELLIDOS'?>">&nbsp;</td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                &nbsp;<br>
                <input type="submit" value="&nbsp;&nbsp;Buscar  &raquo;" >
                <input type="hidden" name="buscar" value="1">
            </td>
        </tr>        
        </table>
        
      </td>      
    </tr>
</table>
</form>
<?
}else {
    
//Vamos a buscar, para ello comprobamos los datos pasados
    //------------------------------ N O M B R E ----------------
        //Comprobamos el nombre eliminando barras invertidas y dobles
        //y eliminamos los espacios del principio y del final y pasamos todo a mayusculas    
    
if ($array_consulta['PER_NOMBRE']) {
        
$array_consulta['PER_NOMBRE'] = strtoupper(trim(stripslashes($array_consulta['PER_NOMBRE'])));
        if (!
eregi("^[0-9A-Za-z*%ªº ]*$",$array_consulta['PER_NOMBRE'])){
            
$array_consulta['PER_NOMBRE']="*";            
        }
//end if
    
}//end if

    //Construimos la senctencia SQL de busqueda
    
$local_query1 "SELECT t1.*, t2.* FROM tbl_personas AS t1, tbl_socios AS t2 WHERE t1.PER_NIF = t2.SOC_NIF";
    
$local_query2 "";
    foreach(
$array_consulta as $clave => $valor){
        if (
strstr ($clave,"PER_")) {
            
$local_query2 .=" AND t1.".$clave." LIKE '".$valor."'";
        }elseif (
strstr ($clave,"SOC_")){
            
$local_query2 .=" AND t2.".$clave." LIKE '".$valor."'";
        }
//end if
    
}//end foreach        
    
    
$local_query2strtr($local_query2"*""%");//Cambiamos los * por %
    
$local_query2strtr($local_query2"?""_");//Cambiamos los ? por _
    
$local_query $local_query1.$local_query2;

?>
En este buscador se pueden usar el * y la ? como se usan en windows para las busquedas.

Que os parece??