Autor Tema: problema con json_encode() realizando operaciones contra base de datos  (Leído 4486 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Zewenaco

  • Novato
  • *
  • Mensajes: 3
  • Puntuación: 0
    • Ver Perfil
problema con json_encode() realizando operaciones contra base de datos
« : 22 de septiembre de 2013, 09:49:12 pm »
Buenas buenas, soy nuevo en el foro y pues estoy empezando a estudiar un poco sobre  Symfony 2 me estoy pillando unos tutoriales y pues empece a tener problemas cuando empece a realizar operaciones contra la base de datos justo al consultar con el doctrine.

Trate de poner toda la configuración con UTF-8, tal vez se me esta escapando algo por alli, si me pueden ayudar.

El error que se genera es: ContextErrorException: Warning: json_encode(): Invalid UTF-8 sequence in argument in C:\wamp\www\MyWorldAG\app\cache\dev\classes.php line 4558

y si le agrego un arroba justo a esa linea me genera un error como este:

[Syntax Error] Expected PlainValue, got '�' at position 48 in property MDW\DemoBundle\Entity\Articles::$title.

Articles es mi tabla y bueh title una de las columnas.

Si me pueden ayduar graciasss!!

Desconectado Carlos Belisario

  • Moderador Global
  • Fanático
  • *****
  • Mensajes: 263
  • Puntuación: 17
  • Sexo: Masculino
  • software lover
    • Ver Perfil
Re:problema con json_encode() realizando operaciones contra base de datos
« Respuesta #1 : 22 de septiembre de 2013, 10:07:30 pm »
el problema esta en la codificación, verifica que te estas trayendo, en tu db esta con el acento o la ñ?? o esta el carácter que te muestra??

Desconectado oyepez003

  • Moderador Global
  • Usuario Dedicado
  • *****
  • Mensajes: 157
  • Puntuación: 8
  • Sexo: Masculino
  • La suerte esta en el conocimiento
    • Ver Perfil
    • Soluciones tecnológicas YepSua C.A.
Re:problema con json_encode() realizando operaciones contra base de datos
« Respuesta #2 : 23 de septiembre de 2013, 08:07:10 am »
Hola verifica que la configuracion del charset de tu BD tambien sea UTF-8. Puede ser que actualmente la tengas configurada ISO-8859-1.

Ambas partes (app - BD) deben estar configuradas con el mismo charset para no tener problemas. Tambien si estas usando un IDE configuralo para que guarde el codigo en UTF-8.

Saludos.
--
Omar Yepez
http://www.yepsua.com The YepSua team
http://jquery4php.sourceforge.net/ The jQuery4PHP project
Sigueme: http://twitter.com/oyepez003

Desconectado csalazart33

  • Novato
  • *
  • Mensajes: 20
  • Puntuación: 1
  • Sexo: Masculino
    • Ver Perfil
    • Hospedaje Web a Medida
Re:problema con json_encode() realizando operaciones contra base de datos
« Respuesta #3 : 23 de septiembre de 2013, 08:13:06 am »
Salu2... :D

Bien Amigo Zewenaco Te Cuento...
Felicitaciones por Comenzar con SF2.. Sobre SF2 puedes ingresar al Grupo SF2 en google
https://groups.google.com/forum/#!forum/symfony-ven..

Sobre lo que te pasa.. pues Es posible como dice Carlos Belisario que te ese pasando algo con la base de datos....

 Otra cosa para poder configurar todo a UTF-8 hay un truquito que debes seguir.. por lo general SF2 arrastra todo a UTF8 a menos que le digas lo contrario.. puede ser tambien que si tienes error al mostrar las paginas sea porke los archivos de plantillas o las clases estan en ISO-8859-1 Si usas Windows. Te recomeindo uses NetBeans PHP para trabjar con Symfony, e smi preferencia  pero puedes usar lo kke kieras..

Sobre laCodificacion.. Te recomiendo leas el Post que publique..
https://groups.google.com/forum/#!topic/symfony-ven/Tgi2TrEtv1Y
alli te explica lo que necesitas Saber...
Para UTF-8 o para ISO-8859-1 o Cualquier otro Code CharSet ..
Sobre tu error..
Cita
El error que se genera es: ContextErrorException: Warning: json_encode(): Invalid UTF-8 sequence in argument in C:\wamp\www\MyWorldAG\app\cache\dev\classes.php line 4558
y si le agrego un arroba justo a esa linea me genera un error como este:
La verdad.. No debes tocar  el cache..
Código: [Seleccionar]
\app\cachePorque eso se Genera Dinamicamente.. Mi recomendacion es 1. Borar todo dentro de "\app\cache", asi podras Regenerar lo que estas haciendo.. Eso en caso que te siga liando el error... o Bien usa los comando de symfony por consola es app\console cache:clear
Donde Debes Hacer cambios es en \src\Tu_Proyecto\TuBundle\Controller\Controlador_Ke_estas_invocando.php
es alli donde esta el problema y seguramente en tu plantilla..
Entonces..ese error de json_encode si no lo estas invocando tu entonces es de la base de datos.. Recomeindo que revises el doctrine y la sentencia de Doctrine que estas usando es alli seguramente donde esta el lio.. Lo otro que peudes hacer para darte una idea es empezar a Depurar... como bueno FireBugPHP de Mozilla o bien Xdebug una lib para php o Simplemente... Vete a la linea donde realizas la consulta.. Captura la Variable con los datos del arreglo o del Objeto Doctrine que hace al consulta y Haz esto..
Código: [Seleccionar]
Var_dump($variable_objeto);
die();
Es un asco tener que hacerlo interrumpe la ejecucion normal del programa y SF2 tiene buenos Logs.. Revisalos y usa un depurador Bastante buenoo.. Pero cuando estas comenzando es mas Facil hacer lo que deje alli.. ami me ha Funcionado incluso en als peores situaciones...  :P ..
Espero te Funcione de algo todo esto...
Exitos...
« Última Modificación: 23 de septiembre de 2013, 08:40:28 am por csalazart33 »
<---------------------->
Carlos A Salazar
Desarrollo Web
Web Hosting
www.symfony-project.com.ve
www.tuhostingweb.com

Desconectado csalazart33

  • Novato
  • *
  • Mensajes: 20
  • Puntuación: 1
  • Sexo: Masculino
    • Ver Perfil
    • Hospedaje Web a Medida
Re:problema con json_encode() realizando operaciones contra base de datos
« Respuesta #4 : 23 de septiembre de 2013, 08:16:15 am »
Definitivamente Como dice oyepez003
   
<---------------------->
Carlos A Salazar
Desarrollo Web
Web Hosting
www.symfony-project.com.ve
www.tuhostingweb.com

Desconectado Zewenaco

  • Novato
  • *
  • Mensajes: 3
  • Puntuación: 0
    • Ver Perfil
Re:problema con json_encode() realizando operaciones contra base de datos
« Respuesta #5 : 24 de septiembre de 2013, 10:04:57 pm »
Código: [Seleccionar]
public function crearAction(){
        $articulo = new Articles();
        $articulo->setTitle(json_encode('Articulo de ejemplo 1'));
        $articulo->setAuthor(json_encode('John Doe'));
        $articulo->setContent(json_encode('Contenido'));
        $articulo->setTags(json_encode('ejemplo'));
        $articulo->setCreated(json_encode((new \DateTime())->format("Y-m-d")));
        $articulo->setUpdated(json_encode((new \DateTime())->format("Y-m-d")));
        $articulo->setSlug(json_encode('articulo-de-ejemplo-1') );
        $articulo->setCategory(json_encode('ejemplo'));
        /*$errores = $this->get('validator')->validate($articulo);
        if(!empty($errores)){
            foreach($errores as $error)
            echo $error->getMessage();
            return new Response();
        }*/
        $em = $this->getDoctrine()->getEntityManager();
        $em->persist($articulo);
        $em->flush();
       
        return $this->render('MDWDemoBundle:Articulos:articulo.html.twig', array('articulo' => $articulo));
        #$name= "Anderson";
        #return $this->render('MDWDemoBundle:Default:index.html.twig', array('name' => $name));
    }


Justo en el $em->persist(); explota..

lo he enviado con los dates y sin los dates y aun asi sigue generando el error. Lo pruebo comentando las lineas de $em->flush() y $em->persist($articulo); y la vista se me genera bien. Asi que alli asumo que es cuestión de la BD.

con el var_dump me genera algo asi
Código: [Seleccionar]
object(MDW\DemoBundle\Entity\Articles)[55] private 'id' => null private 'title' => string '"Articulo de ejemplo 1"' (length=23) private 'author' => string '"John Doe"' (length=10) private 'content' => string '"Contenido"' (length=11) private 'tags' => string '"ejemplo"' (length=9) private 'created' => string '"2013-09-25"' (length=12) private 'updated' => string '"2013-09-25"' (length=12) private 'slug' => string '"articulo-de-ejemplo-1"' (length=23) private 'category' => string '"ejemplo"' (length=9) private 'comments' => object(Doctrine\Common\Collections\ArrayCollection)[56] private '_elements' => array (size=0) empty

En la base de datos trate de asegurarme que todo estuviera UTF-8, justamente estoy trabajando con NetBeans IDE 7.3.1 y por ahora veo la BD por phpMyAdmin tengo algo asi.



por si no se ve la imagen, nunca fui bueno poniendo imagenes hehe, el cotejamiento de las tablas dicen utf8_general_ci, y el charset en el archivo parametros.yml esta en UTF-8 cuando cree la base de datos por consola tambien le puse UTF-8

y la pagina de phpMyAdmin me muestra algo asi como:
Servidor: localhost via TCP/IP
Tipo de servidor: MySQL
Versión del servidor: 5.6.12-log - MySQL Community Server (GPL)
Versión del protocolo: 10
Usuario: root@localhost
Conjunto de caracteres del servidor: UTF-8 Unicode (utf8)

Me pondre a instalar alguno de los debuggers que me dijiste.. pues ahora que lo mencionas es verdad, necesito un debugger. Yo trabajo con struts 1 en java y pues el debugger es super depinga jeje, bueno es java pues.

Y también les queria mostrar el archivo parametros.yml tengo algo asi
Código: [Seleccionar]
parameters:
    database_driver: pdo_mysql
    database_host: localhost
    database_port: '3306'
    database_name: MyWorldAG
    database_user: root
    database_password: null
    mailer_transport: smtp
    mailer_host: 127.0.0.1
    mailer_user: null
    mailer_password: null
    locale: en
    secret: d7af747b68181ec788110d010b7c041b6
    database_path: null
    database_charset: UTF-8

bueno seguire revisando, Muchisimas gracias a todos por responder!. Buenas noches ;)

