-1

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

-A-
a park 1
a park 2

-B-
b park 1
b park 2 etc

我还有一个按“州”排序的查询,但不是显示每个新字母的第一个,而是希望 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>";

}

?>

感谢您的帮助。

4

1 回答 1

1

代码substr($row['state'],0,1)采用状态的第一个字母。如果您想按实际状态名称对它们进行分组,只需将 all 替换substr($row['state'],0,1)为 just $row['state']

于 2013-04-17T01:10:51.720 回答