在PHP中,我有如下的mysql记录
id country
1 India
2 Usa,Germany
3 India,usa
4 Germany,Uk,India
5 Uk
我想在下拉中取国家, 数据希望只显示唯一的国家/地区而不是重复的条目和逗号分隔值
Drop drown list应显示如下
India
Usa
Germany
Uk
答案 0 :(得分: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
)
答案 1 :(得分: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'
);
答案 2 :(得分: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;
}
}
}
答案 3 :(得分:0)
MySQL查询
select group_concat(country) from table
之后在php中,
$duplicateCountry = explode(',',$sqlResult);
$duplicateCountry = array_unique($duplicateCountry);
给你的数组。