2 回答
TA贡献1860条经验 获得超8个赞
这种方法的问题是mysqli_fetch_array已经在第一个循环中获取了结果。要做的简单的事情是做这样的事情:
$query = "
SELECT
stateAbv,
stateName,
'' AS cityName,
count(*) AS state_count
from
my_data
GROUP BY stateAbv, stateName
union
SELECT
stateAbv,
stateName,
city AS cityName,
COUNT(*) AS city_count
FROM
my_data
GROUP BY stateAbv, stateName,
city
ORDER BY stateAbv,
cityName asc
";
$sqlResult = mysqli_query($con, $query);
$i = 0;
while ($row = mysqli_fetch_array($sqlResult)) {
if ($row['cityName']) {
echo $row['cityName'] . "(" . $row['state_count'] . ")" . "<br/>";
} else {
echo $row['stateName'] . "(" . $row['state_count'] . ")" . "<br/>";
}
if ($i == 6){
echo "<a class='more-detail' style='cursor: pointer; font-color:#0000ff;'>More...</a>";
echo "<div class='detail-section' style='display: none;'>";
}
$i++;
}
echo "<a class='less-detail' style='cursor: pointer; font-color:#0000ff;'>Less...</a>";
echo "</div>";
?>
TA贡献1951条经验 获得超3个赞
$query = "
SELECT
stateAbv
, stateName
, city AS cityName
, COUNT(city) As city_count
, COUNT(stateName) As state_count
FROM
my_data
GROUP BY
stateName
, city
ORDER BY
stateName
, city
";
$sqlResult = mysqli_query($con, $query);
while ($row = mysqli_fetch_array($sqlResult)) {
$state_name = "{$row['stateName']} ({$row['state_count']})"
$city_name = "{$row['cityName']} ({$row['city_count']})"
$cities[$state_name][{$row['cityName']}] = $city_name;
}
foreach ( $cities As $state ) {
echo "<p>State: $state </p>";
foreach ( $state As $city ) {
echo "$city<br />";
}
echo '<br />';
}
?>
所有这些都没有经过测试,我没有任何样本数据来测试它,并且无法点击显示和隐藏细节。它的作用是根据查询结果创建一个多维数组。当点击状态时,您会使用 javascript 来扩展该状态的细节(认为该技术被称为手风琴)
- 2 回答
- 0 关注
- 217 浏览
添加回答
举报