11496 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
J'ai un lien http://xxx.xxx.xxx.xxx/api/xdevices.json?cmd=10 qui me permet de récuperer des données de ce type
{"product":"Eco-devices","T1_PTEC":"HC..","T1_PAPP":550,"T1_HCHP":19187418,"T1_HCHC":13708424,"T2_PTEC":"----","T2_PAPP":0,"T2_HCHP":0,"T2_HCHC":0,"INDEX_C1":0,"INDEX_C2":5907}

Je voudrais récupérer simplement la valeur T1_PAPP.
Je n'ai aucune expérience en json.
Comment faire pour récupérer cette valeur ?
Merci
Bonjour, voici le fonctionnement :


$url = 'http://xxx.xxx.xxx.xxx/api/xdevices.json?cmd=10';
$content = file_get_contents($url);
$data = json_decode($content);
$t1papp = $data->T1_PAPP;


Je n'ai pas testé mais on est pas loin Smiley cligne
Smiley cligne C'est tout bon ma jauge fonctionne correctement.
Je passe a une autre étape. Je voudrais faire un graphe dynamique avec highcharts mais il faut que j'encode ma table sql en json et là tout se complique. J'obtiens que la première date.
Smiley decu Comment faire pour encoder en json un champ date (mon timestamp) et un champ donnée (mon nombre de sacs consommée par jour) d'une base sql ?
Il y a une fonction $row mais je ne sais pas comment l'utiliser.
Merci.
Modérateur
Bonsoir. Encoder en JSON n'est pas une difficulté en soi. Par contre pour pouvoir aider il faudrait:

– la structure des données
– la requête sql
– la structure souhaitée

La structure des données est apparemment:
une colonne date avec la date du jour (2013-10-02, 2013-10-03, etc.) et une colonne avec une quantité (3,4,6,8,3, etc.). La date étant probablement un champ unique.
Bonjour,
Pour mes graphiques, je souhaite récupérer la colonne timestamp et sacs.
La struture de la sql est la suivante :
une colonne timestamp type : timestamp (format aaaa-mm-jj hh:mm:ss)
une colonne date type : date
une colonne sacs type : decimal(12,3)
une colonne prix type : decimal(12,3)

La requete est du type callback=?
Je ne sais pas si une requete php de la sql peut fonctionner.

La structure json souhaité est la suivante :

.?([
[1164758400000,41361752],
[1164844800000,31109599],
/* Dec 2006 */
[1164931200000,28411382],
[1165190400000,25367238],
[1165276800000,23684720],
[1165363200000,22810924],
]);

J'ai essayé d'adapter ce code, mais je récupère les données de la 1ère date.
<?php 
header("Content-type: text/json");
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="chauffage"; // Database name 
$tbl_name="pellets"; // Table name 
// Connect to server and select databse. 
mysql_pconnect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");
$date = current(mysql_fetch_array(mysql_query("SELECT timestamp FROM $tbl_name")));
$sacs = current(mysql_fetch_array(mysql_query("SELECT sacs FROM $tbl_name")));
$content = file_get_contents($url);
$data = json_decode($content);
$x = $date;
$y = $sacs;
 // Create a PHP array and echo it as JSON
$ret = array($x,$y);
echo json_encode($ret);
?> 

Voilà ce que j'obtiens avec le code précédent.
["2010-03-14 17:57:13","21.000"]
Merci.
Modifié par Sebg76 (17 Nov 2013 - 11:14)
Bonjour,
Dans la suite de mes investigations pour réaliser des graphiques avec highstocks, je suis confronter à un autre problème.
J'ai un cron qui relève les valeurs d'un compteur EDF par l'intermédiaire d'un module toutes les 5 min.
J'ai 5 colonnes dans ma sql :
une colonne timestamp
une colonne rec_date
une colonne rec_time
une colonne HP
une colonne HC
J'arrive à bidouiller quelques informations, affichage du compteur HC, HP, facture en cours...mais je souhaiterai aller plus loin en créant un graphique HC, HP + ma consommation de pellets. Pour la consommation de pellets le problème est réglé.
Je souhaite faire la consommation HP et HC par 24h en utilisant le timestamp mini et max du jour (rec_date) et une différence entre la valeur max et min de HP et HC par 24h. L'ensemble doit être codé sous forme de tableau json. si il n'y a plus que ça cela sera bon. Le plus dur étant de renvoyer une consommation de kwh par jour pour les HP et HC.
Mais je séche malgrès quelques essais.
Merci de votre aide.
Smiley smile
J'ai essayé ce code mais j'ai un doute sur les 2 requêtes sql et le timestamp hier.
Le resultat donne null
<?php
$host="localhost";
$username="root"; 
$password=""; 
$db_name="ecodevices";
$table = "infoeco";
$con=mysql_connect("$host", "$username", "$password")or die("Connexion sql refusé"); 
mysql_select_db("$db_name")or die("Connexion sql refusé");
$startTime = mktime(0, 0, 0, date('m'), date('d')-1, date('Y'));
$endTime = mktime(23, 59, 59, date('m'), date('d')-1, date('Y'));
$sql = "select timestp
	from $table
	WHERE timestp >= $startime
    AND timestp <= $endTime 
    ORDER BY timestp";
$result = mysql_query($sql);
$sql = "SELECT rec_date, DATE_FORMAT(rec_date, $dateformatsql)as periode,
    ((MAX(T1_HCHP) - MIN(T1_HCHP)) / 1000) AS hp, 
    ((MAX(T1_HCHC) - MIN(T1_HCHC)) / 1000) AS hc  
    FROM $table
    WHERE timestp > $startime
    GROUP BY periode
    ORDER BY rec_date" ;
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
extract ($row);
$data[] = array($timestp, $hp, $hc);
}
echo json_encode($data);
?>