Foros del Web » Programando para Internet » PHP »

problemas al buscar con caracteres en blanco

Estas en el tema de problemas al buscar con caracteres en blanco en el foro de PHP en Foros del Web. tengo un buscador que funciona muy bien pero: al buscar; <JOSE MONJE> el espacio en blanco entre el nombre y el apellido no lo toma ...
  #1 (permalink)  
Antiguo 13/08/2007, 14:49
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
problemas al buscar con caracteres en blanco

tengo un buscador que funciona muy bien pero:
al buscar;

<JOSE MONJE> el espacio en blanco entre el nombre y el apellido no lo toma y me tira un error

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:......

como lo hago para que no influya en la busqueda el caracter en blanco,
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #2 (permalink)  
Antiguo 13/08/2007, 15:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: problemas al buscar con caracteres en blanco

Que codigo estas utilizando?

Saludos.
  #3 (permalink)  
Antiguo 13/08/2007, 15:21
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: problemas al buscar con caracteres en blanco

php con ajax
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #4 (permalink)  
Antiguo 13/08/2007, 15:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: problemas al buscar con caracteres en blanco

Me refiero al codigo que estas utilizando para la busqueda, no puedo adivinar el porque no funciona si no muestras el codigo.

Saludos.
  #5 (permalink)  
Antiguo 13/08/2007, 15:26
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Re: problemas al buscar con caracteres en blanco

usa comodines... si puedes pegar la pate del codigo de la consulta para buscar seria mucho mejor. Saludos
__________________
Hospedaje Web al mejor costo!
  #6 (permalink)  
Antiguo 13/08/2007, 16:34
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: problemas al buscar con caracteres en blanco

Este es el codigo y tengo una funcion buscar que la llamauna funcion ajax

Código PHP:
<?
    
include("../config/conexion.php"); 
       
$link conectar(); 

    
$busqueda=$_POST['busqueda'];
    
// Debo preparar los textos que voy a buscar si la cadena existe
    
if ($busqueda<>'')
    {
        
//Cuenta el numero d epalabras
        
$trozos=explode(" ",$busqueda);
        
$numero=count($trozos);
        if (
$numero==1
        {
            
$cadbusca="SELECT * FROM facturacion_computador WHERE 
            empresas LIKE '%$busqueda%' 
            OR departamentos LIKE '%$busqueda%' 
            OR usuario LIKE '%$busqueda%' 
            OR sector LIKE '%$busqueda%' 
            OR fono_anexo 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 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 lector_computador LIKE '%$busqueda%' 
            OR grabador_computador LIKE '%$busqueda%' 
            OR teclado_computador LIKE '%$busqueda%' 
            OR mouse_computador LIKE '%$busqueda%' 
            OR windows_computador LIKE '%$busqueda%' 
            OR office_computador LIKE '%$busqueda%' 
            LIMIT 5;"
;
        }
        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, fono_anexo, numero_factura, firstinput, fecha_recibo, realizado_por, proveedor, nombre_cliente, solicitado_por, despacho_pedido, secondinput, monitor_computador, marca_computador, procesador_computador, disco_duro_computador, memoria_ram_computador, grabador_computador, lector_computador, teclado_computador, mouse_computador, windows_computador, office_computador ) AGAINST ( '$busqueda' ) 
            AS Score FROM facturacion_computador WHERE MATCH ( empresas, departamentos, usuario, sector, fono_anexo, numero_factura, firstinput, fecha_recibo, realizado_por, proveedor, nombre_cliente, solicitado_por, despacho_pedido, secondinput, monitor_computador, marca_computador, placa_madre_computador, procesador_computador, disco_duro_computador, memoria_ram_computador, grabador_cd_computador, grabador_dvd_computador, teclado_computador, mouse_computador, windows_computador, office_computador, total ) 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);
        
$i=1;
        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['firstinput']."</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='95' class='textarea' align='left'>".$row['realizado_por']."</td>";
            echo 
"<td width='95' class='textarea' align='left'>".$row['solicitado_por']."</td>";
            echo 
"<td width='95' class='textarea' align='left'>".$row['usuario']."</td>";
            echo 
"<td width='95' class='textarea' align='left'>".$row['proveedor']."</td>";
            echo 
"<td width='70' 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='10' height='10' 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='10' height='10' title='MODIFICAR INVENTARIO'></a></td>";  
            echo 
"<td width='16' class='textarea' align='left'> <a href='../computador/eliminar.php?numero_factura=".$row['numero_factura']."'target=\"_blank\"><img src='../imagen/eliminar.png' width='10' height='10' title='ELIMINAR INVENTARIO'></a></td>";  
            echo 
