Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema json_encode

Estas en el tema de Problema json_encode en el foro de PHP en Foros del Web. Hola, quiero plantearos una duda que tengo, intento armar un array cogiendo datos desde mi base de datos y armo este array dentro de una ...
  #1 (permalink)  
Antiguo 01/05/2013, 19:46
 
Fecha de Ingreso: mayo-2013
Mensajes: 3
Antigüedad: 10 años, 11 meses
Puntos: 0
Sonrisa Problema json_encode

Hola, quiero plantearos una duda que tengo, intento armar un array cogiendo datos desde mi base de datos y armo este array dentro de una variable. El problema que tengo que cuando lo quiero convertir a formato json, la función json_encode() lo interpreta como una cadena de texto y no me hace codificación a json como debería.

La sentencia que formo si que funciona porque la he probado manualmente, pero al pasar la variable que formo lo detecta todo como un string y nada no hay forma.

Os adjunto mi código:

<?php
include 'parametros.php';
$conexion=mysql_connect($C_HOSTdb,$C_USUdb,$C_PASS db);
mysql_select_db($C_SOLICITUDESdb,$conexion);

$miconsulta="select articulo from " . $C_PRODUCTOStabla. " where admitido!=0";

$consulta = mysql_query($miconsulta, $conexion);
$nfilas = mysql_num_rows($consulta);

$arr="array(";
// recorrer filas recuperadas
for ($i = 1; $i <= $nfilas; $i++)
{
if($i!=$nfilas)
{
$fila = mysql_fetch_array($consulta);
$arr.="array('Articulo' => '".$fila['articulo']."'), ";
}
else
{
$fila = mysql_fetch_array($consulta);
$arr.="array('Articulo' => '".$fila['articulo']."')";
}
}
$arr.=");";

$arr=utf8_encode($arr);
echo json_encode($arr);
?>

Y este el resultado que me da en pantalla:

"array(array('Articulo' => 'PES 2012 PC'), array('Articulo' => 'AUDI TT DE RADIOCONTROL'), array('Articulo' => 'BAL\u00d3N DE F\u00daTBOL ADIDAS +TEAMGEIST 2006'), array('Articulo' => '7 CARTUCHOS COMPATIBLES CON EPSON STYLUS'), array('Articulo' => 'SONY ERICSSON AINO'), array('Articulo' => 'LIBRO DON QUIJOTE DE LA MANCHA'), array('Articulo' => 'TEL\u00c9FONO INALAMBRICO'), array('Articulo' => 'BANCO DE ABDOMINALES'), array('Articulo' => 'COLECCI\u00d3N MINI-FIGURAS ESPA\u00d1A 2010'), array('Articulo' => 'GAFAS DE SOL RAY-BAN'));"

No se donde esta el error, tiene pinta de que sea una tonteria pero me estoy volviendo loco y no doy con el, agradecería mucho algo de ayuda.

Gracias, un saludo a todos!
  #2 (permalink)  
Antiguo 01/05/2013, 20:50
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 5 meses
Puntos: 36
Respuesta: Problema json_encode

Código PHP:
Ver original
  1. $arr = array();
  2. while($r = mysql_fetch_array($miconsulta)){
  3.    $arr[] = $r;
  4. }
  5.  
  6. echo json_encode($arr);

Prueba así

Saludos
  #3 (permalink)  
Antiguo 02/05/2013, 11:40
 
Fecha de Ingreso: mayo-2013
Mensajes: 3
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Problema json_encode

Hola antes de nada gracias por contestar. He probado tu sugerencia pero no va, simplemente me devuelve esto:

[]

Sigo sin dar con el fallo y no se como montar el array para que el json_encode me lo coja un array de arrays en vez de un string....

Agradecería cualquier sugerencia, gracias de nuevo!
  #4 (permalink)  
Antiguo 02/05/2013, 12:06
 
Fecha de Ingreso: mayo-2013
Ubicación: Bogotá
Mensajes: 3
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: Problema json_encode

//No estabas imprimiendo una cadena codificada en JSON.
E corregido un poco el código De esta maneara puede servir, prueba y me comentas; un dato que observé en tu código es que utilizas una condición (IF), y no sé para qué es?


<?php
include 'parametros.php';
$conexion=mysql_connect($C_HOSTdb,$C_USUdb,$C_PASS db);
mysql_select_db($C_SOLICITUDESdb,$conexion);


$miconsulta="select articulo from " . $C_PRODUCTOStabla. " where admitido!=0";

$consulta = mysql_query($miconsulta, $conexion);

$ArregloDatosItem = array();
while ($fila = mysql_fetch_array($consulta)) {
$ArregloJson = array(
'Articulo' => utf8_encode($fila['articulo'])
//Puedes agregar mas filas
);
$ArregloDatosItem[] = $ArregloJson;
}


echo json_encode($ArregloDatosItem);
?>

Última edición por CMCeledon; 02/05/2013 a las 12:13
  #5 (permalink)  
Antiguo 02/05/2013, 17:30
 
Fecha de Ingreso: mayo-2013
Mensajes: 3
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Problema json_encode

Muchas gracias me ha funcionado perfectamente, la verdad es que tu solucion era mas simple.

Gracias de nuevo, un saludo!

Etiquetas: mysql, select, sql, tabla
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 14:31.