我想在我的数据库中输出城市,并在每个城市显示代理商的标识(company_name是图像的名称)
在屏幕截图中,您可以看到Head Office中有1个代理,Leighton Buzzard中有3个代理。下面的SELECT查询给了我不需要的2行。我已经将查询更改为GROUP BY,但所有这一切都删除了第二和第三个结果,然后显示我想要的2个结果,但只有2个Arpad徽标。我想要的是所有3个Leighton Buzzard徽标都在Leighton Buzzard的标题下展示。
我尝试在'city'上使用DISTINCT,但这似乎完全停止了查询。
非常感谢任何帮助。
"SELECT city, company_name FROM memberlogin_members ORDER BY city ASC"
$sql = "SELECT city, company_name FROM memberlogin_members GROUP BY city ASC ";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$id = $row["id"];
$office = $row["city"];
$agent = $row["company_name"];
$coverage.='<div id="officeCoverage" class="fluid "><h3>' . $office . '</h3></div> <div id="imageContainer" class="fluid "> <div id="imageCoverage" class="fluid "><img src="http://arpad.property/app/logos/' . $agent . '.jpg" alt="' . $agent . '"></div> </div>';
答案 0 :(得分:2)
您可以尝试这样的事情:
$sql = "SELECT city, company_name FROM memberlogin_members ORDER BY city ASC";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
$currentCity = NULL;
while($row = mysqli_fetch_assoc($result)) {
$id = $row["id"];
$office = $row["city"];
$agent = $row["company_name"];
if($row["city"] !== $currentCity) {
$currentCity = $row["city"];
$coverage .= '
<div id="officeCoverage" class="fluid ">
<h3>' . $office . '</h3>
</div>
';
}
$coverage .= '
<div id="imageContainer" class="fluid ">
<div id="imageCoverage" class="fluid ">
<img src="http://arpad.property/app/logos/' . $agent . '.jpg" alt="' . $agent . '">
</div>
</div>
';
}
}
您循环显示结果,但只有在城市发生变化时才会添加城市标题。如果没有,您只需添加图像。
PS:我不会为DIV使用“id”属性,因为它们在HTML代码中不止一次存在。