miércoles, 16 de junio de 2010

Mi Primer MVC

_ En estos días me encuentro realizando el sitio web de http://www.uvkmulticines.com


y aplicando mis conocimientos de MVC en php5 usando PDO, además uso el patron Singleton y el patrón FrontController, cuando termine el proyecto que es un framework creado por mi, siguiendo las convenciones de nombre de Zend Framework.

_ En estos momentos tengo un problemilla con las tildes y las eñes cuando intento comparar el titulo de la pelicula con el nombre de la nueva pelicula ingresada y es q PDO, no me arroja resultado si la palabra tiene tilde, a lo que estoy pensando formatear los 2 parametros para compararlos asi sin tildes.


en este metodo de mi modelo:



_ En el controlador le pregunto si es que existe pero si tiene ñ o tilde no lo encuentra, a ver si me va bien con el plan A, si no el plan "B".

4 comentarios:

  1. Interesante concepto :)...





    ... ¿para que es?

    ResponderEliminar
  2. @Alejandro Peña. Este metodo como su nombre me indica verifica si existe una pelicula y retorna un booleano.

    ResponderEliminar
  3. No eres el único con estos problemas. Según mi experiencia... el problema de los juegos de caracteres (charset) está muy mal resuelto, para empezar porque es un problema complejo: los diferentes elementos del software que maneja datos del USUARIO está sujeto a usar diferentes charsets (sistema operativo del visitante, su navegador, tu configuración de PHP, tu config. del Servidor, la base de datos que uses, tu sistema de archivos, los protocolos de transmisión de datos como HTTP, JSON, etc...). Esta variedad de "soportes" para transportar/almacenar datos hace complejo construir una coherencia que englobe a todo el sistema.

    Prueba a decodificar o codificar en UTF-8 la cadena a buscar en la base de datos ;) con utf8_encode() y/o utf8_decode()

    http://www.php.net/manual/es/function.utf8-decode.php

    Saludos!
    SERGI

    ResponderEliminar
  4. @Usher Web. Un gusto maestro.
    Es verdad, esto de los juegos de caracteres es un lío, te comento que probe con utf8_encode() y utf8_decode(), mi php esta a utf8, por supuesto todos mis archivos estan guardados como UTF-8, incluso agregue esta linea a mi motor PDO:
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
    pero la quite dado que esto modificaría mi abstracción.

    Por lo que he investigado es un problema del cliente de MYSQL, mi solución fue esta, cree un metodo que formateara ambas cadenas a una reconocible por PDO, usando replace, para las eñes y tildes, quitando espacios y aplicando metodos de seguridad para evitar SQL Injection y XSS y trabaja como es debido, claro que esto añade un proceso más que lo hace algo más lento(a nivel infinitesimal), dependiendo del tamaño del resulset, y en PHP esto es crítico dado que PHP con objetos es más lento que estructurado, es lo que dice Zeev Zuravski.

    ResponderEliminar