显示MySQL查询的组标题

时间:2013-04-17 01:02:20

标签: php mysql

我有一个列出主题公园的页面。按“公园名称”排序时,将显示第一个字母,然后显示以该字母开头的公园。像这样:

-A-
a park 1
a park 2

-B-
b park 1
b park 2 etc

我还有一个按'State'排序的查询,但是我不想显示每个新字母的第一个,而是希望php代码显示状态名称作为标题,然后在该状态下列出公园。像这样:

    -Florida-
    park 1
    park 2

    -Ohio-
    park 1 
    park 2 
-New York-
park 1

-North Carolina-
park 1
park 2
park 3 etc

用于显示首字母的代码与此处发布的其他问题拼凑在一起。我是php的新手,我希望有人可以帮助调整代码以显示完整的州名。

这是按状态排序的MySQL查询:

$sql = 'SELECT park_id, name, town, state, country
FROM tpf_parks WHERE country = "USA" AND type = "tp" ORDER BY state ASC, name ASC';
$result = $pdo->query($sql);

这是当前显示每个新字母中第一个需要以某种方式调整以显示完整州名称的PHP:

<?php
$name = '';

foreach($result as $key=>$row){
    if(substr($row['state'],0,1)!=$name) echo '<br /><br />
<p class="indexletters">-<a name="'.substr($row['state'],0,1).'">'.substr($row['state'],0,1).'</a>-</p>';
    $name = substr($row['state'],0,1);

    echo "<a href='park.php?park_id=".$row['park_id']."'>

<h2>".$row['name']."</h2>
<h3>".$row['town'].", ".$row['state'].", ".$row['country']."</h3></a><hr>";

}

?>

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

代码substr($row['state'],0,1)占用州的第一个字母。如果您想按实际州名称对其进行分组,只需将所有substr($row['state'],0,1)替换为$row['state']