首页 > 解决方案 > php 回显每个唯一的 sql 顺序

问题描述

从 db 表中,我查询所有结果并按位置排序。我将此查询回显到复选框中。所以每个地方都有自己的复选框。最重要的是复选框有一个标题,select one or multiple places但现在我还想为每组地方添加一个标题。

我在数据库中有以下列:

id, ewladressenplaats, postalcode
1 amsterdam 1001
2 amsterdam 1002
3 amsterdam 1003
4 rotterdam 2001
5 rotterdam 2002
6 maastricht 3001
7 hengelo 4001
8 hengelo 4002

我运行这个 sql 查询:

$query = 'SELECT * FROM ##_adressen_adres ORDER BY ewladressenplaats';

然后我回应这个:

echo "<div";
  echo "<div class='header'>Selecteer een of meerdere plaatsen</div>";
  foreach($rows as $row) {
    echo "<div class=''> <label for='".$row->ewladressenplaats."'>".$row->ewladressenplaats."</label><input type='checkbox' name='".$row->ewladressenplaats."' value='".$row->ewladressenpostcodes."'></div>";
  };
echo "</div>";

这总共创建了 8 个复选框,看起来有点像这样[] = checkbox

**Selecteer een of meerdere plaatsen**
amsterdam []
amsterdam []
amsterdam []
rotterdam []
rotterdam []
maastricht []
hengelo []
hengelo []

但我怎样才能让它像这样回声:

**Selecteer een of meerdere plaatsen**
**amsterdam**
amsterdam []
amsterdam []
amsterdam []
**rotterdam**
rotterdam []
rotterdam []
**maastricht**
maastricht []
**hengelo**
hengelo []
hengelo []

标签: phpsql

解决方案


首先将其分组为第一个循环,然后获取组的 plaats 列并创建新查询,然后向其添加条件,然后为组数据创建内部循环,此代码基于 sqlfiddle 中的数据

    echo "<pre>";

    $group_sql = "SELECT * FROM tbl GROUP BY plaats";
    $group = $conn->query($group_sql);

    while($row = $group->fetch_assoc()) {

        $inner_sql = "SELECT * FROM tbl WHERE plaats = '" . $row['plaats'] . "' ORDER by plaats";
        $inner = $conn->query($inner_sql);

        echo "Group : " . $row['plaats'] . PHP_EOL;

        while($inner_row = $inner->fetch_assoc()) {

            echo "Plaats : " . $row['plaats'] . " Postal Code : " . $inner_row['postal_code'] . PHP_EOL;

        }

        echo "<br>";


    }

    echo "</pre>";

像这样返回

Group : Amsterdam
Plaats : Amsterdam Postal Code : 1001
Plaats : Amsterdam Postal Code : 1002
Plaats : Amsterdam Postal Code : 1003

Group : Hengelo
Plaats : Hengelo Postal Code : 4001
Plaats : Hengelo Postal Code : 4002

Group : Maastricht
Plaats : Maastricht Postal Code : 3001

Group : Rotterdam
Plaats : Rotterdam Postal Code : 2001
Plaats : Rotterdam Postal Code : 2002

推荐阅读