PHP while循环选择类别
我对数据库的SQL :(表1)PHP while循环选择类别
-- id
-- city_name
-- image
,我想查看里面他们每图像城市,例如:美国有3个图像和加拿大有2个,它会看起来像:
USA
image 01
image 02
image 03
CANADA
image 01
image 02
我试过这个代码,它会查看混合的所有记录
$results1 = mysql_query("SELECT * FROM gallery");
while($r = mysql_fetch_array($results1)) {
echo $r[city_name]."<hr>";
$city = $r[city_name];
$results2 = mysql_query("SELECT * FROM gallery WHERE city_name='$city'");
while($r = mysql_fetch_array($results2)){
echo '<img border="0" src="'.$r['image'].'">';
}
}
谢谢,
纠正在你的代码:
您将要覆盖`第一次查询的结果集$ R进入第二while循环
$last='';
$results1 = mysql_query("SELECT * FROM gallery order by city_name ASC");
while($r = mysql_fetch_array($results1)){
if($last!=$r['city_name']) {
echo $r['city_name']."<hr>";
$last = $r['city_name'];
}
$city = $r['city_name'];
$results2 = mysql_query("SELECT * FROM gallery WHERE city_name='$city'");
while($r1 = mysql_fetch_array($results2)){ //change this variable
echo $r1['image'];
}
}
解决方法二:
$data = array();
$results1 = mysql_query("SELECT * FROM gallery");
while($r = mysql_fetch_array($results1)){
$data[$r['city_name']][]=$r;
}
foreach($data as $key=>$images){
echo $key.PHP_EOL; //city name
foreach($images as $image){
echo $image['id'].PHP_EOL; // each image id
echo $image['image'].PHP_EOL; // each image for city
}
}
这段代码会复制图片的名字,因为在美国有3张图片和加拿大2张图片。我想回声美国和里面3图像之后,回声加拿大里面2张图片,谢谢 – user1778423
请看我的第二个解决方案 – GBD
非常感谢。它的工作现在:) – user1778423
简化您的代码与一个查询。
<?php
$cityImages = array();
$res = mysql_query("SELECT * FROM gallery");
while ($row = mysql_fetch_array($res)) {
$cityImages[$row['city_name']][] = $row['image'];
};
?>
然后你可以使用$ cityImages数组。
谢谢你的帮助:) – user1778423
我做到了,这段代码只是举个例子,谢谢 – user1778423