2012-12-16 36 views
0

我的代码对于生成图像数组有点复杂,但总体思路是创建8个饼图,然后需要在一列图表中显示表。我在做什么是错误的在我的HTML中获取图像。该函数与html位于同一个文件中。将使用imageCreat()php制作的图表插入到HTML中​​cell

构建图像

$FileHandle = fopen($FileName, 'r') or die("can't open file!!"); 

//Getting total for each question 
$i = 0; 
$start = 0; 
$finish = 0; 

while (($row = fgetcsv($FileHandle, 1024, ",")) !== FALSE) { 
    $total[] = $row[0] + $row[1] + $row[2] + $row[3] + $row[4]; 
    $average[] = round(((1 * $row[0] + 2 * $row[1] + 3 * $row[2] + 4 * $row[3] + 5 * $row[4])/$total[$i]), 2, PHP_ROUND_HALF_UP); 

    $start = 0; 
    $finish = 0; 

    $myImage[$i] = ImageCreate(200, 200); 

    $white = ImageColorAllocate($myImage[$i], 255, 255, 255); 
    $red = ImageColorAllocate($myImage[$i], 255, 0, 0); 
    $orange = ImageColorAllocate($myImage[$i], 191, 64, 0); 
    $olive = ImageColorAllocate($myImage[$i], 128, 128, 0); 
    $green = ImageColorAllocate($myImage[$i], 64, 191, 0); 
    $lt_green = ImageColorAllocate($myImage[$i], 0, 255, 0); 

    $finish = ($row[0]/$total[$i]) * 360; 
    //echo $start . ' ' . $finish . '<br>'; 
    if ($finish != $start) { 
    ImageFilledArc($myImage[$i], 100, 100, 50, 50, $start, $finish, $red, IMG_ARC_PIE); 
    $start = $finish; 
    $finish += ($row[1]/$total[$i]) * 360; 
    } 
else{ 
    $start = $finish; 
     $finish += ($row[1]/$total[$i]) * 360; 
} 
    if ($finish != $start) { 
     ImageFilledArc($myImage[$i], 100, 100, 50, 50, $start, $finish, $orange, IMG_ARC_PIE); 
     $start = $finish; 
     $finish += ($row[2]/$total[$i]) * 360; 
    } 
    else{ 
     $start = $finish; 
     $finish += ($row[2]/$total[$i]) * 360; 
    } 
    if ($finish != $start) { 
     ImageFilledArc($myImage[$i], 100, 100, 50, 50, $start, $finish, $olive, IMG_ARC_PIE); 
     $start = $finish; 
     $finish += ($row[3]/$total[$i]) * 360; 
    } 
    else{ 
     $start = $finish; 
     $finish += ($row[3]/$total[$i]) * 360; 
    } 
    if ($finish != $start) { 
     ImageFilledArc($myImage[$i], 100, 100, 50, 50, $start, $finish, $green, IMG_ARC_PIE); 
     $start = $finish; 
     $finish += ($row[4]/$total[$i]) * 360; 
    } 
    else{ 
     $start = $finish; 
     $finish += ($row[4]/$total[$i]) * 360; 
    } 
    if ($finish != $start) { 
     ImageFilledArc($myImage[$i], 100, 100, 50, 50, $start, $finish, $lt_green, IMG_ARC_PIE); 
    } 
    $i++; 
} 

,这里是我的尝试倒在HTML块

<td><?php echo $average[0] ?></td> 
<td><?php imagepng($myImage[0]); ?></td> 
<td><?php echo $total[0] ?></td> 

回答

0

只好用一个单独的文件图像生成,并与

<img src = "chart.php"> 
0

作为一个实际问题,你imagepng()函数需要有一个头()的告诉浏览器你的脚本正在发送一个PNG文件。如果使用echo语句将PNG文件混合到浏览器输出流中,那么效果不佳。完成此操作后,我只需将PNG文件写入服务器上的一个目录中,并发送一个标准HTML标签和PNG文件的URL。这可能是将饼图传送到客户端的最简单方法。

最好的问候,〜雷

+0

这是在学校分配调用它,所以我saddly不能做到这一点,该指令允许只有3个文件,一个表格,php文件和txt文件来存储调查结果。我无法写入任何其他文件,这是什么让我很难,所有的图形必须在结果页面中生成。是否有可能在​​标签内的脚本中生成图表?我早些时候尝试过,它只是写了一切。 –

+0

我可以使用单独的脚本来生成图表,因此在​​中使用该脚本可能会有效。我创建了一个名为chart.php的新文件,它的名字是'',最后一行是'imagepng($ myimage [0])',但我仍然没有收到任何东西 –