Trước tiên, bạn có thể tập hợp tất cả chúng vào một vùng chứa, sử dụng id
s làm chìa khóa của bạn để chúng sẽ được nhóm lại với nhau. Sau đó, chỉ cần in chúng tương ứng:
$data = array();
while($row = $results->fetch_assoc()){
$id = $row['id'];
$name = $row['name'];
$data[$id][] = $name; // group them
}
foreach($data as $id => $values) {
// each grouped id will be printed in each table
echo '<table>';
// header
echo '<tr>';
echo '<td>ID</td>' . str_repeat("<td>$id</td>", count($values));
echo '</tr>';
echo '<tr>';
echo '<td>Name</td>';
foreach($values as $value) {
echo "<td>$value</td>";
}
echo '</tr>';
echo '</table><br/>';
}
Điều này sẽ hoạt động nếu các trường đó giống như vậy, nếu bạn cần một thứ gì đó năng động hơn, bạn cần một thứ nguyên khác và thay vì chỉ đẩy name
, bạn sẽ cần đẩy toàn bộ hàng:
$results = $db->query('SELECT id, name, age FROM table1');
$data = array();
while($row = $results->fetch_assoc()){
$id = $row['id']; unset($row['id']);
$data[$id][] = $row; // group them
}
$fields = array('name', 'age');
foreach($data as $id => $values) {
// each grouped id will be printed in each table
echo '<table>';
// header
echo '<tr>';
echo '<td>ID</td>' . str_repeat("<td>$id</td>", count($values));
echo '</tr>';
foreach($fields as $field) {
// construct td
$temp = '';
echo "<tr><td>$field</td>";
for($i = 0; $i < count($values); $i++) {
$temp .= '<td>' . $values[$i][$field] . '</td>';
}
echo $temp; // constructed td
echo '</tr>';
}
echo '</table><br/>';
}