2

在 PHP 中,我有如下的 mysql 记录

id country
 1  India
 2  Usa,Germany
 3  India,usa
 4  Germany,Uk,India
 5  Uk

我想在下拉列表中获取国家,数据只想显示唯一的国家而不是重复的条目和逗号分隔的值

下拉列表应该如下所示

 India
 Usa
 Germany
 Uk
4

4 回答 4

1

请参阅带有数据库名称test和表的完整工作示例table1

<?php
$mysqli = new mysqli("localhost", "root", "", "test");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

   $query = "SELECT * FROM table1";
$result = $mysqli->query($query);

while($row = $result->fetch_row()) {
  $rows[]=$row['1']; //getting aal country
}


/* free result set */
$result->free();

/* close connection */
$mysqli->close();
 ?>

 <form>
 <select>
 <?php foreach ($rows as $mod){?>
 <option value="<?php echo $mod?>"><?php echo $mod?></option>
 <?php }?>
 </select>
 </form>
 <?php $all_country = array();
 foreach ($rows as $mod){
     $arr = explode(',', $mod);
     foreach($arr as $row){ if(trim($row) != '')
         $all_country[] = trim($row);
         }
     }
     $input = array();
     $input = array_unique($all_country);
 ?>
  <form>
 <select>
 <?php foreach ($input as $mod){?>
 <option value="<?php echo $mod?>"><?php echo $mod?></option>
 <?php }?>
 </select>
 </form>

这是结果:请注意,英国和英国有大小写问题,否则它是独一无二的。

Simple data:
Array
(
    [0] => India
    [1] => Usa
    [2] => Germany
    [4] => usa
    [6] => Uk
    [8] => UK
)
unique country;


Array
(
    [0] => India
    [1] => Usa
    [2] => Germany
    [4] => usa
    [6] => Uk
    [8] => UK
)
于 2013-08-21T08:53:08.117 回答
0

MySQL 查询

SELECT country FROM table

PHP中

你可以得到数组country

现在使用mysql_fetch_assco你将有关联数组。

对该数组值执行内爆,然后将它们分解为 ,。

现在在该数组上执行 array_unique ,您将拥有您的数组。

例子

$queriedResult = array
(
    'India',
    'Usa,Germany',
    'India,usa',
    'Germany,Uk,India',
    'Uk'
);

$result = implode(',',$queriedResult);

之后$result将如下所示。

$result = 'India,Usa,Germany,India,usa,Germany,Uk,India,Uk';

现在我们在字符串上方爆炸,

$newArray = explode(',',$result);

我们将有

$newArray = array
(
    'India',
    'Usa',
    'Germany',
    'India',
    'usa',
    'Germany',
    'Uk',
    'India',
    'Uk'
);

现在执行最后一步。

$finalArray = array_unique($newArray);

生产。

$finalArray = array
(
    'India',
    'Usa',
    'Germany'
    'Uk'
);
于 2013-08-21T08:24:03.203 回答
0

您可能应该考虑重新考虑存储数据的模型。因为您希望在 SQL 语句中使用DISTINCT关键字来获取唯一的国家/地区。

但是,如果您不想这样做,则可以使用explode来获取逗号分隔值。

假设我们在数组 $results 中有您的数据,并且您希望在数组 $unique_countries 中有您的唯一国家/地区

foreach($results as $result){
    $result_countries = explode(',',$result['country']);
    foreach($result_countries as $country){
        if(!in_array($country,$unique_countries)){
            $unique_countries[] = $country;
        }
    }
}
于 2013-08-21T08:30:55.953 回答
0

MySQL 查询

从表中选择 group_concat(country)

之后在php中,

$duplicateCountry = explode(',',$sqlResult);
$duplicateCountry = array_unique($duplicateCountry);

给你的数组。

于 2013-08-21T08:37:05.323 回答