| ||||
mmmmmmmm A que te refieres con campos generales y conceptuales? lo que tu quieres hacer es una búsqueda? en que? en una base de datos? sin esa información es dificil esbozar una respuesta.
__________________ :pensando:hay algo mal que no anda bien |
| |||
Te refieres a .. por ejemplo tener unos radio-buttons en el formulario q determinen la forma de presentar esos datos; ASCendente o DEScendente ... y como buscar una frase completa o por palabras? .. algo así? Si es eso .. a nivel general .. se trataria de fomar un "string" q será la consulta a realizar con las instrucciones SQL pertinentes ... Un ejemplo .. si necesitamos buscar todas las palabras aparecidas en una frase de busqueda (no solo la frase tal cual) .. podriamos usar la sentencia IN() de Mysql . e "inyectarle" un array con las palabras de la frase .. Para determinar ese array .. podemos hace un split() (PHP) del $string de partida .... Ves concretando ejemplos de lo que quieres para el buscador y vamos viendo soluciones .. igual si se anima la gente de aquí sacamos algun algoritmo de busqueda generico ... Un saludo, |
| ||||
Mas o menos eso que dices cluster Solo falta concretarlo, por ejemplo: Quiero hacerlo de manera general (todas la tabla x) Y tambien de un campo en especifico (Palabra(s) en tabla especifica). Me imagino que para esto ultimo se puede usar una especie de LIKE. Pero mas Sui generis. Espero y saquemos mucho provecho de esto, un saludo... PD... Lo estoy sacando para los sistemas de noticias que tengo en: |
| ||||
Creo que IN() no iria para este caso, no es la manera en la que funciona esa funcion de mysql, ya que no podemos saber si alguna de esas palabras esta en el campo puntual, o sea, IN normalmente se usa
Código:
pero no podemos hacer algo del estiloselect ... where id in(1,2,3,4)
Código:
porque esto va a comparar el contenido de cuerpo con cada palabra del array por separado, y con la palabra completa.select ... where cuerpo in('palabra1','palabra2') Lo que si podemos hacer, es armar una consulta un tanto mas extensa, que concatene un LIKE por cada palabra para cada campo a registrar, algo del estilo:
Código:
seria un código sencillo de realizar, se hace un split de la cadena de busqueda, y un bucle que recorre el resultado armando el where del select.select ... where campo1 like '%palabra1%' or campo1 like '%palabra2%'; saludos chubu
__________________ :pensando:hay algo mal que no anda bien |
| ||||
Me diste una idea... Que tal si hacemos algo como tu dices, pero asi: Código PHP: Código PHP: Código PHP: |
| ||||
Código:
estaría bien, peroselect ... where contenido like '%palabra1%'
Código:
no funcionaria, porque en la funcion IN no podes usar wildcards (el caracter '%' o el caracter '_'), esa funcion compara por cadenas exactamente iguales select ... where titulo in('%palabra1%')
__________________ :pensando:hay algo mal que no anda bien |
| |||
Bueno .. a esto es lo q me referia en un punto de mis comentarios .. al tema de generar dinamicamente una serie de instrucciones SQL para obtener el objetivo final .. En este caso .. buscar palabra(s) en un campo determinado. Código PHP: |
| ||||
Foro Rojo Acabo de estrenar los parametros en http://www.ladodos.com/buscar.php y da el resultado que esta a continuacion: dare mi código para que se den mas referencia: Código PHP: |
| |||
El error q te dá es porque el algorimo q reliza la concatenacion de esas palabras de la frase a buscar mete un AND de mas al final de toda cadena generada ... El código ese no es mio y lo puse como orientación .. falta refinar el algoritmo para q o bien quitar el ultimo AND generado o no generarlo .. Tal vez un bucle "FOR" le va mejor para este caso despues de haber usado un split() por ejemplo para separar las palabras en un array (y contarlas count() ...) Un saludo, |