Problemas con PHP PDO y MySQL para generar array
Publicado por Carlos (6 intervenciones) el 12/01/2017 00:28:35
Estimados.
Acudo a ustedes ya que he intentado resolver este tema sin éxito. El resultado de mi consulta genera 2 arreglos que al pasar a JSON se transforma en un JSON no válido por tener dos elementos raíz.
En la query, tag es un array que paso de un select multiple de un formulario. Este array lo toma correctamente (puedo generar tablas HTML y demás), el problema está en el array. Lo necesito para generar una tabla pivote con él (el código para generar el crosstab/pivote funciona correctamente).
Estaré generando erróneamente el array?
A continuación el código:
La impresión del array resultado es el siguiente:
Lo ideal para que el JSON sea correcto es que genere un array consecutivo 0 1 2 3 y no dos arrays (0 1 y 0 1).
Espero puedan ayudarme.
Saludos cordiales.
Acudo a ustedes ya que he intentado resolver este tema sin éxito. El resultado de mi consulta genera 2 arreglos que al pasar a JSON se transforma en un JSON no válido por tener dos elementos raíz.
En la query, tag es un array que paso de un select multiple de un formulario. Este array lo toma correctamente (puedo generar tablas HTML y demás), el problema está en el array. Lo necesito para generar una tabla pivote con él (el código para generar el crosstab/pivote funciona correctamente).
Estaré generando erróneamente el array?
A continuación el código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
foreach($_POST['tag'] as $tag) {
$sql = $pdo->prepare("SELECT nomtag, Fecha, Valor, medida
FROM planta, tag, valor
WHERE valor.tag_idtag = tag.idtag AND tag.planta_idplanta = planta.idplanta AND Fecha >= :desde AND Fecha <= :hasta AND idtag = :tag ORDER BY Fecha asc");
$sql->execute(['desde' => $desde, 'hasta' => $hasta, 'tag' => $tag]);
$resultado = $sql->fetchAll(PDO::FETCH_ASSOC);
//echo '<pre>';
//print_r($resultado);
//echo '<pre>';
//Genero Crosstab
$new_resultado = Array();
foreach( $resultado as $v )
{
if(!isset( $new_resultado[$v["nomtag"]][$v["Fecha"]] ))
{
$new_resultado[$v["nomtag"]][$v["Fecha"]] = 0;
}
$new_resultado[$v["nomtag"]][$v["Fecha"]] += $v["Valor"];
}
//echo '<pre>';
//print_r($new_array);
//echo '<pre>';
$json_array = json_encode($new_resultado);
print($json_array);
}//Fin recorrer array tag
Database::disconnect();
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Array
(
[0] => Array
(
[nomtag] => Flujometro Entrada PG TK
[Fecha] => 2016-01-01
[Valor] => 1234567
[medida] => m3
)
[1] => Array
(
[nomtag] => Flujometro Entrada PG TK
[Fecha] => 2016-01-02
[Valor] => 2223124
[medida] => m3
)
)
Array
(
[0] => Array
(
[nomtag] => Entrada Recolectora PG TK
[Fecha] => 2016-01-01
[Valor] => 9876544
[medida] => m3
)
[1] => Array
(
[nomtag] => Entrada Recolectora PG TK
[Fecha] => 2016-01-02
[Valor] => 9988112
[medida] => m3
)
)
Espero puedan ayudarme.
Saludos cordiales.
Valora esta pregunta
0