Foros del Web » Programando para Internet » PHP »

Buscador php-mysql

Estas en el tema de Buscador php-mysql en el foro de PHP en Foros del Web. Hola amigos, Estoy trabajando en un buscador php-mysql. Tengo el siguiente código: $result = mysql_db_query(db, "SELECT * FROM tabla Where $tipo='$buscar'") or die ("Database Error"); ...
  #1 (permalink)  
Antiguo 22/02/2010, 10:47
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 2
De acuerdo Buscador php-mysql

Hola amigos,

Estoy trabajando en un buscador php-mysql. Tengo el siguiente código:



$result = mysql_db_query(db, "SELECT * FROM tabla Where $tipo='$buscar'")
or die ("Database Error");



El problema es que por ejemplo, si tipo es igual a los apellidos y pongo pérez, me dice que no hay nada pues no he puesto el apellido entero (por ej: pérez garcía).

Soy nuevo en esto del php y no se como hacerlo. Puede ser con un select like??

Gracias por orientarme.
  #2 (permalink)  
Antiguo 22/02/2010, 10:53
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Buscador php-mysql

Sí, puedes hacerlo mejor con LIKE, con expresiones regulares (SQL) o incluso con búsquedas FULLTEXT INDEX. Te tiré puntas para que investigues por tu cuenta; lo más sencillo desde luego es LIKE. Puedes ayudarte con la referencia oficial de MySQL. ¡Suerte!
  #3 (permalink)  
Antiguo 22/02/2010, 10:53
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 5 meses
Puntos: 25
Pregunta Respuesta: Buscador php-mysql

ERRRORR!!! es tipo, no $tipo XD

claroooo, un like !!!

si pones

Código PHP:
SELECT FROM tabla Where tipo='$buscar' 
solo te mostrar lo registros que tengan EXACTAMENTE la palabra de la variable $buscar...

Código PHP:
$variable "conejo"
SELECT FROM tabla Where tipo like '$buscar%' 
te buscara tooodos los tipos que EMPIEZEN con CONEJO

Código PHP:
$variable "conejo"
SELECT FROM tabla Where tipo like '%$buscar' 
te buscara tooodos los tipos que TERMINEN con CONEJO

Código PHP:
$variable "conejo"
SELECT FROM tabla Where tipo like '%$buscar%' 
te buscara tooodos los tipos que TENGAN LA PALABRA CONEJO
__________________
blog: hector2c.wordpress.com
email: [email protected]
  #4 (permalink)  
Antiguo 22/02/2010, 10:58
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Buscador php-mysql

Hector2c: creo que quiere poder comparar cualquier campo, no el campo "tipo", sino que la variable $tipo contenga el nombre del campo a comparar. ¡Suerte!

PD: aclarar además que
Código SQL:
Ver original
  1. tipo LIKE 'conejo'
es distinto de
Código SQL:
Ver original
  1. tipo='conejo'
, puesto que el LIKE no diferencia mayúsculas de minúsculas (y no recuerdo qué ocurre con letras acentuadas, diéresis, acentos, etc.).
  #5 (permalink)  
Antiguo 22/02/2010, 11:01
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 5 meses
Puntos: 25
Respuesta: Buscador php-mysql

aaaaaaaa, tienes razon dggluz... entonces deja el $tipo ahi, jejejeje, con el like funcionara ._.
__________________
blog: hector2c.wordpress.com
email: [email protected]
  #6 (permalink)  
Antiguo 22/02/2010, 11:03
 
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires
Mensajes: 31
Antigüedad: 16 años
Puntos: 0
Respuesta: Buscador php-mysql

Me parece que se refiere a que $tipo define el criterio de busqueda, por ejemplo "nombre", "apellido"

entonces con esa busqueda supongo que leerá $tipo de $_POST, posiblemente de un radio en el formulario.

Entonces, eso no está mal en principio. El problema de la búsqueda se resuelve como te han dicho. Con LIKE

pero ojo la con seguridad en 2 puntos ahí:

1) tenés que hacer segura la busqueda, antés de mandar $buscar a la consulta primero:
$buscar = mysql_realescape_string($buscar)

de esta manera te asegurás de que no te metan porquerias que to hagas desastres en la base de datos

2) cuidado con $tipo tambien. Yo me aseguraría que tenga un valor que esperas, algo del tipo:
if (($tipo != 'nombre') && ($tipo != 'apellido')) { $tipo = 'nombre' ; }

así, sin no trae un valor correcto lo arreglas a la fuerza.

Lo importante de entender es que aún si $tipo lo estás leyendo de un radio, o lo que fuera podrían mandarte igualmente cualquier valor.

saludos espero te sirva
  #7 (permalink)  
Antiguo 22/02/2010, 11:09
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Buscador php-mysql

Muchísimas gracias a todos! Sois los mejores! Gracias a vuestra ayuda ya me funciona!

Gracias de nuevo!


PD: Sí tipo es el criterio de la búsqueda y buscar la variable a encontrar. Tendré en cuenta lo de la seguridad.
  #8 (permalink)  
Antiguo 22/02/2010, 11:52
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 7 meses
Puntos: 1
Respuesta: Buscador php-mysql

Hola a todos,

Yo estoy desarrollando un buscador también y tengo una duda. Hasta ahora yo usaba el típico:

Código PHP:
SELECT FROM tabla WHERE TITULO LIKE '%$variable%' 
Pero claro, tengo el problema de que si por ejemplo pongo, astro, me encuentra coincidencias en noticias que en el titulo pos contiene la palabra astronauta.

Pero claro, es que si pongo TITULO LIKE '$variable', si tengo una noticias con el TITULO -> Un nuevo astro ha sido descubierto, entonces no me lo va a encontrar.

Entonces mi pregunta es: como puedo hacer en MySQL, para que encuentre coincidencias en palabras enteras?

Un saludo!
  #9 (permalink)  
Antiguo 22/02/2010, 12:29
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Buscador php-mysql

Con expresiones regulares (REGEXP). ¡Suerte!
  #10 (permalink)  
Antiguo 22/02/2010, 14:21
 
Fecha de Ingreso: octubre-2005
Mensajes: 240
Antigüedad: 18 años, 7 meses
Puntos: 1
Respuesta: Buscador php-mysql

No sabía que existían expresiones regulares en SQL, hasta ahora las había usado en PHP y Javascript.

Miraré a ver como funcionan, gracias por la sugerencia amigo.

Un saludo

Etiquetas: php-mysql, buscadores
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 10:11.