Foros del Web » Programando para Internet » PHP »

Como Realizar Busquedas sin Case Sensitive

Estas en el tema de Como Realizar Busquedas sin Case Sensitive en el foro de PHP en Foros del Web. Hola a todos, estoy trabajando en una aplicación para mostrar resultados y buscar dentro de una base de datos. La cuestión es que todo va ...
  #1 (permalink)  
Antiguo 10/05/2011, 15:15
Avatar de eminem24  
Fecha de Ingreso: julio-2008
Mensajes: 68
Antigüedad: 15 años, 9 meses
Puntos: 0
Busqueda Como Realizar Busquedas sin Case Sensitive

Hola a todos, estoy trabajando en una aplicación para mostrar resultados y buscar dentro de una base de datos. La cuestión es que todo va genial pero tengo que buscar las palabras con case sensitive, si busco un usuario que se llama "Pepe" y busco "pepe" no lo encuentra.

Que solución hay para eso? he buscado en la red y he encontrado una respuesta que no me acaba de convencer. Y es añadiendo una codificación en los campos de la base de datos, o eso creo. Hablan de utf8_general_ci que hay que añadirlo en los campos y dicen que así después busca sin case sensitive. Pero yo estoy usando una base de datos de phpbb y no quiero modificar nada porque eso ya está hecho porque buscando dentro de phpbb no es case sensitive.

Aquí dejo el método que estoy usando para la aplicación:


Código PHP:
<?
// Parte de la página del formulario

echo '<form action="resultados-busqueda.php" method="post">
      <select name="tipobusqueda">
      <option value="username">Artista
      <option value="real_filename">Título
      </select>
      <input name="terminobusqueda" type=text>
      <input type=submit value="Buscar">
      </form><div style="margin:10px 0;"></div>'
;

//////

// Parte de resultados-busqueda.php

$tipobusqueda=$_POST['tipobusqueda'];
$terminobusqueda=$_POST['terminobusqueda'];

$db mysql_pconnect("localhost""root""pass");

mysql_select_db("nombre_db");

if(
$tipobusqueda=="real_filename")
{
    
$consulta "SELECT * FROM phpbb_attachments WHERE ".$tipobusqueda." LIKE '%".$terminobusqueda."%'";
}
if(
$tipobusqueda=="username")
{
    
$consulta "SELECT * FROM phpbb_users WHERE ".$tipobusqueda." LIKE '%".$terminobusqueda."%'";
}

//////
?>

He puesto solo la parte de código del sistema de búsqueda para simplificarlo y que se vea más claro.
  #2 (permalink)  
Antiguo 10/05/2011, 15:22
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Como Realizar Busquedas sin Case Sensitive

No tiene tanto que ver el juego de caracteres.
De hecho, por defecto mysql debería buscar y encontrar siendo insensible a mayúsculas, a menos que explícitamente indiques que el campo es de tipo binario.

Aunque ahora que lo pienso, quizá si tenga algo que ver si pusiste tu campo como utf8_bin...
  #3 (permalink)  
Antiguo 10/05/2011, 15:27
Avatar de eminem24  
Fecha de Ingreso: julio-2008
Mensajes: 68
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Como Realizar Busquedas sin Case Sensitive

Pues mira para las dos páginas uso charset=utf8_general_ci que precisamente lo puse por lo mismo haber si algo variaba porque tenía utf-8.

No hay alguna función de php o mysql para solucionar eso?

gracias por la respuesta, un saludo!
  #4 (permalink)  
Antiguo 10/05/2011, 15:31
Avatar de eminem24  
Fecha de Ingreso: julio-2008
Mensajes: 68
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Como Realizar Busquedas sin Case Sensitive

ah pero para el campo la verdad es que no se lo que hay, ahora lo miraré. Pero como comentaba uso la base de datos de un foro phpbb y eso (sea lo que sea) ya lo tienen solucionado porque dentro del foro el buscador busca sin case sensitive. Por eso estoy convencido de que debe haber alguna función o algún sistema que será el que han utilizado en phpbb.

Yo seguiré investigando por mi cuenta pero como soy bastante novato pues ya se sabe... me cuesta

un saludo ;)
  #5 (permalink)  
Antiguo 10/05/2011, 15:35
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Como Realizar Busquedas sin Case Sensitive

Es como tienes las estructura de tu tabla. Aparte del set de caracteres, si tu campo tiene el atributo de ser tipo binario (binary) hará el case sensitive. Esto es independiente de php, es sólo como está declarado tu campo.

De hecho, la mayoría pregunta por el caso contrario, como buscar con case sensitive para evitar logins tipo USUARIO en vez de usuario.
  #6 (permalink)  
Antiguo 10/05/2011, 15:40
Avatar de eminem24  
Fecha de Ingreso: julio-2008
Mensajes: 68
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Como Realizar Busquedas sin Case Sensitive

Pues has dado en el clavo amigo, he mirado y están como utf8-bin. Entonces tendría que cambiar eso? y si es que si entonces como se lo han montado los de phpbb para hacerlo sin cambiar eso?

gracias
  #7 (permalink)  
Antiguo 10/05/2011, 15:55
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Como Realizar Busquedas sin Case Sensitive

Desconozco como sea la estructura de l as tablas que maneja phpbb, te recuerdo, el atributo binario es independiente del cotejamiento o set de caracteres.
Verifica primero si tu campo tiene el atributo binario, ya que nunca he trabajado con el set utf8_bin, ignoro si éste afecte las búsquedas. Yo uso utf8_unicode_ci, sin atributo binario, excepto cuando lo requiero, como en mi tabla de usuarios.

Etiquetas: busquedas, case, realizar
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 04:05.