Desconectado csalazart33

  • Novato
  • *
  • Mensajes: 20
  • Puntuación: 1
  • Sexo: Masculino
    • Ver Perfil
    • Hospedaje Web a Medida
Re:problema con json_encode() realizando operaciones contra base de datos
« Respuesta #6 : 25 de septiembre de 2013, 08:18:24 am »
Definitivamente hay un problema con este hilo algo esta pasando que ve espantoso.. o soy yo ke mi navegador esta chueco?

***En relacion a Zewenaco
1+ Pues te recomeindo quites los json_encode() nos les veo utilidad alli. realmente no se si es necesario mas adeante pero
solo para codificar una cadena de texto no me parece.

2+ Te estas Guiabdo por el Manual de MaestrosDelWeb Bueno Te digo el PDF tiena unas Fallas,seguramente la entidad o el mismo
código tienen algun error; te recomiendo te guies por la web en la pagina donde tienen el tutorial alli hay algunas correcciones sobre eso
unas notas puestas que no aparecen en el pdf con eso corrijes los posibles errores..

3+ Creo que esa entidad enlaza con la entidad de categoria por tanto es un objeto que debes colcoar en categoria,
Ahora Si no has llegado a esa parte entonces es que no has leido aun como modificar la entidad para eso..
esa parte la explican mas adelante.. tranquilo si no lo entiendes..

