Foros del Web » Programando para Internet » PHP »

Problemas con la Ñ a la hora de filtrar fichas

Estas en el tema de Problemas con la Ñ a la hora de filtrar fichas en el foro de PHP en Foros del Web. Muy buenas. Qué tal ? Tengo una pequeña duda. He hecho un pequeño script para que filtre por la letra inicial del nombre, de la ...
  #1 (permalink)  
Antiguo 08/09/2011, 03:40
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Problemas con la Ñ a la hora de filtrar fichas

Muy buenas. Qué tal ?
Tengo una pequeña duda. He hecho un pequeño script para que filtre por la letra inicial del nombre, de la A a la Z (incluye la Ñ). El problema es que al pulsar la Ñ para buscar me salen todas las fichas y no las que comiencen por esta letra. Pongo el script para que lo vean :)

Código PHP:
// Query que muestra un listado total o limitado. También se pueden mostrar solo ordenados por letras
function ficha_general_filtro($letter$limit$campo){
   
$ssql "SELECT *
            FROM wp_famoso"
;
   
   if(isset(
$letter) && !ctype_digit($letter) && strlen($letter) == && $letter != ""){
      
$ssql .= " WHERE cNombre LIKE '" $letter "%' ";         
   }elseif(isset(
$letter) && !ctype_digit($letter) && strlen($letter) >= && $letter != ""){
      
$ssql .= " WHERE cNombre LIKE '%" $letter "%'
                  OR cApellido LIKE '%" 
$letter "%'";
   }
   
   
$ssql .= " ORDER BY " $campo " DESC";
   
   if(isset(
$limit) && ctype_digit($limit) && $limit 0){
      
$ssql .= " LIMIT " $limit " ";
   }

   
$rs mysql_query($ssql);
   return 
$rs;

Como se puede apreciar, a la función se le pasa una letra, un limit (boleano) y un campo por si se quiere ordenar la lista por ese campo :). Suponiendo que no haya ni campo para ordenar ni limit, $letter solo sería Ñ la sentencia que me da es la siguiente:


SELECT * FROM wp_famoso ORDER BY nFamosoID DESC


Pero si busco por cualquier otra letra, la que sea, pongamos la S, aparece la siguiente consulta:


SELECT * FROM wp_famoso WHERE cNombre LIKE 'S%' ORDER BY nFamosoID DESC


No sé porque la Ñ me da problemas, alguien se le ocurre ?

Gracias :)
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?
  #2 (permalink)  
Antiguo 08/09/2011, 03:46
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 8 meses
Puntos: 297
Respuesta: Problemas con la Ñ a la hora de filtrar fichas

En que codificación de carácteres tiene la base de datos, porque UTF8 muestra la Ñ así "Ñ", para solucionar el problema puedes pasar las variables por la función utf8_ encode() y después a la consulta.
  #3 (permalink)  
Antiguo 08/09/2011, 04:37
Avatar de Jask  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 773
Antigüedad: 18 años
Puntos: 15
Respuesta: Problemas con la Ñ a la hora de filtrar fichas

Cita:
Iniciado por hasdpk Ver Mensaje
En que codificación de carácteres tiene la base de datos, porque UTF8 muestra la Ñ así "Ñ", para solucionar el problema puedes pasar las variables por la función utf8_ encode() y después a la consulta.
Gracias. Por lo que veo la tengo codificada en latin1_swedish_ci :S no se porque la codificarían así y no en UTF8 pero bueno, y claro, al estar asi, el encode no funciona :S
Alguna otra sugerencia ?

EDITO

Modifiqué el script que crea la BD y lo puse a UTF8, ahora te cuento que tal salió =)

Funcionó sin problemas, no hacía falta el encode :)

Un saludo !!
__________________
Os iusti meditabitur sapientiam
Si te he ayudado, por qué no un poquito de Karma :) ?

Última edición por Jask; 08/09/2011 a las 05:04

Etiquetas: fichas, filtrar, mysql, sql
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 21:44.