Foros del Web » Programando para Internet » PHP »

Limitar caracteres de búsqueda y encontrar palabras separadas

Estas en el tema de Limitar caracteres de búsqueda y encontrar palabras separadas en el foro de PHP en Foros del Web. Hola, de antemano muchas gracias por la ayuda. Tengo el siguiente código que quisiera compartir con ustedes y que de igual manera me gustaría que ...
  #1 (permalink)  
Antiguo 22/02/2005, 05:50
Avatar de adriana_  
Fecha de Ingreso: enero-2005
Ubicación: Veracruz
Mensajes: 8
Antigüedad: 12 años, 11 meses
Puntos: 0
Información Limitar caracteres de búsqueda y encontrar palabras separadas

Hola, de antemano muchas gracias por la ayuda. Tengo el siguiente código que quisiera compartir con ustedes y que de igual manera me gustaría que me ayudaran a mejorar:

http://www.oidossordos.net/codigo_buscador.html

lo tengo funcionando aquí:
http://www.oidossordos.net/eventos/
Es el buscador no.1

Es un buscador muy práctico para los usuarios y bonito, pero para mi gusto tiene grandes problemas de los cuales desconosco totalmente la solución, aunque he encontrado códigos sobre "buscadores" en el foro, no sé ni como adaptarlos ni donde colocarlos.
Aquí va la ayuda que les estoy pidiendo.

- No limita el número de caracteres para la búsqueda, entonces si alguién mete 1 caracter o 1 letra se inicia la consulta y salen un sin fin de datos, incluso cuando no metes nada. ¿Cómo se podría limitar la búsqueda a un mínimo de 3 caracteres? y ¿Qué le agregarían para colocar un mensaje de error "utiliza un mínimo de 3 caracteres para tu busqueda" en el cuerpo de la página?.

- Si el usuario escribe Dj Fortran y en la BD está la información como Dj Marco Antonio Fortran, entonces no lo muestra. ¿Qué se le puede cambiar? o ¿qué se le puede agregar?... para que muestre la información con este tipo de problema y además que conserve la función de remarcar o realzar de otro color las palabras que coincidan con el criterio de búsqueda. Los datos están en el mismo campo.

¡¡¡¡¡¡¡¡¡Espero su ayuda!!!!!!!!!! De nuevo muchas gracias de antemano y espero que les sirva el código, cualquier comentario escribanme sin cuidado.

Última edición por adriana_; 22/02/2005 a las 14:56
  #2 (permalink)  
Antiguo 22/02/2005, 06:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Quizá strlen() y explode() te ayuden.
Código PHP:
<?php
$cadena
="1 2 Hola!";
$caracteresstrlen ($cadena);
$divideexplode (" "$cadena);
$j=count($divide);
echo 
"La cadena <b>'".$cadena."'</b> tiene <b>".$caracteres."</b> carácteres y <b>".$j."</b> palabras.<br>";
for(
$i=0$i<$j$i++) {
echo 
"<b>- ".$divide[$i]."<br></b>";
}
?>
- Crearias una condicional tipo if(strlen($algo)<3) {...}
- Podrias hacer las busquedas tipo columna='algo' OR LIKE 'otro_algo'
... lo de la limitación de carácteres también lo puedes hacer con JavaScript... de echo, seria bueno que lo hicieras por los dos lenguajes...

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 22/02/2005, 19:31
Avatar de adriana_  
Fecha de Ingreso: enero-2005
Ubicación: Veracruz
Mensajes: 8
Antigüedad: 12 años, 11 meses
Puntos: 0
Hola

Probé con lo que me pasaste:

" Quizá strlen() y explode() te ayuden.

Código PHP:
<?php
$cadena="1 2 Hola!";
$caracteres= strlen ($cadena);
$divide= explode (" ", $cadena);
$j=count($divide);
echo "La cadena <b>'".$cadena."'</b> tiene <b>".$caracteres."</b> carácteres y <b>".$j."</b> palabras.<br>";
for($i=0; $i<$j; $i++) {
echo "<b>- ".$divide[$i]."<br></b>";
}
?>
- Crearias una condicional tipo if(strlen($algo)<3) {...} - Podrias hacer las busquedas tipo columna='algo' OR LIKE 'otro_algo'

"

Pero la neta después de buscarle y buscarle llegué a la conclusión de que talvez no entiendo ni como ponerlo, ni donde

Ayudaa porfavor!!!!!!!!, que se me cae la base de datos a cada rato.

Ya usé javascript pero no me funciona a como quiero.
  #4 (permalink)  
Antiguo 22/02/2005, 20:21
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por adriana_
(...) Pero la neta después de buscarle y buscarle llegué a la conclusión de que talvez no entiendo ni como ponerlo, ni donde (...)
Pero le entendiste a lo que te puse?? Lo hice para que al ejecutarlo tal como está sea entendible... pero bueno, lo vuelvo a repetir enfocandome más a tu caso y comentando qué hace... para más info sobre las funciones puedes consultarlas en php.net.
Código PHP:
<?php 
$busca
="Pink Floyd"// Lo que se recibe para buscar...
// Primero verificar que haya un mínimo de caracteres. Para eso esta strlen
if(strlen ($busca)<3) {  //lo que te comentaba de la condicional
// no hay carácteres suficientes.. tú sabrás que hacer...por ejemplo
header("Location:anterior.php?error=algo"); // en la página 'anterior' recojes el valor de 'error' y podrias imprimir un mensaje...
}
else { 
// continuamos

// Ahora dividimos en palabras la cadena recibida
$palabraexplode (" "$busca); 

// ahora el problema es construir la query para la busqueda
// como vamos a buscar en un mismo campo podemos ocupar algo como en:
// http://www.forosdelweb.com/showthread.php?t=267358
// consulta el link para más info...

$query="SELECT * FROM tabla WHERE columna ";
for(
$i=0$aux=0;$i<count($busca) ;$i++) { 
      if(
$busca[$i]!=false) { 
     if (
$aux!=0) { 
               
$query.=" OR "
         } 
     
$query.="LIKE '%$busca[$i]%' "
         
$aux++; 
      } 

if (
$aux==false) { 
     echo 
"No hubo criterios de busqueda";
} else { 
echo 
"Query:<br>$query"// la query a ocupar
}
}
?>
Listo, he acompletado el ejemplo.. aunque creo no viste el anterior... Algo así es lo que yo haria; espero me entiendas ahora y puedas adaptarlo a tus necesidades.
Tengo duda es en qué pasaría si mandas puros espacios para buscar... si strlen los toma como carácteres... supongo que sí, pero para eso igual hacemos una comprobación con $aux... y si (incisto) crearas otra comprobación más en JavaScript... ja!...

Suerte! y comentanos los resultados.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 23/02/2005 a las 18:14
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 14:51.