"<td width='16' class='textarea' align='left'> <a href='../reportes/plantilla_pc_rtf.php?numero_factura=".$row['numero_factura']."'target=\"_blank\"><img src='../imagen/impresora.gif' width='10' height='10' title='REPORTE INVENTARIO'></a></td>";  
            echo 
"</tr>";
            echo 
"</tabla>";

        
$i++;
        }
    }
?>
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #7 (permalink)  
Antiguo 13/08/2007, 16:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: problemas al buscar con caracteres en blanco

Cambia esta linea:
Código PHP:
$result=mysql_query($cadbusca$link); 
Por:
Código PHP:
$result=mysql_query($cadbusca$link) or die( mysql_error() ); 
  #8 (permalink)  
Antiguo 14/08/2007, 09:10
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: problemas al buscar con caracteres en blanco

ahora me dice

Can't find FULLTEXT index matching the column list
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #9 (permalink)  
Antiguo 14/08/2007, 11:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: problemas al buscar con caracteres en blanco

Eso te esta indicando que los campos por los que quieres buscar no tienen un indice FULL TEXT para poder hacer un MATCH... AGAINST...

Saludos.
  #10 (permalink)  
Antiguo 14/08/2007, 12:39
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: problemas al buscar con caracteres en blanco

y como lo pueod solucionar e intentado modificar desde mysql pero sigue igual
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #11 (permalink)  
Antiguo 14/08/2007, 12:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: problemas al buscar con caracteres en blanco

Necesitas crear los indices full text, desde PHPMyAdmin puedes agregarle la opcion de Full Text a los campos que necesites.

Saludos.
  #12 (permalink)  
Antiguo 16/08/2007, 07:33
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: problemas al buscar con caracteres en blanco

le asigno le FULLTEXT desde phpmyadmin y no funciona no entiendo que puede ser este es el codigo de buscar.

Código PHP:
<?
    
include("../config/conexion.php"); 
       
$link conectar(); 

    
$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 facturacion_computador WHERE 
            empresas LIKE '%$busqueda%' 
            OR departamentos LIKE '%$busqueda%' 
            OR usuario LIKE '%$busqueda%' 
            OR sector LIKE '%$busqueda%' 
            OR fono_anexo 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 lector_computador LIKE '%$busqueda%' 
            OR grabador_computador LIKE '%$busqueda%' 
            OR teclado_computador LIKE '%$busqueda%' 
            OR mouse_computador LIKE '%$busqueda%' 
            OR windows_computador LIKE '%$busqueda%' 
            OR office_computador LIKE '%$busqueda%' 
            LIMIT 5;"
;
        }
        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, fono_anexo, 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, teclado_computador, mouse_computador, windows_computador, office_computador ) AGAINST ( '$busqueda' ) 
            FROM facturacion_computador WHERE MATCH ( empresas, departamentos, usuario, sector, fono_anexo, 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, lector_computador, grabador_computador, teclado_computador, mouse_computador, windows_computador, office_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>";
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #13 (permalink)  
Antiguo 16/08/2007, 07:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: problemas al buscar con caracteres en blanco

Que tipo de tabla estas utilizando? Si bien tienes que agregarle el indice FULL TEXT a todos los campos que vas a buscar, adicionalmente estos campos deben de ser de tipo TEXT.

Saludos.
  #14 (permalink)  
Antiguo 16/08/2007, 09:03
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: problemas al buscar con caracteres en blanco

que tipo de tabla debo usar estoy usando MyISAM, cual es la correcta. gracias.
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #15 (permalink)  
Antiguo 16/08/2007, 09:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: problemas al buscar con caracteres en blanco

Esta bien MyISAM, deberias de leer la documentacion de MySQL para ver cuantos indices FULLTEXT puedes agregar a una tabla, yo veo que son demasiadas columnas en las que estas tratando de agregar un FULLTEXT y es por lo que te crea el error.

Saludos.
  #16 (permalink)  
Antiguo 16/08/2007, 11:33
Avatar de monjeruiz  
Fecha de Ingreso: junio-2007
Ubicación: Santiago, Chile
Mensajes: 113
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: problemas al buscar con caracteres en blanco

cree los cambios pero necesito hacer una busqueda de mas de 10 campos diferentes y no funciona con muxos como lo puedo hacer
__________________
[B]Ingeniero en Informatica
Jose Monje Ruiz [/b]
  #17 (permalink)  
Antiguo 16/08/2007, 12:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: problemas al buscar con caracteres en blanco

Necesitas pensar bien en el disenio de tu tabla, creo que para buscar en mas de 10 campos full text no es lo mejor ya que consumen muchos recursos por los algoritmos de busqueda, asi que debes de plantear mejor que es lo que quieres obtener.

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 04:00.