Foros del Web » Programando para Internet » PHP »

necesito hacer una busuqeda en toda las tablas d ela bd

Estas en el tema de necesito hacer una busuqeda en toda las tablas d ela bd en el foro de PHP en Foros del Web. como lo pueod hacer para lograr una busqueda dentro de toda la bas ede datos, el codigo que ocupo para buscar es: Código PHP: $busqueda ...
  #1 (permalink)  
Antiguo 21/08/2007, 15:40
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
necesito hacer una busuqeda en toda las tablas d ela bd

como lo pueod hacer para lograr una busqueda dentro de toda la bas ede datos, el codigo que ocupo para buscar es:
Código PHP:
$busqueda=$_POST['busqueda'];
    
// Debo preparar los textos que voy a buscar si la cadena existe
    
if ($busqueda<>'')
    {
        
//Cuenta el numero  de palabras
        
$trozos=explode(" ",$busqueda);
        
$numero=count($trozos);
        if (
$numero==1
        {
            
$cadbusca="SELECT * FROM * WHERE 
            empresas LIKE '%$busqueda%' 
            OR departamentos LIKE '%$busqueda%' 
            OR usuario LIKE '%$busqueda%' 
            OR sector LIKE '%$busqueda%' 
            OR numero_factura LIKE '%$busqueda%' 
            OR firstinput LIKE '%$busqueda%' 
            OR fecha_recibo LIKE '%$busqueda%' 
            OR realizado_por LIKE '%$busqueda%' 
            OR proveedor LIKE '%$busqueda%' 
            OR nombre_cliente LIKE '%$busqueda%' 
            OR solicitado_por LIKE '%$busqueda%' 
            OR despacho_pedido LIKE '%$busqueda%' 
            OR secondinput LIKE '%$busqueda%' 
            OR numero_serie_computador LIKE '%$busqueda%' 
            OR monitor_computador LIKE '%$busqueda%' 
            OR marca_computador LIKE '%$busqueda%' 
            OR procesador_computador LIKE '%$busqueda%' 
            OR disco_duro_computador LIKE '%$busqueda%' 
            OR memoria_ram_computador LIKE '%$busqueda%' 
            OR grabador_computador LIKE '%$busqueda%';"
;
        }
        elseif (
$numero>1
        {
            
//Si hay una frase se utiliza el algoritmo de busqueda avanzada de MATCH AGAINST
            //busqueda de frases con mas de una palabra y un algoritmo especializado
            
$cadbusca="SELECT * , MATCH ( empresas, departamentos, usuario, sector, numero_factura, firstinput, fecha_recibo, realizado_por, proveedor, nombre_cliente, solicitado_por, despacho_pedido, secondinput, numero_serie_computador, monitor_computador, marca_computador, procesador_computador, disco_duro_computador, memoria_ram_computador, grabador_computador, lector_computador ) AGAINST ( '$busqueda' ) 
            FROM * WHERE MATCH ( empresas, departamentos, usuario, sector, numero_factura, firstinput, fecha_recibo, realizado_por, proveedor, nombre_cliente, solicitado_por, despacho_pedido, secondinput, numero_serie_computador, monitor_computador, marca_computador, procesador_computador, disco_duro_computador, memoria_ram_computador, grabador_computador ) AGAINST ( '$busqueda' );"
;
        }
        function 
limitarPalabras($cadena$longitud$elipsis "...")
        {
            
$palabras explode(' '$cadena);
            if (
count($palabras) > $longitud)
            return 
implode(' 'array_slice($palabras0$longitud)) . $elipsis;
            else
            return 
$cadena;
        }
        
$result=mysql_query($cadbusca$link) or die( mysql_error() );
        
$i=2;
        while (
$row mysql_fetch_array($result))
        {
            echo 
"<table width='950' align='center' cellspacing='2'>";
            echo 
"<tr bgcolor='#E3E9F1'>";
            echo 
"<td width='70' class='textarea' align='left'>".$row['numero_factura']."</td>";
            echo 
"<td width='70' class='textarea' align='left'>".$row['numero_serie_computador']."</td>";
            echo 
"<td width='120' class='textarea' align='left'>".$row['empresas']."</td>";
            echo 
"<td width='120' class='textarea' align='left'>".$row['departamentos']."</td>";
            echo 
"<td width='110' class='textarea' align='left'>".$row['realizado_por']."</td>";
            echo 
"<td width='120' class='textarea' align='left'>".$row['solicitado_por']."</td>";
            echo 
"<td width='110' class='textarea' align='left'>".$row['usuario']."</td>";
            echo 
"<td width='70' class='textarea' align='left'>".$row['proveedor']."</td>";
            echo 
"<td width='60' class='textarea' align='left'>".$row['marca_computador']."</td>";
            echo 
"<td width='16' class='textarea' align='left'> <a href='../computador/consulta.php?numero_factura=".$row['numero_factura']."'target=\"_blank\"><img src='../imagen/consulta.png' width='11' height='11' border='0' title='CONSULTAR INVENTARIO'></a></td>";  
            echo 
"<td width='16' class='textarea' align='left'> <a href='../computador/modificar.php?numero_factura=".$row['numero_factura']."'target=\"_blank\"><img src='../imagen/actualizar.png' width='11' height='11' border='0' title='MODIFICAR INVENTARIO'></a></td>";  
            echo 
"<td width='16' class='textarea' align='left'> <a onclick=\"eliminarDato('".$row['numero_factura']."')\"><img src='../imagen/eliminar.png' width='11' height='11' title='ELIMINAR INVENTARIO'></a></td>";  
            echo 
"</tr>";
            echo 
"</tabla>";
        
$i++;
        }
    } 
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #2 (permalink)  
Antiguo 21/08/2007, 15:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: necesito hacer una busuqeda en toda las tablas d ela bd

Para buscar a lo largo de varias tablas tienes que usar UNION para unir 2 o mas tablas.

Saludos.
  #3 (permalink)  
Antiguo 21/08/2007, 16:04
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: necesito hacer una busuqeda en toda las tablas d ela bd

Me ayuda con una descripcion de codigo porfa
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #4 (permalink)  
Antiguo 21/08/2007, 16:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: necesito hacer una busuqeda en toda las tablas d ela bd

Código:
( SELECT a, b, c FROM tabla1 ) UNION ( SELECT d, e, f FROM tabla2 )
Saludos.
  #5 (permalink)  
Antiguo 22/08/2007, 11:47
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: necesito hacer una busuqeda en toda las tablas d ela bd

me tira el siguiente error

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MATCH ( empresas, departamentos, usuario, sector, numero_fa
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #6 (permalink)  
Antiguo 22/08/2007, 11:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: necesito hacer una busuqeda en toda las tablas d ela bd

No puedes usar MATCH AGAINST hasta donde yo se en Selects con uniones.

Saludos.
  #7 (permalink)  
Antiguo 22/08/2007, 12:18
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: necesito hacer una busuqeda en toda las tablas d ela bd

Cuantos caracteres se pueden buscar por FULLTEXT el maximo yo tengo 16 y no me funciona
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #8 (permalink)  
Antiguo 22/08/2007, 12:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: necesito hacer una busuqeda en toda las tablas d ela bd

Caracteres? No creo que tengas un limite, pero cuando quieres buscar a lo largo de varias tablas no creo que puedes usar MATCH.. AGAINST..

Saludos.
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 07:11.