【发布时间】:2019-04-05 21:25:17
【问题描述】:
我想做的很简单。我有一个名为“ice_cream_sales”的冰淇淋销售 MySQL 数据库表。我的表格列是冰淇淋的“风味”和“日期时间”时间戳。我想显示每年每种口味的冰淇淋销售数量。所以我有一个while循环,它执行一个SQL查询来检索每年的行数,然后根据检索到的行的冰淇淋口味,它将它添加到适当的PHP变量中,以便计算那种口味的冰淇淋该冰淇淋在当年的销售额。然后我想使用一个使用 JS 数组的谷歌折线图来显示每年的冰淇淋销量。访问此链接以了解其工作原理:https://google-developers.appspot.com/chart/interactive/docs/gallery/linechart。
但是,现在我只想看看我可以成功地将 PHP 变量转换为 JS 变量,然后将这些变量添加到 JS 数组中。因此,我使用 echo 语句将 PHP 变量转换为 JS 变量,因为 PHP 代码嵌入在 JS 脚本标记中。然后,我使用这些计数器值为每年的每种风味冰淇淋创建一个数组,该数组将附加到用于 Google 折线图的数组中。当我尝试执行代码时,我得到一个没有错误消息的空白页。任何建议和修复将不胜感激。
当我注释掉 while 语句下的 if 语句代码块以检查冰淇淋的味道时,代码运行良好,我得到一个输出数组 [2010, 0, 0, 0], [2011, 0, 0, 0] 等等。
<script>
var toAdd = new Array();
<?php
$year = intval(2010);
while ($year <= 2019) {
include 'includes/dbh_cred.php';
$sql = "SELECT * FROM ice_cream_sales WHERE myDate LIKE '$year%'";
$chocolate = intval(0);
$vanilla = intval(0);
$strawberry = intval(0);
$result = mysqli_query($connect, $sql);
if (mysqli_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
if ($row['Flavor'] == 'Chocolate')
$chocolate = $chocolate + 1;
else if ($row['Flavor'] == 'Vanilla')
$vanilla = $vanilla + 1;
else if ($row['Flavor'] == 'Strawberry')
$strawberry = $strawberry + 1;
}
}
//chocolate, vanilla, strawberry sales for that particular year
echo "var chocolate = " . $chocolate . ";";
echo "var vanilla = " . $vanilla . ";";
echo "var strawberry = " . $strawberry . ";";
echo "var year = " . $year . ";";
//add these values to an array
echo "toAdd.push([year, chocolate, vanilla, strawberry]);";
$year = $year +1;
}
?>
var data = new Array(["Year", "Chocolate", "Vanilla", "Strawberry"]);
console.log(data[0][0] + "\t" + data[0][1] + "\t" + data[0][2] + "\t"
+ data[0][3]);
data.push(toAdd);
for(var i = 1; i < data.length; i++) {
for(var j = 0; j < data[i].length; j++) {
console.log(data[i][j]);
【问题讨论】:
-
为什么不直接将整个数组输出到 JavaScript 中?
-
只需在查询中获取总数,就不需要循环了。
标签: javascript php mysql sql