Foros del Web » Programando para Internet » PHP »

arrays de campos MySQL

Estas en el tema de arrays de campos MySQL en el foro de PHP en Foros del Web. Hola a todos: Tengo un basico buscador que me da posibilidades de coincidencia al no encontrar ningun resultado en la busqueda. Todo v bien pero ...
  #1 (permalink)  
Antiguo 09/03/2008, 14:58
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 20 años, 7 meses
Puntos: 16
arrays de campos MySQL

Hola a todos:

Tengo un basico buscador que me da posibilidades de coincidencia al no encontrar ningun resultado en la busqueda. Todo v bien pero estoy restringido a seleccionar solo un campo de busqueda para la coincidencia, me explico.

En la BD tengo un campo de nombres, otro con apellidos, y el ultimo con direccion. El problema esta en que con el array para las coincidencias solo puedo hacer que el ejecutor busque O en nombres, O en apellidos, O en direccion. No se como hacer para que me busque en las 3.

Aca les dejo el codigo que tengo para este buscador:

Código PHP:
($buscar "la palabra que puso el cliente al buscar")

$data = array();
$sqlist mysql_query("SELECT * FROM TABLA ORDER BY nombres ASC");
while(
$d mysql_fetch_assoc($sqlist)) $data[$d['nombres']] = $d['nombres'];
$distancia_mas_corta = -1;
 foreach (
$data as $palabra_actual) {
    
$lev levenshtein($buscar$palabra_actual);
    if (
$lev <= $distancia_mas_corta || $distancia_mas_corta 0) {
        
$palabra_mas_cercana  $palabra_actual;
        
$distancia_mas_corta $lev;
    }
 }
echo 
"Quiz&aacute;s quiso decir:  $palabra_mas_cercana   ?????<br><br>
<center>Su b&uacute;squeda - <b>$buscar</b> - no produjo ning&uacute;n resultado</center><br><br>"
;

Eso es lo que tengo ... si se fijan solo puedo darle un valor a $d[' SOLO UN CAMPO DE LA TABLA ']

mmm... si alguien sabe de algo por favor postee jiji

Muchas Gracias.-
Pablo Araya.-
__________________
Adios ...!!!!
  #2 (permalink)  
Antiguo 09/03/2008, 15:11
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Re: arrays de campos MySQL

Creo que la consulta tendría que ser así ( no estoy seguro )

Código PHP:

$sqlist 
mysql_query(
    
"SELECT * 
     FROM TABLA 
     WHERE nombres LIKE %$nombre_campo_busqueda%
            OR apellidos LIKE %$nombre_campo_busqueda%
            OR direccion LIKE %$nombre_campo_busqueda%     
ORDER BY nombres ASC"
); 
Creo que está mal, pero no creo que pierdas con probar XD
  #3 (permalink)  
Antiguo 09/03/2008, 15:15
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 20 años, 7 meses
Puntos: 16
De acuerdo Re: arrays de campos MySQL

Cita:
Iniciado por BLAH !! Ver Mensaje
...
Tengo un basico buscador que me da posibilidades de coincidencia al no encontrar ningun resultado en la busqueda.
...
Eso es lo que tengo ... si se fijan solo puedo darle un valor a $d[' SOLO UN CAMPO DE LA TABLA ']
...
Muchas Gracias por tu respuesta, pero lamento decirte que el problema no reside ahi. Esta en lo que especifico arriba en la cita . Necesito una forma de dar mas valores a $d[''].
El codigo que tu me estas dando serviria para el buscador en si , no para las relaciones de palabras.

Adios.-!
__________________
Adios ...!!!!
  #4 (permalink)  
Antiguo 09/03/2008, 15:23
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Re: arrays de campos MySQL

Lo lamento... me pasa por no leer bien xD...

Código PHP:

while($d mysql_fetch_assoc($sqlist)) 
{
 
$data[$d['nombres']] = $d['nombres'];
 
$data[$d['apellidos']] = $d['apellidos'];
 
$data[$d['direccion']] = $d['direccion'];

Supongo que eso es lo que pides...

Al hacer esa consulta : SELECT * FROM ... y luego asignas un resultado a un array, este contendrá como índice a cada uno de los campos de la tabla... así que puedes acceder a sus valores de esa misma manera. Ej : $d['nombre'], $d['apellidos'], $d['cualquier_nombre_de_cualquier_campo']

Espero te sirva. Nos vemos. XD
  #5 (permalink)  
Antiguo 09/03/2008, 15:37
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 20 años, 7 meses
Puntos: 16
De acuerdo Re: arrays de campos MySQL

muchas gracias!!!
no es como tu dices pero me diste una idea de como solucionarlo y por fin lo logre , gracias nuevamente ;)
__________________
Adios ...!!!!
  #6 (permalink)  
Antiguo 09/03/2008, 15:47
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Re: arrays de campos MySQL

Cita:
Iniciado por BLAH !! Ver Mensaje
muchas gracias!!!
no es como tu dices pero me diste una idea de como solucionarlo y por fin lo logre , gracias nuevamente ;)
Wajajajajajajja XD

Pero dinos cómo lo lograste XD... así podrás ayudar también =)

Nos vemos.

PD : De nada por haberte inspirado o haberte guiado cómo mínimo XD
  #7 (permalink)  
Antiguo 09/03/2008, 15:52
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 20 años, 7 meses
Puntos: 16
Re: arrays de campos MySQL

no lo habia hecho porque me habia dado lata .... xD
pero ya que me lo pides. ahi va


Código PHP:
$buscar "la palabra que puso el cliente al buscar"

$data = array(); 
$sqlist mysql_query("SELECT * FROM TABLA ORDER BY nombres ASC"); 
while(
$d mysql_fetch_assoc($sqlist))
  
$data[$d['nombres']] = $d['nombres']; 
  
$data2[$d['apellidos']] = $d['apellidos'];
  
$data3[$d['direccion']] = $d['direccion'];  
$distancia_mas_corta = -1
 foreach (
$data as $palabra_actual) { 
    
$lev levenshtein($buscar$palabra_actual); 
    if (
$lev <= $distancia_mas_corta || $distancia_mas_corta 0) { 
        
$palabra_mas_cercana  $palabra_actual
        
$distancia_mas_corta $lev
    } 
 } 
 foreach (
$data2 as $palabra_actual2) { 
    
$lev3 levenshtein($buscar$palabra_actual2); 
    if (
$lev2 <= $distancia_mas_corta || $distancia_mas_corta 0) { 
        
$palabra_mas_cercana  $palabra_actual2
        
$distancia_mas_corta $lev2
    } 
 } 
 foreach (
$data3 as $palabra_actual3) { 
    
$lev3 levenshtein($buscar$palabra_actual3); 
    if (
$lev3 <= $distancia_mas_corta || $distancia_mas_corta 0) { 
        
$palabra_mas_cercana  $palabra_actual3
        
$distancia_mas_corta $lev3
    } 
 } 
echo 
"Quiz&aacute;s quiso decir:  $palabra_mas_cercana   ?????<br><br> 
<center>Su b&uacute;squeda - <b>$buscar</b> - no produjo ning&uacute;n resultado</center><br><br>"


__________________
Adios ...!!!!
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 12:15.