Foros del Web » Programando para Internet » PHP »

busqueda en mi base de datos pero ... InnoDB

Estas en el tema de busqueda en mi base de datos pero ... InnoDB en el foro de PHP en Foros del Web. Hola a todos! Llevo dias intentando hacer un buscador y hasta ahora lo hacia comparando solo con una palabra: $result = mysql_query("SELECT * FROM pizza ...
  #1 (permalink)  
Antiguo 21/01/2008, 06:26
 
Fecha de Ingreso: marzo-2007
Mensajes: 83
Antigüedad: 17 años, 1 mes
Puntos: 0
busqueda en mi base de datos pero ... InnoDB

Hola a todos!

Llevo dias intentando hacer un buscador y hasta ahora lo hacia comparando solo con una palabra:

$result = mysql_query("SELECT * FROM pizza WHERE nombre like '%$buscar%' OR ingredientes like '%$buscar%'");

El problema me surge ahora que quiero realizar una busqueda con una frase introducida por el usuario, con dos palabras por ejemplo. He leido y releido, sobre los fulltext, pero resulta que mi phpmadmin utiliza tecnologia Innodb, cuando lo que necesitaria (segun lo que he leido) seria MyISAM.

Hay alguna alternativa para que pueda buscar mas de una palabra? Podria hacerse 'partiendo' la frase? Pero como podria hacerlo??

Gracias y saludos!
  #2 (permalink)  
Antiguo 21/01/2008, 07:21
 
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 32
Antigüedad: 16 años, 3 meses
Puntos: 1
Re: busqueda en mi base de datos pero ... InnoDB

¿Una búsqueda con dos palabras?
Pues no sé, ¿has probado esto?

Código:
$buscar="esta%es%una%prueba";
$result = mysql_query("SELECT * FROM pizza WHERE nombre like '%$buscar%' OR ingredientes like '%$buscar%'");
  #3 (permalink)  
Antiguo 21/01/2008, 08:53
 
Fecha de Ingreso: marzo-2007
Mensajes: 83
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: busqueda en mi base de datos pero ... InnoDB

El problema es que yo no se el contenido de la variable $buscar, no se cuantas palabras ha introducido el usuario....
  #4 (permalink)  
Antiguo 21/01/2008, 09:00
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Re: busqueda en mi base de datos pero ... InnoDB

MMmm
porque no recorres la cadena de texto con split() o explode() de ahi sacas cuando palabras tiene la cadena..
y luego con unos IFS, ejecutas la consulta adecuada..

seria una forma media incomoda..
pero fue lo que se me ocurrio jaja

saludos!
MC
__________________
Recuerda usar el highlight para mostrar código
mauricioblint.com
  #5 (permalink)  
Antiguo 21/01/2008, 09:09
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: busqueda en mi base de datos pero ... InnoDB

Puedes usar str_replace para separar las palabras y luego en tu buscador usar OR y AND, aunque haces una consulta un tanto ineficiente:
Código:
SELECT * FROM tabla WHERE ( `nombre` LIKE '%$palabra1%' AND `ingredientes` LIKE '%$palabra1%' ) OR ( `nombre` LIKE '%$palabra2%' AND `ingredientes` LIKE '%$palabra2%' )
Saludos.
  #6 (permalink)  
Antiguo 21/01/2008, 14:21
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Re: busqueda en mi base de datos pero ... InnoDB

nose si me equivoco, pero que default tengas InnoDB no implica que no puedas crear tablas MyISAM.... deberias mejor crear tu tabla myisam y utilizar fulltext search.
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
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 18:23.