私はphpプログラミングの初心者ですが、phpとhtmlを使用してmysqlデータベースからデータを表示する際にいくつかの問題があります。これは私のテーブルです:
location :id_location
location
component :id_comopnent
id_location
comonen
sub_component :id_sub_component
id_comopnent
sub_component
次の出力を取得するにはどうすればよいですか:
location
|-----------|-------------|
| component |sub component|
|-----------|-------------|
| | Data |
| Data |-------------|
| | Data |
|-----------|-------------|
| | Data |
| |-------------|
| Data | Data |
| |-------------|
| | Data |
|-----------|-------------|
location
|-----------|-------------|
| component |sub component|
|-----------|-------------|
| | Data |
| Data |-------------|
| | Data |
|-----------|-------------|
| | Data |
| Data |-------------|
| | Data |
|-----------|-------------|
Location (according to the data)
これは私のコードです
<?php
$dsn = "mysql:host=localhost;dbname=kampus_hijau";
$dbc = new PDO($dsn, 'root', '');
$sql1 = "SELECT * FROM Lokasi ORDER BY id_location";
$stmt1 = $dbc->prepare($sql1);
$stmt1->execute();
while ($row1 = $stmt1->fetch(PDO::FETCH_ASSOC)) {
$location++;
echo "Location $location : ".$row1['location'];
?>
<table width="469" border="1">
<tr bgcolor="#00FFFF">
<th width="109" class="rounded" scope="col">Component</th>
<th width="248" class="rounded" scope="col">Sub Component</th>
<th>Nilai</th>
</tr>
<?php
$query = "SELECT * FROM sub_component,component where sub_component.id_component=component.id_component and component.id_location='$data[id_location]' order by component.id_location";
$stmt = $dbc->prepare($query);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$result[$row['component']][] = $row['sub_component'];
}
foreach($result as $id => $invoices) {
echo '<td rowspan='. count($invoices) . '>' . $id . '</td>';
$count = 0;
foreach ($invoices as $invoice) {
if ($count != 0) {
echo '<tr>';
}
echo "<td>$invoice</td>";
echo "</tr>";
$count++;
}
}
?>
</table>
<?php
}
?>
そして、これは私が得る出力です:
そのコードでは、出力形式は適切ですが、データが適切に表示されず、常に次の表の前のデータが表示されます (赤いボックスは繰り返されるデータです)。どうすれば修正できますか?