尝试通过循环遍历mysql结果来生成html表列和行。在变量$ row_count和$ col_count:
中定义的行和列$id = $_GET['id'];
$sql = "SELECT * FROM $table WHERE id = {$id}";
$result = $db->query($sql);
if($result->num_rows) {
while($row = $result->fetch_object()) {
$row_count = $row->rows;
$col_count = $row->cols;
$fields = $row->fields;
$data = json_decode($fields);
foreach($data as $value) {
echo '<td>' . $value . '</td>';
for($i = 0; $i < $col_count; $i++){
echo '</tr><tr>';
}
}
}
$result->free();
}
截至目前,这产生的结果如下:
<table>
<td>row1-data1</td></tr><tr></tr><tr></tr><tr></tr><tr><td>row1-data2</td></tr><tr></tr> <tr></tr><tr></tr><tr><td>row1-data3</td></tr><tr></tr><tr></tr><tr></tr><tr><td>row1-data4</td></tr><tr></tr><tr></tr><tr></tr><tr><td>row2-data1</td></tr><tr></tr><tr></tr><tr></tr><tr><td>row2-data2</td></tr><tr></tr><tr></tr><tr></tr><tr><td>row2-data3</td></tr><tr></tr><tr></tr><tr></tr><tr><td>row2-data4</td></tr><tr></tr><tr></tr><tr></tr><tr> </table>
所有数据不应该根据$ row_count的值进入一个表行,而应分为多行。
答案 0 :(得分:1)
按列数每行拆分数组并使用标记收回
$chunk = array_chunk($data, $col_count);
foreach ($chunk as $row)
echo '<tr><td>' . implode('</td><td>', $row) . '</td></tr>';
答案 1 :(得分:-1)
不确定为什么要将tr
标记放在循环中。 tr
包装了所有td
代码。
while($row = $result->fetch_object()) {
echo '<tr>';
...
foreach($data as $value) {
echo '<td>', $value, '</td>';
}
echo '</tr>';
}
此外,您需要转义$_GET['id']
编辑:
每个元素都需要进入表格中的$row_count
x $col_count
块?我误解了这个问题。怎么样呢
while($row = $result->fetch_object()) {
...
$i = 0;
for ($r = 0; $r < $row_count; $r++) {
echo '<tr>';
for ($c = 0; $c < col_count; $c++,) {
echo '<td>', $data[$i++], '</td>';
}
echo '</tr>';
}
}
答案 2 :(得分:-1)
你是说这个吗?
$id = $_GET['id'];
$sql = "SELECT * FROM $table WHERE id = {$id}";
$result = $db->query($sql);
if($result->num_rows) {
while($row = $result->fetch_object()) {
$row_count = $row->rows;
$col_count = $row->cols;
$fields = $row->fields;
$data = json_decode($fields);
echo "<tr>";
foreach($data as $value) {
echo '<td>' . $value . '</td>';
}
echo "</tr>";
}
$result->free();
}