Autor | Zpráva | ||
---|---|---|---|
mfr Profil |
#1 · Zasláno: 6. 2. 2021, 19:00:39
Ahoj,
Snažím se zprovoznit Google Annotation chart. Mám ale stále problém s typem čísla... Value1 mám jako INT. Časová osa se mi už vykresluje ok, ale hodnoty ne. vibroguard.cz/test/ano.php Nad grafem je výpis json tabulky. Nevěděl bystě někdo, kde může být problém? <?php $connect = mysqli_connect("xxx", "xxx", "xxx", "xxx"); $query = ' SELECT Value1, UNIX_TIMESTAMP(CONCAT_WS(" ", Value1_Date, Value1_Time)) AS datetime FROM SAVE_DATA '; $result = mysqli_query($connect, $query); $rows = array(); $table = array(); $table['cols'] = array( array( 'label' => 'Date Time', 'type' => 'datetime' ), array( 'label' => 'mm/s', 'type' => 'number' ) ); while($row = mysqli_fetch_array($result)) { $sub_array = array(); $datetime = explode(".", $row["datetime"]); $sub_array[] = array( "v" => 'Date(' . $datetime[0] . '000)' ); $sub_array[] = array( "v" => $row["Value1"] ); $rows[] = array( "c" => $sub_array ); } $table['rows'] = $rows; $jsonTable = json_encode($table); echo $jsonTable; ?> <html> <head> <script type='text/javascript' src='https://www.gstatic.com/charts/loader.js'></script> <script type='text/javascript'> google.charts.load('current', {'packages':['annotatedtimeline']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(<?php echo $jsonTable; ?>); var options = { title:'Sensors Data', legend:{position:'bottom'}, chartArea:{width:'95%', height:'65%'}, }; var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div')); chart.draw(data, {displayAnnotations: true}); } </script> <style> .page-wrapper { width:1000px; margin:0 auto; } </style> </head> <body> <div class="page-wrapper"> <br /> <h2 align="center">Display Google Line Chart with JSON PHP & Mysql</h2> <div id="chart_div" style="width: 100%; height: 500px"></div> </div> </body> </html> |
||
Firibix Profil |
#2 · Zasláno: 6. 2. 2021, 19:25:31
Reakce na mfra:
Všimni si, že ve výsledném JSONu nemáš čísla jako čísla, ale jako řetězce, což způsobuje tu chybu. MySQLi z databáze vrátí vždycky datový typ string, nehledě na to, jaký typ je nastavený na sloupci v databázi. To znamená, že na řádku 33 přiřazuješ do "v" řetězec a funkce json_encode ho jako řetězec zakóduje, i když ten řetězec ve skutečnosti obsahuje číslo.
Stačí přetypovat na integer a všechno by mělo začít fungovat: $sub_array[] = array( "v" => (integer) $row["Value1"] ); |
||
mfr Profil |
#3 · Zasláno: 6. 2. 2021, 19:54:54
Firibix:
Děkuju moc za nakopnutí, funguje perfektně! |
||
Časová prodleva: 3 roky
|
0