我有一个具有以下结构的数据库。
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);
?>
由于
答案 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);
}