2013-02-18 37 views
0

我正在尝试将行标题插入到一个html表格中,该表格后来由内存来自MYSQL查询的php数组填充。用php数组完成一个html表格

我已经得到了一切的代码,除了行标题在每行开头的4列重复,而不是只显示$ item [1]为第一行,$ item [2]为第二行,依此类推。

这里是我的代码:

// query the database 
$result = mysql_query($query_getproductbrands); 

// cols we are interested in (from the SQL query) 

$cols = array(
    'productName', 
    'brandName', 
    'productDescription', 
    'productPrice', 
); 

$titles = array(
    'Product', 
    'Brand', 
    'Description', 
    'Price', 
); 

// initialize rotated result using cols 
$rotated = array(); 
foreach($cols as $col) { 
    $rotated[$col] = array(); 
} 

// fill rotated array 
while(($row = mysql_fetch_assoc($result)) !== false) { 
    foreach($cols as $col) { 
    $rotated[$col][] = $row[$col]; 
    } 
} 

// echo html 
echo "<table border=1 width=473>"; 
echo "<tr>"; 

echo "</tr>"; 
foreach($rotated as $col => $values) { 
echo "<tr>"; 

foreach($titles as $title) { 
    echo "<td> " . htmlentities($title) . "</td>"; 
} 


foreach($values as $value) { 
    echo "<td> " . htmlentities($value) . "</td>"; 
    } 
    echo "</tr>"; 
} 
echo "</table>"; 

?> 

因此,这是生产含有表:

产品品牌描述价格产品1产品产品3

产品品牌说明价格brand1 brand2 brand3

产品品牌描述价格description1 description2 description3

产品品牌说明价格价格1 price2 price3

而且我想它产生含有表:

产品产品1产品产品3

品牌brand1 brand2 brand3

描述内容描述的内容描述description3

价格价格1价格2价格3

我想过为第一个'title'数组做一个循环,然后是'values'数组的循环,但这不起作用。

如果我在第一个循环中回显$ col,我只是重复了第一个值(产品),我可以选择$ title [0],但我不确定如何将它增加到每一行然后为剩余的数据查询(值)实现循环。

请有人提供一些建议,以实现所需的表?

+0

waaaa,所以很多人仍然使用mysql_ *。它已被弃用。移到MySQLi这里;它是无痛的。 – Amelia 2013-02-18 23:17:54

+0

Hiroto,你在说什么 - 如果我使用$ result = mysqli_query($ query_getproductbrands);我会得到与使用$ result = mysql_query($ query_getproductbrands)完全一样的东西; ?? – 2013-02-19 10:58:09

+0

'$ db = mysqli_connect(* vars); $ result = mysqli_query($ db,$ sql);'(* vars是你的连接细节)。所以是的,但尝试看OOP界面。这非常有用。 – Amelia 2013-02-19 13:15:40

回答

0

移动这个外的foreach循环:

foreach($titles as $title) { 
    echo "<td> " . htmlentities($title) . "</td>"; 
} 

最好把它放在这儿之间:

echo "<tr>"; 
<-- Put me here. 
echo "</tr>"; 

如果我理解正确的是应该做的伎俩。

+0

我不确定这是否有效。我是否把整个foreach循环放在你说的回声位之间,进一步的代码?它似乎将4列标题放在顶部。 – 2013-02-18 22:50:42