[英]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.