从数据库获取颜色多边形PHP

时间:2011-12-17 22:49:55

标签: php mysql polygon

我有一个具有以下结构的数据库。

Index    Output

  1       1
  2       2
  3       1
  4       1
  5       3
  6       1
  7       2
  8       1
  9       3
 10       2
 11       2
 12       3

我希望创建一个3X4的正方形矩阵(有点像tic tac toe游戏并根据输出绘制它们)。因此,如果输出为1,我将绘制该方形红色,如果输出为2,我将绘制该方形蓝色,如果输出为3,我将绘制该方形绿色。广场看起来像这样(除了我使用图形)

 -- -- --
|  |  |  |
 -- -- --
|  |  |  |
 -- -- --
|  |  |  |
 -- -- -- 
|  |  |  |
 -- -- --

据我所知,我可以使用多边形函数来绘制和填充形状,但是我会编写12个数组来定义12个不同的四个坐标集,或者是否有更简单的方法

我现在正在做以下事情

<?php

$user_name = "root";
$password = "pass";
$database = "db";
$server = "127.0.0.1";

$db_handle = mysql_connect($server, $user_name, $password);
$db_found = mysql_select_db($database, $db_handle);

$blue = imagecolorallocate($image, 0, 0, 255);
$red = imagecolorallocate($image, 255, 0, 0);
$green = imagecolorallocate($image, 0, 255, 0);
$image = imagecreatetruecolor(400, 300);
$col_poly = imagecolorallocate($image, 255, 255, 255);

if ($db_found) {
for ($i = 0 ; $i<=12 ; $i=$i+1) {

    $SQL = "SELECT * FROM table1 where index like " . $i
    $result = mysql_query($SQL);
    while ($db_field = mysql_fetch_assoc($result)) {
        if  ($db_field['Result'] == 1) { // and similarly for blue and green 

            imagepolygon($image, array(
                 0,   0,
                     0,  10,
                 10, 10,
                 10, 0
            ),
            4,
        $col_poly);

imagefilledpolygon($image, $values, 6, $red
}
 // and so on for others 
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>

由于

1 个答案:

答案 0 :(得分:0)

一些数学应该有帮助!如果我们计算出给定数字应该出现的列和行,那么剩下的应该相当简单。这两行应该有所帮助:

$col = ($i-1)%3;
$row = floor(($i-1)/3);

并且将它们置于上下文中,我认为类似下面的内容应该有效:

while ($db_field = mysql_fetch_assoc($result)) {
    switch($db_field['Result']) {
        case 1: $colour = $blue; break;
        case 2: $colour = $red; break;
        case 3: $colour = $green; break;
    }
    $i = $db_field['index'];
    $col = ($i-1)%3;
    $row = floor(($i-1)/3);
    imagefilledpolygon($image, array(
        $row*10, $col*10,
        $row*10, $col*10+10,
        $row*10+10, $col*10+10,
        $row*10+10, $col*10
    ),4,$colour);
}