我想用php構建一個矩陣類型的表。 MySQL的表結構如下。Mysql&PHP:動態顯示矩陣表
表:座位
id rows columns value
1 r1 c1 1
2 r2 c2 2
3 r3 c3 3
等行和列的n個會和名字也將是不同的像A1,A2,B2,B3
我只是想顯示它像下面
c1 c2 c3
r1 1 0 0
r2 0 2 0
r3 0 0 3
等。
如何顯示像上面?
我想用php構建一個矩陣類型的表。 MySQL的表結構如下。Mysql&PHP:動態顯示矩陣表
表:座位
id rows columns value
1 r1 c1 1
2 r2 c2 2
3 r3 c3 3
等行和列的n個會和名字也將是不同的像A1,A2,B2,B3
我只是想顯示它像下面
c1 c2 c3
r1 1 0 0
r2 0 2 0
r3 0 0 3
等。
如何顯示像上面?
這裏的想法是將表格數組轉換爲二維矩陣,第一列和第二列是二維矩陣的「鍵」。
現在假設你已經使用了SQL 以下三個步驟將做魔術從表中的數組:
1)初始化從表陣列的列密鑰的二維矩陣。
// Initializing the two dimensional matrix with zeros
function initialize_2d($m, $value = 0) {
$result = array();
for ($i=1; $i <= $m ; $i++) {
for ($j=1; $j <= $m ; $j++) {
$result['r'.$i]['c'.$j] = 0;
}
}
return $result;
}
2)相應的值指定到矩陣
// Assign values from Table Structure to Two Dimensional Matrix
function convert_2d($m_arr){
$matrix_arr = initialize_2d(sizeof($m_arr));
foreach($m_arr as $sub_arr)
{
$matrix_arr[$sub_arr[0]][$sub_arr[1]] = $sub_arr[2];
}
return $matrix_arr;
}
3)打印矩陣
// Prints the 2D Matrix
function print_2d($matrix_arr){
$table_html = '';
$table_html .= '<table>
<tr><td></td>';
foreach ($matrix_arr as $matrix_subarr) {
foreach ($matrix_subarr as $key => $value) {
$table_html .= '<td>'.$key.'</td>';
}
break;
}
foreach ($matrix_arr as $key => $matrix_subarr) {
$table_html .= '<tr>
<td>'.$key.'</td>';
foreach ($matrix_subarr as $value) {
$table_html .='<td>'.$value.'</td>';
}
$table_html .= '</tr>';
}
$table_html .= '</table>';
return $table_html;
}
測試如上所述使用以下測試代碼功能:
// Array from Table
$m_arr = array(array("r1","c1","1"),array("r2","c2","2"),array("r3","c3","3"));
$matrix_arr = convert_2d($m_arr);
$table_html = print_2d($matrix_arr);
echo $table_html;
使用查詢:
SELECT rows, columns, value
FROM yourTable
ORDER BY rows, columns
然後處理在一個循環的結果。只要rows
值發生更改,請在HTML表格中啓動一個新的<tr>
。
爲了增加Barmar的反應將是最容易治療從數據庫查詢的結果爲數組,下面的例子:
$sql = "Select * from yourtable order by rows, columns";
$results = mysqli->query($sql);
While ($row = $results-> fetch_array()){
$rows[]=$row;
}
Foreach ($rows as $row){
$row['rows'];
$row['columns'];
}
您將需要修改foreach循環來補充你正在尋找的HTML對於。此外,mysqli訪存陣列將在以下鏈接中進行更詳細的討論:http://us2.php.net/mysqli_fetch_array
您可以從數據庫中循環處理項目。 每個項目你做TD,併爲每一行,你做的TR
例如
<?php
echo "<Table>";
echo "<tr>";
echo "<td></td>";
echo "<td>C1</td>";
echo "<td>C2</td>";
echo "<td>C3</td>";
echo "</tr>";
echo "<tr>";
echo "<td>r1</td>";
echo "<td>1</td>";
echo "<td>0</td>";
echo "<td>0</td>";
echo "</tr>";
echo "<tr>";
echo "<td>r2</td>";
echo "<td>0</td>";
echo "<td>2</td>";
echo "<td>0</td>";
echo "</tr>";
echo "<tr>";
echo "<td>r3</td>";
echo "<td>0</td>";
echo "<td>0</td>";
echo "<td>3</td>";
echo "</tr>";
echo "</table>";
?>
而不必文本,你可以從可變負載,或者你的mysql文字這樣
<php?
//everything is the same but here is an example of a <td>
$test = "hello world";
echo "<td>".$text."</td>";
?>
的
<?php
function matrics($int){
$j = $int*$int;
for($i=1;$i<=$j;$i++) {
echo $i.' ';
if($i%$int==0)
echo '<br/>';
}
}
matrics(4);
?>