Foros del Web » Programando para Internet » PHP »

consulta mysql con LIKE devuelve vacio con simbolos

Estas en el tema de consulta mysql con LIKE devuelve vacio con simbolos en el foro de PHP en Foros del Web. Buenas, Seguramente leyendo el titulo del tema pensarán que se trata de otro tema mas sobre las COLLATION en mysql, espero que no. Les cuento ...
  #1 (permalink)  
Antiguo 14/01/2010, 00:05
 
Fecha de Ingreso: agosto-2008
Mensajes: 10
Antigüedad: 15 años, 8 meses
Puntos: 0
consulta mysql con LIKE devuelve vacio con simbolos

Buenas,

Seguramente leyendo el titulo del tema pensarán que se trata de otro tema mas sobre las COLLATION en mysql, espero que no.

Les cuento mi problema.. tengo una base de datos por ejemplo de usuarios que tienen un nombre entonces hago un WHERE nombre LIKE '%peña%' y me devuelve un array sin elementos.

La BD esta con cotejamiento utf8_general_ci , probe con latin tamb y variaciones de utf8 ... veo claramente desde phpmyadmin que el usuario tiene de nombre : peña y lo veo tal cual sin nigun chirimbolo raro, los archivos estan creados con netbeans bajo el charset utf-8 y en el HTML tengo: <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

Digo lo del HTML porque en realidad mi ejemplo con peña no es tal cual lo hago yo, pero es lo mismo, porque lo que hago en realidad es
WHERE nombre LIKE '%$textbox%' donde $textbox es lo que puse en el textbox html que tengo antes de enviar todo al php , entonces debuggueando vi que textbox contiene correctamente la palabra "peña".

Ayuda! todo está funcionando OK ya que si hago un usuario de nombre pena y busco pena me encuentra perfect.

Gracias
  #2 (permalink)  
Antiguo 14/01/2010, 07:33
 
Fecha de Ingreso: abril-2008
Mensajes: 435
Antigüedad: 16 años
Puntos: 10
Respuesta: consulta mysql con LIKE devuelve vacio con simbolos

podrias poner el codigo? asi seria mas facil

saludos
  #3 (permalink)  
Antiguo 14/01/2010, 09:20
 
Fecha de Ingreso: agosto-2008
Mensajes: 10
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: consulta mysql con LIKE devuelve vacio con simbolos

Antes de poner el código y como me interesa demasiado poder resolver esto.. les voy a dejar unas imagenes para que vean o entiendan mejor que es lo que me pasa:

En esta les muestro que el livesearch tiene el mismo problema :P y que al poner Pena me sale Peña también.


Pero fijense cuando digito Peña.. nada.. usemos el boton buscar


Al usar el buscador con la palabra Peña.. Ups!


Pero si en lugar de eso ponemos Pena.. mismo comportamiento que el livesearch.



Ahora si, el código para que me puedan ayudar mejor:

en mi index.tpl
#############
Código HTML:
 <form action="modules/paciente/search.php" method="post">
                            <div id="row">
                            <label for="paciente">Buscar paciente:</label><br />
                            <input type="text" id="paciente" name="txtPaciente" autocomplete="off" onkeyup="getData(this.value);" /> <input type="submit" class="button_buscar" value="" /><br />
                            <div id="ajaxresults"></div>
                            </div>
                        </form> 
Es un simple formulario con una caja de texto y un boton de buscar, el cual tiene implementado un livesearch pero que no jode en nada.

en el search.php (posteado por el formulario al hacer click en buscar) , les deje comments en el codigo para que entiendan mejor :)
############
Código PHP:
$paciente $_POST['txtPaciente'];

$datos_paciente explode(' '$paciente); //separa por espacio los nombres

$sql "SELECT id,nombre,direccion,telefonos,email
                    FROM Paciente
                    WHERE nombre LIKE '%"
.$datos_paciente[0]."%'";

for(
$i=1$i<count($datos_paciente); $i++)
{
 
$sql .= " AND nombre LIKE '%".$datos_paciente[$i]."%'";
}

$query $DBLayer->query($sql); //me devuelve un array de objetos con los datos
$num_res $DBLayer->count_result($query);

//cuando busco algo que tenga ñ num_res me vale 0 :(
if($num_res == 0)
{
    
$tpl->assign('flash_message',$helper->flash_message('warning''La búsqueda ha finalizado sin resultados.'));
}else
{
    
$cols = array('Nombre','Direcci&oacute;n','Telefonos','Acci&oacute;n');
    
$tpl->assign('table_head',$helper->make_table_head($cols));
}

