Foros del Web » Programando para Internet » PHP »

Busqueda y comas

Estas en el tema de Busqueda y comas en el foro de PHP en Foros del Web. Hola! De nuevo yo. Tengo una duda, tengo un campo de la BD en el cual se ingresa un dato del tipo "perez gomez, jorge ...
  #1 (permalink)  
Antiguo 14/11/2008, 11:26
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 17 años, 9 meses
Puntos: 0
Busqueda y comas

Hola!
De nuevo yo.
Tengo una duda, tengo un campo de la BD en el cual se ingresa un dato del tipo "perez gomez, jorge oscar". No puedo separarlos en dos campos nombre y apellido.
Al hacer una busqueda desde un formulario....anda barbara, siempre y cuando busque un solo apellido, un solo nombre, o combinados pero siempre que ponga dos apellidos o dos nombres. Si pongo "jorge perez", no lo trae.
Seguramente sea por la coma y se solucione con un explode, pero no se bien como redactar el codigo.
Alguien tiene algo similar ya escrito? GRACIAS!
  #2 (permalink)  
Antiguo 14/11/2008, 11:39
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: Busqueda y comas

yo haria un explode de lo que se digito

Código PHP:
<?
$var 
explode(' ',"Jorge Perez");
?>
ahora en un while o colmo quiera hacerlo va generando la condicion where camponombrecompleto like '$var[0]' and ......
  #3 (permalink)  
Antiguo 14/11/2008, 11:48
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Busqueda y comas

pero si haces la consulta a una base de datos y ocupas mysql o sql... seria mas sencillo si ocupas un like en la misma consulta en vez de realizar por codigo php.

select nombre_completo from base where nombre_completo like '%jorge%perez%'

kizas te saldria mas facil... por codigo php hacerlo... la verdad nuna lo he buscado por mas de una parte del valor.


ahora kizas,,, prueba estos.. aun que no lo he probado
Código php:
Ver original
  1. <?
  2. $cadena = "perez gomez, jorge oscar";
  3. if(stristr($cadena, 'jorge') === TRUE and stristr($cadena, 'perez') === TRUE)
  4. {
  5. echo "encontro el nombre";
  6. }
  7. ?>



atte Patux

Última edición por PATUX; 14/11/2008 a las 11:59 Razón: colocar cuadro
  #4 (permalink)  
Antiguo 14/11/2008, 13:59
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Busqueda y comas

Pues o no los entiendo o no le veo la solución al tema así como me dicen.
Los datos ya están en la base ok? Con el formato "lastname lastname, name name" en general. Otros solo tienen un nombre, y así....lo único que hago yo es buscar gente dentro de la misma mediante un form, el buscador anda re bien, solo que no trae ningun resultado si busco la opción "nombre lastname" (ya sea "juan perez" o "garcía Juana") por el problema de que están separados por coma guardados en la base....

Espero haber sido mas clara, soy un desastre.

Gracias de nuevo.
  #5 (permalink)  
Antiguo 14/11/2008, 14:10
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Respuesta: Busqueda y comas

No sé como estás armando el where, pero en el ejemplo que das debería quedarte algo como:

Código sql:
Ver original
  1. SELECT
  2.  *
  3. FROM
  4.  tuTbl
  5. WHERE
  6.  (
  7.   nombre LIKE '%juan%'
  8.  AND
  9.   nombre LIKE '%perez%'
  10.  )

Eso si comprendí bien tu necesidad. Para conseguirlo parsea tu string con un explode por el espacio y dentro de un for vas armando tu condicional.

Saludos.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #6 (permalink)  
Antiguo 14/11/2008, 14:33
Avatar de foreverOdd  
Fecha de Ingreso: noviembre-2007
Ubicación: Caracas
Mensajes: 489
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Busqueda y comas

Tal como te dijeron:

<?
$var = explode(' ',"Jorge Perez");

//$var[0] es igual a Jorge
//$var[1] es igual a Perez


?>

si estan separados por comas o caulaquiero otro caracter haces:

$var = explode('ACA EL CARACTER QUE SEPARA',"Jorge Perez");

Suerte
__________________
My path is lit by my own fire, I only go where I desire
  #7 (permalink)  
Antiguo 14/11/2008, 14:45
 
Fecha de Ingreso: noviembre-2008
Mensajes: 67
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Busqueda y comas

Cita:
Iniciado por nicolaspar Ver Mensaje
No sé como estás armando el where, pero en el ejemplo que das debería quedarte algo como:

Código sql:
Ver original
  1. SELECT
  2.  *
  3. FROM
  4.  tuTbl
  5. WHERE
  6.  (
  7.   nombre LIKE '%juan%'
  8.  AND
  9.   nombre LIKE '%perez%'
  10.  )

Eso si comprendí bien tu necesidad. Para conseguirlo parsea tu string con un explode por el espacio y dentro de un for vas armando tu condicional.

Saludos.
Tal como dice el compadre aqui es una opcion valida... como colocar dentro del where tb nombre like '%juan%perez%'


lo otro lo probe... con codigo php en caso que quieras validar por codigo php que esten los dos nombre sin la necesidad de hacer explode. for ni while simple

Código php:
Ver original
  1. $cadena = "perez gomez, jorge oscar";
  2.  
  3. //si ves, busco el primer nombre y el primer apellido.
  4.  
  5.     if(stristr($cadena, "jorge") === FALSE or stristr($cadena, "perez") === FALSE  )
  6.      {
  7.         echo " no encontro el nombre";
  8.      }
  9.      else
  10.      {
  11.         echo "si lo encontro";
  12.      }

en el codigo es re simple.... en la cadena
tengo el nombre y el apellido.... y solo hago una pregunta invertida... y listo... lo probe y funka... ahora.... si kiere hacer la comparacion

"jorge perez" buscar en ""perez gomez, jorge oscar" con alguna funcion php... te dire ke es redificil encontrar alguna.


mejor hace las consultas atravez de sql... mejor y simple... si aun no es lo que quieres.. es que realmente no sabemos que quieres o no se te entiende...

Atte PATUX

Última edición por PATUX; 14/11/2008 a las 14:47 Razón: mmm razones
  #8 (permalink)  
Antiguo 14/11/2008, 16:31
Avatar de solecoza  
Fecha de Ingreso: julio-2006
Mensajes: 126
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: Busqueda y comas

Si, claro, era en mySQL.
Muchas gracias por las ayudas de todos....
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:56.