我有一个包含四个字段的数据库表。
id
是我的primary key
,其余字段是:餐厅的名称,地址和电话号码。现在,我有许多属于不同连锁店的餐馆,所以我使用相同的name
保存了它们,并且他们的address
和phone no
字段看起来像这样:
这就是我的数据库的样子:
id | name | address | Phone_no |
1 | restaurant1 | address1 | XXXXXX1 |
2 | restaurant1 | address2 | XXXXXX2 |
3 | restaurant1 | address3 | XXXXXX3 |
4 | restaurant2 | address1 | XXXXXX1 |
5 | restaurant2 | address2 | XXXXXX2 |
6 | restaurant3 | address1 | XXXXXX1 |
7 | restaurant4 | address1 | XXXXXX1 |
我想如何在我的页面中显示:
| name | address | Phone_no |
| restaurant1 | address1 | XXXXXX1 |
| | address2 | XXXXXX2 |
| | address3 | XXXXXX3 |
| restaurant2 | address1 | XXXXXX1 |
| | address2 | XXXXXX2 |
| restaurant3 | address1 | XXXXXX1 |
| restaurant4 | address1 | XXXXXX1 |
现在我想用PHP显示它,包括姓名,地址和电话号码,但名称只能显示一次。
这是我的PHP代码:
<?php
//this is my query.
$query = "SELECT * FROM details WHERE cat_id = $id GROUP BY name";
$result = mysqli_query($con,$query);
while($row = mysqli_fetch_array($result)){
?>
<table>
<tr>
<td><?php echo cfirst($row['name'] ?></td>
<td><?php echo row['address'] ?></td>
<td><?php echo row['phone'] ?></td>
</tr>
</table>
<?php } ?>
此查询的结果:
| name | address | Phone_no |
| restaurant1 | address1 | XXXXXX1 |
| restaurant2 | address1 | XXXXXX1 |
| restaurant3 | address1 | XXXXXX1 |
| restaurant4 | address1 | XXXXXX1 |
答案 0 :(得分:2)
首先你必须删除:
$query = "SELECT * FROM details WHERE cat_id = $id";
这个小组只是删除了多个地址的餐馆地址。你必须在我的视图中用你的代码来做。
<?php
$last_name = '';
while($row = mysqli_fetch_array($result)){
?>
<table>
<tr>
<?php if ($last_name == ''){?>
<td><?php echo cfirst($row['name'] ?></td>
<?php
$last_name = $row['name'];
} elseif($last_name != $row['name']){
?>
<td><?php echo cfirst($row['name'] ?></td>
<?php }else{ ?>
<td></td>
<?php } ?>
<td><?php echo row['address'] ?></td>
<td><?php echo row['phone'] ?></td>
</tr>
</table>
<?php } ?>
这将解决您的问题,只需相应调整您的HTML。
答案 1 :(得分:1)
这就是我要做的事情:
$last_restaurant
名称$last_restaurant
名称与下一个餐馆名称相同,则只显示地址和电话$last_restaurant
名称与下一个餐馆名称不同,则回显所有信息Here's一个工作示例,尝试在您的代码中实现它。
答案 2 :(得分:1)
$result = mysqli_query($con,"SELECT * FROM test where cat_id = $id");
while($row = mysqli_fetch_array($result)){
$name = $row['name'];
$address = $row['address'];
$phone = $row['phone'];
?>
<doctype! html>
<head>
</head>
<body>
Name: <?php echo $name ?> <br>
Address: <?php echo $address ?><br>
Phone: <?php echo $phone ?><br><br>
</body>
</html>
<?php
}
?>
输出:
姓名:rest1
地址:玫瑰街23号
电话:123125325
姓名:rest2
地址:23银行街
电话:24343532523
姓名:rest1
地址:25绿街
电话:53425435432
姓名:rest2
地址:54 rover street
电话:6434532
答案 3 :(得分:0)
你仍然需要从SQL中获取所有行,所以我认为这是你可以在PHP方面解决的问题。那么也许你有一个表格,其中Name列有多行,所以你有唯一的地址,但只显示一次名称?
$command = "select * from table_name";
$result = mysqli_query($link,$command);
$last = "";
$count = 0;
while($data = mysqli_fetch_assoc($result)){
if($data['name'] == $last){
//print table row
++$count;
} else {
//echo new <TD> cell that has rowspan="$count"
//print table row
$count = 0;
$last = $data['name'];
}
}
非常粗糙,没有测试。