//recorro el array de objetos
foreach($query as $paciente)
{
    
$tpl->newBlock('list_results');
    
$tpl->assign('paciente_nombre',$helper->text_encode($paciente->nombre));
    
$tpl->assign('paciente_direccion',$helper->text_encode($paciente->direccion));
    
$tpl->assign('paciente_telefonos',$helper->text_encode($paciente->telefonos));
    
$tpl->assign('paciente_email',$helper->text_encode($paciente->email));

Espero me puedan ayudar, como dije anteriormente todo lo tengo en UTF-8 , la BD también y probe con latin1 y con utf8_spanish_ci pero sigue igual.

Gracias de antemano :)
  #4 (permalink)  
Antiguo 14/01/2010, 09:26
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 16 años, 7 meses
Puntos: 20
Respuesta: consulta mysql con LIKE devuelve vacio con simbolos

Recien inicies la conexión con mysql, prueba ejecutando lo siguiente:

Código PHP:
Ver original
  1. //.. conexion
  2. mysql_query("SET NAMES 'UTF8'");

Aqui mas información.
__________________
I see dead pixels

Última edición por SergeMedina; 14/01/2010 a las 09:27 Razón: Olvide poner un link
  #5 (permalink)  
Antiguo 14/01/2010, 09:41
 
Fecha de Ingreso: agosto-2008
Mensajes: 10
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: consulta mysql con LIKE devuelve vacio con simbolos

Muchas gracias por la pronta respuesta, eso casi que resolvió mi problema.

Ahora la "ñ" funciona pero no me la distingue de la "n" , por lo que lei.. hay q manejar la collation latin1_spanish_ci , le cambie el cotejamiento a mi BD y tabla.. pero, sin resultados.. y le agregue al mysql query COLLATION['latin1_spanish_ci'] y lo q resultó fue q la ñ se veia con un signo de pregunta.. y es bastante logico.

Si alguien sabe como resolver esto, porfavor estaria agradecido.

Saludos
  #6 (permalink)  
Antiguo 14/01/2010, 09:47
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 16 años, 7 meses
Puntos: 20
Respuesta: consulta mysql con LIKE devuelve vacio con simbolos

Es decir que si pones "Peña" y "Pena" te arroja el mismo resultado?
__________________
I see dead pixels
  #7 (permalink)  
Antiguo 14/01/2010, 10:00
 
Fecha de Ingreso: agosto-2008
Mensajes: 10
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: consulta mysql con LIKE devuelve vacio con simbolos

Exactamente..

Si pongo Pena en el livesearch me muestra Rodriguez Peña y Rodriguez Pena, idem para cuando efectúo la búsqueda.
  #8 (permalink)  
Antiguo 14/01/2010, 10:12
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 16 años, 7 meses
Puntos: 20
Mmmm interesante. Lo he comprobado en mi base de datos. Tengo collation utf8_general_ci.

Seria mejor que este tema fuera movido al foro de MySQL. Probablemente ellos podrian dar una mejor solución.

Recien acabo de encontrar la explicación en este foro.
__________________
I see dead pixels

Última edición por GatorV; 14/01/2010 a las 10:23
  #9 (permalink)  
Antiguo 14/01/2010, 10:54
 
Fecha de Ingreso: agosto-2008
Mensajes: 10
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: consulta mysql con LIKE devuelve vacio con simbolos

Mmmm lei la explicación.. pero si le pongo COLLATION['utf8_bin'] me muestra la "ñ" con un signo de pregunta :( ..

Y si , quizas lo mejor sea que pasen para el foro de mysql :) , gracias igual por tu ayuda serge
  #10 (permalink)  
Antiguo 14/01/2010, 11:14
 
Fecha de Ingreso: octubre-2009
Ubicación: Merida Yucatan
Mensajes: 93
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: consulta mysql con LIKE devuelve vacio con simbolos

Tuve un problema similar. Revisa que no existan espacios en blanco al comenzar el valor almacenado en la bd
  #11 (permalink)  
Antiguo 14/01/2010, 11:31
Avatar de JoseTejada  
Fecha de Ingreso: diciembre-2007
Ubicación: Peru.Lima.Cercado.MDuarez.Granaderos172
Mensajes: 218
Antigüedad: 16 años, 4 meses
Puntos: 11
Respuesta: consulta mysql con LIKE devuelve vacio con simbolos

prueba poniendo tu where algo asi:
Código PHP:
"SELECT * FROM tabla WHERE nombre LIKE '%".utf8_decode($nom)."%'"
si no funciona usa la funcion utf8_encode en lugar de utf8_decode.
Espero te funcione
  #12 (permalink)  
Antiguo 14/01/2010, 12:00
 
Fecha de Ingreso: agosto-2008
Mensajes: 10
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: consulta mysql con LIKE devuelve vacio con simbolos

No tienen espacios en blanco, tampoco veo que eso pueda ser un problema.

Sobre utf8_encode y utf8_decode no me sirven ya que todo esta en utf8 y el problema es con el collation binario para que no de por igual una "ñ" que una "n" , igualmente como no perdia nada lo probé y confirmé la teoría :P

Etiquetas: mysql, simbolos, vacio
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 07:50.