如果在选择框中相同,则回显结果一次

时间:2014-05-26 13:11:44

标签: php

我在数据库中有'city'字段,其中包含邮政编码和城市名称,如下所示:'12345 City' 现在我需要获得那些城市并填充选择字段。使用下面的代码,我得到重复的城市(如果有'12345芝加哥'和'54321芝加哥'我得到两个芝加哥选项),如何做一些像mysql group by或distinct在php?

while ($re = mysql_fetch_assoc($rez))
  {
    $city= $re["city"];
    $city= preg_replace("/[0-9]/", "", $city);
    $city= trim($city);

     if ($city==""){echo "";}
     else if ($_SESSION['sess']==$city){
      echo "<option value={$_SESSION['sess']} selected=selected>{$_SESSION['sess']}</option>";
        }
     else echo "<option value=$city>$city</option>";
  }

2 个答案:

答案 0 :(得分:1)

$city_array = array();
while ($re = mysql_fetch_assoc($rez))
  {
    $city= $re["city"];
    $city= preg_replace("/[0-9]/", "", $city);
    $city= trim($city);

    $city_array[] = $city;
  }
$city_array = array_unique($city_array);

然后运行$city_array

的foreach循环

答案 1 :(得分:0)

您可以将$city存储为数组中的键。由于数组中的键是唯一的,因此不会获得任何重复值。

$ar = array();
while($re = mysql_fetch_assoc($rez)) {
    $city= $re["city"];
    $city= preg_replace("/[0-9]/", "", $city);
    $city= trim($city);

    $ar[$city]=0;
}

然后你可以使用foreach循环遍历键值。

foreach($ar as $key =>$value) {
    if($key == "") {
        echo "";
    }
    else if ($_SESSION['sess']==$key){
        echo "<option value={$_SESSION['sess']} selected=selected>{$_SESSION['sess']}</option>";
    }
    else {
        else echo "<option value=$key>$key</option>";
    }
}