y Finalmente te recomiendo hagas lo primero y prueves y luego lo segundo..
« Última Modificación: 25 de septiembre de 2013, 10:05:40 am por csalazart33 »
<---------------------->
Carlos A Salazar
Desarrollo Web
Web Hosting
www.symfony-project.com.ve
www.tuhostingweb.com

Desconectado Zewenaco

  • Novato
  • *
  • Mensajes: 3
  • Puntuación: 0
    • Ver Perfil
Re:problema con json_encode() realizando operaciones contra base de datos
« Respuesta #7 : 25 de septiembre de 2013, 08:56:58 pm »
Buenas noches.. Ya resolvi la situación ... todo fue cuestion del copia y pega que hice del pdf !! Disculpen a todos la molestia y muchisimas gracias!...

En el copia y pega cuando declaraba las validaciones de uno de los atributos en formato annotations.. me traje unas comillas que no eran las normales, entonces eso generaba el error json_encode...
jajaja que tochada xD...

Gracias por todo y buenas noches ;)

Desconectado csalazart33

  • Novato
  • *
  • Mensajes: 20
  • Puntuación: 1
  • Sexo: Masculino
    • Ver Perfil
    • Hospedaje Web a Medida
Re:problema con json_encode() realizando operaciones contra base de datos
« Respuesta #8 : 26 de septiembre de 2013, 07:39:29 am »
OOH Si esas comillas Cierto.. se me paso preguntarse si habias hecho copy /paste es lo que normalmente pasa con el pdf y el codigo
Ke bien!!
<---------------------->
Carlos A Salazar
Desarrollo Web
Web Hosting
www.symfony-project.com.ve
www.tuhostingweb.com