0

我有一个 HTML 表,我需要用从 select 语句中获取的值填充该表。表 cols 由数组 (0,1,2,3) 填充。查询的每个结果都将包含一个值为 (0-3) 的行“GATE”,但这些结果不会有任何可预测性。一个查询可以提取 4 行的“GATE”值为 0、1、2、3,下一个查询可以提取两行的值为 1 和 2 或 1 和 3。

我需要能够用对应的值填充这个 HTML 表。因此 HTML COL 0 将具有数据库行的 TTL_NET_SALES,其 GATE 值也为 0。

<?php

$gate = array(0,1,2,3);
$gate_n = count($gate);

/*
Database = 
my_table.ID
my_table.TT_NET_SALES
my_table.GATE
my_table.LOCKED
*/

$locked = "SELECT * FROM my_table WHERE locked = true";
$locked_n = count($locked);

/* EXAMPLE RETURN

Row 1:
my_table['ID'] = 1
my_table['TTL_NET_SALES'] = 1000
my_table['GATE'] = 1;

Row 2:
my_table['ID'] = 2
my_table['TTL_NET_SALES'] = 1500
my_table['GATE'] = 3;
*/

print "<table border='1'>";
print "<tr><td>0</td><td>1</td><td>2</td><td>3</td>";
print "<tr>";

for ($i=0; $i<$locked_n; $i++)
{
    for ($g=0; $g<$gate_n; $g++)
    {
        if (!is_null($locked['TTL_NET_SALES'][$i]) && $locked['GATE'][$i] == $gate[$g]) {
            print "<td>$".$locked['TTL_NET_SALES'][$i]."</td>";

        } else {
            print "<td>-</td>";
        }
    }
}

print "</tr>";
print "</table>";

/*
What I want to see:
<table border='1'>
<tr>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>-</td>
<td>1000</td>
<td>-</td>
<td>1500</td>
</tr>
</table>
*/

?>
4

2 回答 2

1

您的代码中似乎有错误...替换$col<$my_cols;$col < count($my_cols)

$my_cols = array(0,1,2,3);
for($i = 0; $i<$db_res; $i++)
{
    for($col = 0; $col<$my_cols; $col++)
    {
        if ($db_res[$i] == $col) {
            print "<td>".$db_res[$i]."</td>";
        } else {
            print "<td>-</td>";
        }
    }
}
于 2012-06-25T18:22:58.697 回答
0

当我只需要 array_search 时,我错误地遍历了第二个数组以检查是否相等。http://us3.php.net/manual/en/function.array-search.php

print "<table border='1'>";
print "<tr>";

$my_arr = array(0,1,2,3);

$vals = array(1,2);

for ($i = 0; $i<count($my_arr); $i++) 
{  
    print "<td>";
    $key = array_search($my_arr[$i], $vals);
    if (is_int($key)){
        print $vals[$key];
    } else {
        print "-";
    }
    print "</td>";
}

print "</tr>";
print "</table>";
于 2012-06-26T13:15:24.870 回答