gpt4 book ai didi

javascript - 如何在while循环中使用PHP动态显示Javascript代码

转载 作者:行者123 更新时间:2023-11-28 03:14:59 24 4
gpt4 key购买 nike

我正在使用Google图表显示文件结果。我正在使用PHP while循环从数据库打印所有结果文件。我面临的图表问题仅在第一个文件上显示,其余文件为空白。我希望图表在每个文件上显示其编号。

这是我的代码:

<?php 

while($emailList = mysqli_fetch_assoc($emailListResults)) { ?>

<script type="text/javascript">
google.charts.load("current", {packages:["corechart"]});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Emails', 'Results'],
<?php

$elementText = ['OK', 'Catch All', 'Unknown', 'Invalid', 'Disposable'];
$elementCount = [$emailList['ok'], $emailList['catchAll'], $emailList['unknown'], $emailList['invalid'], $emailList['disposable']];

for ($i = 0; $i < 5; $i++) {
echo "['{$elementText[$i]}'" . "," . "{$elementCount[$i]}],";
}

?>
]);

var options = {
legend: 'none',
pieSliceText: 'label',
title: <?php echo "'{$emailList['fileName']}',"; ?>
pieStartAngle: 0,
};

var chart = new google.visualization.PieChart(document.getElementById('resultchart'));
chart.draw(data, options);
}
</script>
<div id="resultchart" style="width: 250px; height: 250px;"></div>

<?php } ?>

最佳答案

问题是您仅使用一个元素/ ID来显示图表;根据您的代码,所有图表都试图绘制同一元素,我认为这是一个问题。

例如,如果您在$emailListResults中有3个不同的项目,那么您将拥有3个ID为“ resultchart”的元素,并且所有3个元素都在document.getElementById('resultchart')上显示图表,这是相同的元素,而不是每个项目都不同的元素。

也许像这样尝试为每个结果显示的resultchart元素的ID添加索引。这应该允许您在不同的图表区域显示不同的图表:

<?php 
$index = 0;
while($emailList = mysqli_fetch_assoc($emailListResults)) { ?>

<script type="text/javascript">
google.charts.load("current", {packages:["corechart"]});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Emails', 'Results'],
<?php

$elementText = ['OK', 'Catch All', 'Unknown', 'Invalid', 'Disposable'];
$elementCount = [$emailList['ok'], $emailList['catchAll'], $emailList['unknown'], $emailList['invalid'], $emailList['disposable']];

for ($i = 0; $i < 5; $i++) {
echo "['{$elementText[$i]}'" . "," . "{$elementCount[$i]}],";
}

?>
]);

var options = {
legend: 'none',
pieSliceText: 'label',
title: <?php echo "'{$emailList['fileName']}',"; ?>
pieStartAngle: 0,
};
<?php
echo "var chart = new google.visualization.PieChart(document.getElementById('resultchart$index'));";
echo "chart.draw(data, options);";
?>
}
</script>

<?php
echo "<div id='resultchart$index' style='width: 250px; height: 250px;'></div>";
$index++;
} ?>


唯一的更改是对HTML的最后几行以及您的 chart创建代码。

关于javascript - 如何在while循环中使用PHP动态显示Javascript代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59722665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com