Maison > Questions et réponses > le corps du texte
Je recherche une solution intelligente pour traiter certaines données JSON d'une base de données postgresql en utilisant Javascript. Je sais que je dois lire la base de données via php et transmettre les données sous forme de tableau à Javascript.
Habituellement, vous feriez quelque chose comme ceci :
<?php $phpArray = array('apple', 'banana', 'orange'); $jsonString = json_encode($phpArray); ?> <script> var jsonString = '<?php echo $jsonString ?>'; var jsArray = JSON.parse(jsonString); </script>
Mais mes données sont déjà stockées dans le champ jsonb postgresql au format JSON. J'espère donc qu'il existe un moyen de transmettre le tableau plus efficacement afin que le PC n'ait pas à répéter deux fois les mêmes données.
root@monitor:~ $ sudo -u postgres psql postgres=# \c monitor monitor=# SELECT * FROM "drone001"; id | data ---+----------------------------------------------------------------------------------------------- 1 | {"RX": 13.7, "Speed": 10.1, "Azimuth": 897, "Heading": 125, "DateTime": "2023-03-19 04:14:49"} 2 | {"RX": 13.4, "Speed": 10.2, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:47"} 3 | {"RX": 13.3, "Speed": 10.1, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:45"} 4 | {"RX": 13.7, "Speed": 10.1, "Azimuth": 896, "Heading": 127, "DateTime": "2023-03-19 04:14:43"} 5 | {"RX": 13.1, "Speed": 10.1, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:41"} [...]
Ce code ne fonctionne pas mais devrait montrer à peu près ce que j'ai en tête.
<?php require_once 'pgsql.php'; $db = new database(); $res = $db->select('drone001'); $jsondata = array(); while ($ds = pg_fetch_object($res)) { $jsondata[] = $ds->data; } ?> <script type="text/javascript"> var jsArray = JSON.parse('<?php echo $jsondata ?>'); console.log(jsArray); </script>
Ce serait formidable si quelqu'un pouvait m'orienter dans la bonne direction.
P粉7448316022023-09-13 10:07:37
D'accord, je me sens un peu idiot aujourd'hui. J'ai trouvé la solution, pas besoin de créer un nouveau tableau, il suffit de concaténer toutes les chaînes ensemble.
<?php require_once 'pgsql.php'; $db = new database(); $res = $db->select('drone001'); while ($ds = pg_fetch_object($res)) { $jsondata .= $ds->data . ","; } $jsondata = "[" . rtrim($jsondata, ",") . "]"; ?> <script type="text/javascript"> var jsArray = JSON.parse('<?php echo $jsondata ?>'); console.log(jsArray); </script>