Php 循环浏览数据库表数据并以适当的格式显示
数据库中有两个表 桌子室有以下列和数据 id(int) room_type(varchar) price(int) 1 single room 25000 2 double room 50000 id(int) image(varchar) room_id(int) 1 single.jpg 1 2 single1.jpg 1 3 double.jpg 2 id(内部)房间类型(varchar)价格(内部) 1间单人房25000 2间双人房50000 和桌子室\u图像具有以下列和数据 id(int) room_type(varchar) price(int) 1 single room 25000 2 double room 50000 id(int) image(varchar) room_id(int) 1 single.jpg 1 2 single1.jpg 1 3 double.jpg 2 id(int)图像(varchar)房间id(int) 1.jpg 1 2.1.jpg 1 3 double.jpg 2 当我使用以下PHP代码时:Php 循环浏览数据库表数据并以适当的格式显示,php,mysql,Php,Mysql,数据库中有两个表 桌子室有以下列和数据 id(int) room_type(varchar) price(int) 1 single room 25000 2 double room 50000 id(int) image(varchar) room_id(int) 1 single.jpg 1 2
<?php
$query = "SELECT a.room_type, s.image FROM room as a
JOIN room_image as s
ON a.id = s.room_id ";
?>
<?php if ($rooms = $mysqli->query($query)) { ?>
<?php while ($room = $rooms->fetch_object()) { ?>
<h4><?php echo $room->type; ?></h4>
<p><?php echo $room->image; ?></p>
<?php } ?>
<?php } ?>
我得到以下结果:
single room
single.jpg
single room
single1.jpg
double room
double.jpg
单人房
single.jpg
单人房
single1.jpg
双人间
double.jpg
但我希望我的结果显示如下
single room
single.jpg
single1.jpg
double room
double.jpg
单人房
single.jpg
single1.jpg
双人间
double.jpg
因此,有没有人可以帮助我编写正确的php语法来生成所需的结果(最好使用join sql语句)首先根据房间类型在查询中添加一个
ORDER BY
子句。这将把每种类型的所有房间排列在一起
$query = "SELECT a.room_type, s.image FROM room as a
JOIN room_image as s
ON a.id = s.room_id ORDER BY a.room_type";
然后,仅当以前未显示类型时才显示该类型。使用一个额外的变量来跟踪它
<?php
$lastType="";
while ($room = $rooms->fetch_object())
{
if($lastType!=$room->type)
{
echo "<h4>",$room->type,"</h4>";
}
echo "<p>",$room->image,"</p>";
$lastType=$room-type; // This variable keeps track of room type display
}
?>
而不是使用联接查询。只需将图像添加到room表下的字段中,然后只查询一个表 数据库:
id(int) room_type(varchar) price(int) images(varchar)
1 single room 25000 ["single.jpg","single1.jpg"]
2 double room 50000 ["double.jpg"]
$images = json_decode($room->image);
foreach($images as $image){
echo $image;
}
PHP:
id(int) room_type(varchar) price(int) images(varchar)
1 single room 25000 ["single.jpg","single1.jpg"]
2 double room 50000 ["double.jpg"]
$images = json_decode($room->image);
foreach($images as $image){
echo $image;
}
这将是一个糟糕的数据库设计,它将违反第一种无重复组的标准形式的数据库设计规则,并且表中的每个单元格都应该包含一个值。我看到数据库使用JSON数组会导致这样的事实,即将单个值存储到自己的表和记录中是荒谬的,并且在查询时会降低性能所有的价值观。顺便说一句,规则是注定要被打破的。无论如何,谢谢你的好主意@user2067005,可能会在其他时间使用它,但不是现在。再次谢谢你,没问题。老实说,最好按你自己的方式去做。更容易管理图片。非常感谢@Hanky웃 潘基。这很有道理。