簡體   English   中英

使用PHP捕獲SQL數據,然后將數組發送到Javascript

[英]Grabbing SQL data using PHP then sending Array to Javascript

我試圖弄清楚如何將使用PHP提取的SQL數據解析為javascript文件。

我需要將PHP數組存儲到Java中,因為我有一個使用javascript數組填充數據的圖形。

現在,我有一個刷新我的圖形數據的按鈕,當單擊它時,它將調用包含在我的主要HTML文件中的此javascript:

button.js

$(function(){
$('#refreshchart').click(function() {
        var chart = $('#chart').highcharts();
        chart.series[0].setData(dataarray);
    });
}); 

Java數組“ dataarray”需要從SQL數據庫中提取。

我有一個PHP腳本,可以從數據庫中提取所需的數據。

這是我的PHP腳本:

query.php

<?php
include 'dbcon.php';
$query0 = "SELECT count(*) FROM test WHERE ans=0";
$query1 = "SELECT count(*) FROM test WHERE ans=1";
$query2 = "SELECT count(*) FROM test WHERE ans=2";
$query3 = "SELECT count(*) FROM test WHERE ans=3";
$query4 = "SELECT count(*) FROM test WHERE ans=4";
$query5 = "SELECT count(*) FROM test WHERE ans=5";
$query6 = "SELECT count(*) FROM test WHERE ans=6";
$query7 = "SELECT count(*) FROM test WHERE ans=7";
$query8 = "SELECT count(*) FROM test WHERE ans=8";
$query9 = "SELECT count(*) FROM test WHERE ans=9";

$result0 = $mysqli->query($query0) or die($mysqli->error.__LINE__);
$result1 = $mysqli->query($query1) or die($mysqli->error.__LINE__);
$result2 = $mysqli->query($query2) or die($mysqli->error.__LINE__);
$result3 = $mysqli->query($query3) or die($mysqli->error.__LINE__);
$result4 = $mysqli->query($query4) or die($mysqli->error.__LINE__);
$result5 = $mysqli->query($query5) or die($mysqli->error.__LINE__);
$result6 = $mysqli->query($query6) or die($mysqli->error.__LINE__);
$result7 = $mysqli->query($query7) or die($mysqli->error.__LINE__);
$result8 = $mysqli->query($query8) or die($mysqli->error.__LINE__);
$result9 = $mysqli->query($query9) or die($mysqli->error.__LINE__);

$row0 = $result0->fetch_row();
$row1 = $result1->fetch_row();
$row2 = $result2->fetch_row();
$row3 = $result3->fetch_row();
$row4 = $result4->fetch_row();
$row5 = $result5->fetch_row();
$row6 = $result6->fetch_row();
$row7 = $result7->fetch_row();
$row8 = $result8->fetch_row();
$row9 = $result9->fetch_row();

echo "Number of people that chose A: ", $row1[0];
echo "<br>Number of people that chose B: ", $row2[0];
echo "<br>Number of people that chose C: ", $row3[0];
echo "<br>Number of people that chose D: ", $row4[0];
echo "<br>Number of people that chose E: ", $row5[0];
echo "<br>Number of people that chose F: ", $row6[0];
echo "<br>Number of people that chose G: ", $row7[0];
echo "<br>Number of people that chose H: ", $row8[0];
echo "<br>Number of people that chose I: ", $row9[0];
echo "<br>Number of people that chose J: ", $row0[0];
$array = array($row1[0],$row2[0],$row3[0],$row4[0],$row5[0],$row6[0],$row7[0],$row8[0],$row9[0],$row0[0]);
echo json_encode($array);
?>

現在,我知道我將不得不使用json對PHP數組進行編碼,以便對其進行正確格式化,而且我可能將不得不使用AJAX來調用PHP腳本以獲取數據。

這就是我遇到的問題,我不確定如何獲取結果並將其解析到java數組中,以便可以使用SQL數據庫中的結果更新圖形。

任何幫助將非常感激!

謝謝克里斯托弗

如果要通過ajax調用php代碼,請嘗試:

$(function(){
var chart = $('#chart').highcharts();
$('#refreshchart').click(function() {
        $.ajax({
           type: "GET",
           url: "some.php",
           success: function(data) {
               chart.series[0].setData($.parseJSON(data));
           }
        });
    });
});

只需將“ some.php”設置為您的php文件名。

該代碼有效

var str_array=[];

function something()
{
    str_array= <?php echo json_encode($array); ?>;
    alert(str_array);`
}
<script>
var contants = <?php echo json_encode($array); ?>
</script>

然后將其轉換為數組。 jQuery的$.parseJSON(string)可能會有所幫助。

如果可能,避免在代碼中編寫動態JavaScript,為此使用網絡服務,例如,您可以使用jQuery通過AJAX調用獲取此數據。

$.ajax({
  url: "query.php",
  data: { json: "on" },
}).done(function(data) {
  console.log(data);
  alert("found " + data.length + " elements" + "\n" + "first one: " + data[0].name + " = " + data[0].total);
});

我更喜歡這樣寫:

<?php
include 'dbcon.php';

$query =
    "SELECT 'A' AS name,count(*) AS total FROM test WHERE ans=0 UNION " .
    "SELECT 'B' AS name,count(*) AS total FROM test WHERE ans=1 UNION " .
    "SELECT 'C' AS name,count(*) AS total FROM test WHERE ans=2 UNION " .
    "SELECT 'D' AS name,count(*) AS total FROM test WHERE ans=3 UNION " .
    "SELECT 'E' AS name,count(*) AS total FROM test WHERE ans=4 UNION " .
    "SELECT 'F' AS name,count(*) AS total FROM test WHERE ans=5 UNION " .
    "SELECT 'G' AS name,count(*) AS total FROM test WHERE ans=6 UNION " .
    "SELECT 'H' AS name,count(*) AS total FROM test WHERE ans=7 UNION " .
    "SELECT 'I' AS name,count(*) AS total FROM test WHERE ans=8 UNION " .
    "SELECT 'J' AS name,count(*) AS total FROM test WHERE ans=9";

$result = $mysqli->query($query) or die($mysqli->error.__LINE__);

$rows = $result->fetch_all(MYSQLI_ASSOC);

$print_json = !empty($_GET['json']) && $_GET['json']=='on'; // your content negotiation logic here

if ($print_json) {
    header('Content-Type: application/json');
    echo json_encode($rows);
} else {
    foreach ($rows as $row) {
        echo "Number of people that chose {$row['name']}: {$row['total']}";
    }
}

這樣,您就可以擁有更多的控制權和更簡潔的代碼。 我認為您的代碼可以改善SQL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM