Autor Zpráva
Filip Macháček
Profil
Zdravim dnes jsem našel že google má své API na grafy a chtěl jsem ho využít ale nastal problém s přenosu informací mezi JS a PHP myslel jsem že to vyřeším takhle :
$vysledek = mysqli_query($link, "SELECT * FROM graf_teploty "); 

while ($zaznam = mysqli_fetch_array($vysledek) ){
             $id = $zaznam["id"]; 
              $hodnota = $zaznam["hodnota"]; 
            $output = $output + "[" + $id + ", " + $hodnota + "], ";
}      





?>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js">

</script>
<script>
google.charts.load('current', {packages: ['corechart', 'line']});
google.charts.setOnLoadCallback(drawBasic);

function drawBasic() {

      var data = new google.visualization.DataTable();
      data.addColumn('number', 'X');
      data.addColumn('number', 'Dogs');

      data.addRows([
        <?php 
        echo json_encode($output);
        ?>
 
      ]);

      var options = {
        hAxis: {
          title: 'Time'
        },
        vAxis: {
          title: 'Popularity'
        }
      };

      var chart = new google.visualization.LineChart(document.getElementById('chart_div'));

      chart.draw(data, options);
    }
</script>
  <html>
  <div id="chart_div"></div>
  </html>
      
Ale nějak to nefunguje může za to tohle
data.addRows([
        <?php 
        echo json_encode($output);
        ?>
 
      ]);
Nevíte jak to zprovoznit ? Vůbec mě nenapadá jak to udělat s JS jsem nikdy nedělal (PHP stačilo)
mckay
Profil
Filip Macháček:
V php části vytvořte pole v takovém formátu, jako ho očekává data.addRows(), dle dokumentace, to bude něco ve stylu:

  [  ['Work', 11],  ['Eat', 2],  ['Commute', 2],  ['Watch TV', 2],  ['Sleep', {v:7, f:'7.000'}] ]

Váš kód by mohl vypadat nějak takto:
// Připravím si pole
$output = [];

while ($zaznam = mysqli_fetch_array($vysledek) ){
$id = $zaznam["id"]; 
$hodnota = $zaznam["hodnota"]; 

$output[] = [ $id ,  $hodnota  ]; // A pak do toho pole strkám další pole
}

Tam kde teď vypisujete json_encode($output); to nechte všechno stejné a mělo by to začít fungovat.
Filip Macháček
Profil
PHP IDE si stěžuje na Tohle a nefunguje ...: $output = [];
Rfilip
Profil
Doporučuju upgradenout verzi PHP, protože tento způsob tvorby polí byl přidaný do PHP verze 5.4.0, která vyšla na jaře 2012.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: