Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Json en php

Estas en el tema de Json en php en el foro de PHP en Foros del Web. Hola buenas tardes mi pregunta es la sig. como puedo devolver el resultado de una consulta en formato json tengo el sig. code pero me ...
  #1 (permalink)  
Antiguo 13/08/2013, 13:22
Avatar de vick90  
Fecha de Ingreso: abril-2010
Mensajes: 144
Antigüedad: 14 años
Puntos: 14
Json en php

Hola buenas tardes mi pregunta es la sig.
como puedo devolver el resultado de una consulta en formato json tengo el sig. code
pero me he atorado en esa parte
este el codigo q tengo actualmente pero no me lo genera bien
Código PHP:
Ver original
  1. $cad=array();
  2.     while ($i<mysql_num_fields($sql)) {
  3.         $carac=mysql_fetch_field($sql,$i);
  4.         $cad[$i]="campo:".$carac->name;
  5.         $cad[$i]="tipo:".$carac->name;
  6.         $cad[$i]="logintud:".$carac->name;
  7.         $i++;
  8.     }
  9.     echo json_encode($cad);
Espero su ayuda
Saludos
  #2 (permalink)  
Antiguo 13/08/2013, 13:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Json en php

¿Qué es lo que esperas que haga y que te está saliendo?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 13/08/2013, 13:27
Avatar de vick90  
Fecha de Ingreso: abril-2010
Mensajes: 144
Antigüedad: 14 años
Puntos: 14
Respuesta: Json en php

que me imprima el resultado en formato json
asi
[{'campo':'x', 'tipo':'cadena','longitud':10}]
y no lo esta haciendo
  #4 (permalink)  
Antiguo 13/08/2013, 13:28
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Json en php

¿Qué te devuelve?

Si te fijas también estás sobre-escribiendo el resultado, si quieres que sea dinámico debes quitar de los corchetes $i.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 13/08/2013, 13:31
Avatar de vick90  
Fecha de Ingreso: abril-2010
Mensajes: 144
Antigüedad: 14 años
Puntos: 14
Respuesta: Json en php

esto es lo que me regresa
["logintud:usr_prs_rfc","logintud:usr_email","login tud:usr_prf_id","logintud:usr_clave","logintud:usr _tipo","logintud:subtipo","logintud:usr_tienda","l ogintud:usr_activo"]
  #6 (permalink)  
Antiguo 13/08/2013, 13:33
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Json en php

Lo que te acabo de comentar. Estaba editando el mensaje cuando escribiste lo que te devuelve. Verifica nuevamente lo que escribí.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 13/08/2013, 13:38
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Json en php

Mas bien considero de que no esta creando el array como es debido
Código PHP:
Ver original
  1. <?php
  2.     $cad=array();
  3.     while ($i<mysql_num_fields($sql)) {
  4.         $carac = mysql_fetch_field($sql, $i);
  5.         $cad[$i]= array(
  6.             "campo" => $carac->name,
  7.             "tipo"  => $carac->name,
  8.             "logintud" => $carac->name,
  9.         );
  10.         $i++;
  11.     }
  12.     echo json_encode($cad);

Deberia devolverte el formato correcto en json...

En JSON [{campo:valor}] tiene su equivalente en php como array(campo=>valor)

Si armas el array como te mostre json_encode hara correctamente su trabajo

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #8 (permalink)  
Antiguo 13/08/2013, 13:39
Avatar de vick90  
Fecha de Ingreso: abril-2010
Mensajes: 144
Antigüedad: 14 años
Puntos: 14
Respuesta: Json en php

Amigo muchas gracias te lo agredesco mucho me acabas de salvar el dia
Saludos
  #9 (permalink)  
Antiguo 13/08/2013, 13:46
Avatar de vick90  
Fecha de Ingreso: abril-2010
Mensajes: 144
Antigüedad: 14 años
Puntos: 14
Respuesta: Json en php

Ahora tengo otro problema al momento de tratarlo en javascript y no se si este tema esta bien aqui o lo posteo en la seccion de javascript
me dice que el campo no esta defnido
Código Javascript:
Ver original
  1. function DibControles(a,destino){
  2.     var datos=eval("("+a+")");
  3.     alert(datos.campo);
  4. }
  #10 (permalink)  
Antiguo 13/08/2013, 13:50
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Json en php

Me alegra que te haya servido, como dato adicional si no quieres que aparezca

{"1":{"campo":"x"},"2":{"campo":"y"}}

si no

[{"campo":"x"},{"campo":"y"}]

Cambia

$cad[$i]=

Por

$cad[]=

Edito al ver tu comentario anterior te suguiero que cambies a []

Una anotacion adicional no uses eval es bastante peligroso y su uso esta desaconsejado, si quieres trabajar con JSON puedes usar JSON.parse o jQuery tiene una funcion para parsear JSON
Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Última edición por jonni09lo; 13/08/2013 a las 13:54 Razón: Info adicional
  #11 (permalink)  
Antiguo 13/08/2013, 14:43
Avatar de vick90  
Fecha de Ingreso: abril-2010
Mensajes: 144
Antigüedad: 14 años
Puntos: 14
Respuesta: Json en php

Gracias brother
Saludos

Etiquetas: json, 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 10:38.