Ваш вложенный l oop получает map_name
из той же строки, а не из каждой строки результатов.
Что вы можете сделать, это использовать GROUP_CONCAT()
, чтобы объединить все имена карт в одну строку результатов, затем используйте explode()
, чтобы разделить их при создании таблицы.
<?php
require "includes/dbh_l4d2.php";
$sql = "SELECT vpk.*, GROUP_CONCAT(maps.map_name) AS map_names
FROM vpk
INNER JOIN maps ON vpk.vpk_id = maps.vpk_id
GROUP BY vpk.vpk_id";
//$sql = "SELECT * FROM vpk, maps JOIN vpk ON vpk.vpk_id = maps.vpk_id";
$result = mysqli_query($conn, $sql);
?>
<!DOCTYPE html><html><head><title>Website Title</title>
<link rel = "stylesheet" type = "text/css" href = "assets/css/tek_style.css" /></head>
<body>
<table>
<tr><th>VPK</th><th>MAP</th></tr>
<?php
$result_num_rows = mysqli_num_rows($result);
if( $result_num_rows> 0) {
//while($row = mysqli_fetch_array($result)) {
while($row = $result->fetch_assoc()) {
$map_names = explode(',', $row['map_names']);
echo '<tr><td id="'.$row["alpha_anchor"].'" rowspan="'.$row["map_count"].'" class="first_row">'.
'<h3 id="'.$row["anchor"].'">'.$row["vpk_title"].'</h3>'.$row["vpk_file"].'<br>'.
'<a class="details" href="'.$row[details].'">Details</a> '.
'<i><a href="'.$row[download].'">Download vpk</a></i>'.
'</td></tr>';
foreach ($map_names as $map_name) {
echo '<tr><td>'.$map_name.'></td></tr>';
}
}
}
?>
</table></body></html>