Foros del Web » Programando para Internet » PHP »

Modulo de busqueda

Estas en el tema de Modulo de busqueda en el foro de PHP en Foros del Web. Chicos, si alguno de ustedes tienen disponible un modulo de busqueda en php que pueda compartir se lo agradecere, lo que quiero es algo que ...
  #1 (permalink)  
Antiguo 07/08/2003, 21:09
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 21 años, 9 meses
Puntos: 0
Modulo de busqueda

Chicos, si alguno de ustedes tienen disponible un modulo de busqueda en php que pueda compartir se lo agradecere, lo que quiero es algo que se fije en una db mysql y que tire los resultados de x palabra buscada en una página html con el respectivo link a la información completa, no me pongo a investigar como hacerlo yo mismo pues tengo prisa con esto, si alguien lo tiene se lo agradezco:

cualquier noveda a [email protected]

Gracias.
  #2 (permalink)  
Antiguo 07/08/2003, 21:15
Avatar de WyLY  
Fecha de Ingreso: enero-2002
Ubicación: Cancun, México.
Mensajes: 506
Antigüedad: 22 años, 2 meses
Puntos: 6
jaja express:
http://www.xlwebmasters.com/doc3.php?id=281&doc=php33

salu2
__________________
I do techy stuff for a living and practice MMA with my dog... He always wins.
  #3 (permalink)  
Antiguo 07/08/2003, 21:16
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
Código PHP:
< ? 
$conexio mysql_connect("nombre_servidor""usuario""contraseña"); 

mysql_select_db ("nombre_BBDD"$conexio) OR die ("No se puede conectar"); 

// SQL para la búsqueda 

$sql="SELECT * FROM documentos WHERE documento LIKE '%".$palabra."%' "
$result=mysql_query($sql,$conexio); 


// Si hay resultados crea una tabla y los muestra 

if ($rowmysql_fetch_array($result)) 

echo 
"<TABLE BORDER='0'>"
DO 

echo 
"$row["documento"]"

WHILE (
$row=mysql_fetch_array($result)); 
echo 
"</TABLE>"

mysql_close ($conexio); 
?> 

Ahora crea un archivo llamado: "form.html", y colocale el siguiente codigo: 

<FORM ACTION="buscador.php"> 

<INPUT TYPE="TEXT" NAME="palabra"> 

<INPUT TYPE="SUBMIT" NAME="Buscar"> 
__________________
3w.valenciadjs.com
3w.laislatv.com
  #4 (permalink)  
Antiguo 07/08/2003, 21:17
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
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;

?>
__________________
3w.valenciadjs.com
3w.laislatv.com
  #5 (permalink)  
Antiguo 07/08/2003, 21:40
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 21 años, 9 meses
Puntos: 0
Si muy rápido le agradezco.... estaba mirando el script de "nuevo" y me gusto, puedo adaptarlo... pero tengo una duda con respecto a esta consulta

SELECT * FROM documentos WHERE documento LIKE '%".$palabra."%

Es que estoy viejo en php, tengo mucho que no lo toco.... entiendo que el primer "documentos" se refiere a la tabla donde se fijara pero el segundo "documento" que es? :S y si quiero hacer la consulta a una db completa o a multiples tablas?, para multiples tablas seria así...

SELECT * FROM table1 and table2 and tableN WHERE documento LIKE '%".$palabra."%

si?....

Gracias.
  #6 (permalink)  
Antiguo 07/08/2003, 21:43
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Se refiere al campo donde almacenas el documento... es decir, a la columna llamada "documento" o "texto" o "cuerpo" o "mensaje"...

Salud!
__________________
Manoloweb
  #7 (permalink)  
Antiguo 07/08/2003, 21:46
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 2 meses
Puntos: 5
Si quieres consultar varias tablas, debes decidir que campo en cada una de ellas es el que quieres consultar... por ejemplo:

select tablaA.*, tablaB.* from tablaA, tablaB where tablaA.documento like '%$palabra%' or tablaB.documento like '%$palabra%'...
__________________
Manoloweb
  #8 (permalink)  
Antiguo 07/08/2003, 22:02
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
exacto.... gracias manolo...
__________________
3w.valenciadjs.com
3w.laislatv.com
  #9 (permalink)  
Antiguo 07/08/2003, 22:13
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 21 años, 9 meses
Puntos: 0
Perfecto.... me habia confundido pues siempre hice las tipicas consultas del tipo...

SELECT * FROM tabla WHERE $variable = 10

Gracias chicos, ya estoy trabajando en el asunto.... estoy en deuda con ustedes.
  #10 (permalink)  
Antiguo 07/08/2003, 22:54
Avatar de biblio  
Fecha de Ingreso: enero-2002
Ubicación: Urano
Mensajes: 577
Antigüedad: 22 años, 3 meses
Puntos: 0
Cita:
Si muy rápido le agradezco.... estaba mirando el script de "nuevo" y me gusto, puedo adaptarlo... pero tengo una duda con respecto a esta consulta

SELECT * FROM documentos WHERE documento LIKE '%".$palabra."%

Es que estoy viejo en php, tengo mucho que no lo toco.... entiendo que el primer "documentos" se refiere a la tabla donde se fijara pero el segundo "documento" que es? :S y si quiero hacer la consulta a una db completa o a multiples tablas?, para multiples tablas seria así...

SELECT * FROM table1 and table2 and tableN WHERE documento LIKE '%".$palabra."%

si?....

Gracias.
Un punto importante, las consultas no son de php, son sentencias SQL(Structure Query Languaje), en todo caso pertenece a cualquier Gestor de Base de Datos al que accedes por medio de ellas, no confundir. Esta bien que los usas dentro de los códigos de php, eso no implica que sea parte de las funciones de php.

Saludos
  #11 (permalink)  
Antiguo 08/08/2003, 07:14
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 21 años, 9 meses
Puntos: 0
Si lose... pero por hay y para no complicar las cosas lo asocie todo.... Gracias por la observación.
  #12 (permalink)  
Antiguo 08/08/2003, 09:32
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 21 años, 9 meses
Puntos: 0
Hay un pequeño problema..... estoy usando el primer script, al principio me dio problema con la linea 16,

echo "$row["documento"]";

Le tube que sacar la primera y última comillas, pero el drama ahora es que sea lo que sea que ponga en el buscador, hasta que lo deje en blanco siempre me muestra todo el contenido de la columna "documento", supongo que hay algo mal, probe poner la linea 16 así:

echo "$row["$result"]";

y

echo "$result";

Pues se supone que la consulta la toma en esa variable pues si sigo dejando "documento" me esta mostrando todo el contenido de la columna.
  #13 (permalink)  
Antiguo 08/08/2003, 13:07
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 21 años, 9 meses
Puntos: 0
Os dije que estaba "viejo" en php, el problema era el tema de register_globals... :S
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 02:11.