尝试通过循环访问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 的值进入多行。
按列数拆分每行数组并使用标签收集
$chunk = array_chunk($data, $col_count);
foreach ($chunk as $row)
echo '<tr><td>' . implode('</td><td>', $row) . '</td></tr>';
不知道为什么你把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>';
}
}
你的意思是这个吗?
$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();
}