[英]PHP MYSQL nested join
<?php
require "includes/dbh_l4d2.php";
$sql = "
SELECT *
FROM vpk
JOIN maps
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()) {
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>';
for ($i=0; $i < $row["map_count"]-1; $i++) {
echo '<tr><td>'.$row["map_name"].'></td></tr>';
}
}
}
?>
</table></body></html>
這是代碼中的 output
這就是我想要的樣子
您的嵌套循環是從同一行獲取map_name
,而不是從每一行結果。
您可以做的是使用GROUP_CONCAT()
將所有 map 名稱組合成一行結果,然后在創建表時使用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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.