javascript - javascript如何避免在php中更新下拉列表中的值重複

  显示原文与译文双语对照的内容
67 2

我想在php中更新"用戶配置文件"。下拉列表中的一個值重複了兩次。例如我從資料庫獲取語言 value='旁遮普語',但在下拉列表中也有一個值為'旁遮普語'的值。問題是,有一個重複的價值,我不希望。

<?php $result=mysqli_query($conn,"select * from profile where id=$firstPerson");
while($queryArray=mysqli_fetch_array($result)){?> 
<select name="language" id="language"> 
 <option value='<?php echo $queryArray["language"];?> '> <?php echo $queryArray["language"];?></option>
//for example, the value from database is"Punjabi" 
 <option value="Hindi">Hindi</option> 
 <option value="Punjabi">Punjabi</option> 
 <option value="Urdu">Urdu</option> 
</select>
<?php }?>

從下拉列表選擇 value='旁遮普語'時,下拉列表不應顯示已經放置在下拉列表中的value='旁遮普語'。記住:我的dropdown(html) 列表中有 1000個上的值。

屏幕截圖

时间:原作者:0个回答

108 1

當值等於旁遮普語,烏爾都語和印地語時跳過循環。

<?php $result=mysqli_query($conn,"select * from profile where id=$firstPerson");
while($queryArray=mysqli_fetch_array($result)){?> 
<select name="language" id="language"> 
<?php if($queryArray["language"]!="Punjabi" && $queryArray["language"]!="Urdu" && 
$queryArray["language"]!="Hindi") {?>
 <option value="Hindi">Hindi</option> 
<option value="Punjabi">Punjabi</option> 
<option value="Urdu">Urdu</option> 
<?php }?> 
原作者:
118 4

你可以使用固定值 array','hindi hindi hindi',',然後使用最後的array 將 database all generate generate generate generate generate select

$result=mysqli_query($conn,"select * from profile where id=$firstPerson");
while($queryArray=mysqli_fetch_array($result)) {
 echo"<select name="language" id="language">";
 $languages = array_unique(array_merge(array($queryArray["language"]), array('Hindi', 'Punjabi', 'Urdu')));
 foreach ($languages as $language) {
 echo"<option value='$language'>$language</option>";
 }
 echo"</select>";
}
原作者:
82 0
<?php if ($queryArray["language"] =="Hindi") {?>
 <option value="Punjabi">Punjabi</option>
 <option value="Urdu">Urdu</option>
<?php } elseif ($queryArray["language"] =="Urdu") {?>
 <option value="Punjabi">Punjabi</option>
 <option value="Hindi">Hindi</option>
<?php } elseif ($queryArray["language"] =="Punjabi") {?>
 <option value="Urdu">Urdu</option>
 <option value="Hindi">Hindi</option>
<?php }?>
原作者:
117 3

我認為正確的方法是正確的方法將有一個 table 存儲所有語言和值

使用選擇屬性來實現目標

<?php 
$result=mysqli_query($conn,"select * from profile where id=$firstPerson");
$queryArray1=mysqli_fetch_array($result);
$langOfUser=$queryArray1["language"];
?>
<select name="language" id="language"> 
 <?php $result=mysqli_query($conn,"select * from langtab");
while($queryArray=mysqli_fetch_array($result)){?> 
 <option value='<?php echo $queryArray["languageValue"];?> ' <?php if($langOfUser== $queryArray["languageValue"]){ echo 'selected';}?>> <?php echo $queryArray["languageName"];?></option> 
<?php }?>
</select> 
原作者:
86 0

如果條件在選擇選項中顯示值,則必須使用。

 <select name="language" id="language"> 
 <?php $result=mysqli_query($conn,"select * from profile where id=$firstPerson");
 while($queryArray=mysqli_fetch_array($result)){
if($queryArray["language"]!="Punjabi") {
 $opval ="<option value=". $queryArray["language"].">". $queryArray["language"]." </option>"
 echo $opval;

}

?> 
 <option value="Punjabi">Punjabi</option> 
 <option value="Hindi">Hindi</option> 
 <option value="Urdu">Urdu</option> 
 </select>
原作者:
99 2

所以你的問題是你有硬編碼的選項和資料庫選項。你需要把它們合併到那個網站上。所以你可以使用一些 javascript

 elements = [1, 2, 9, 15].join(',')
 $.post('post.php', {elements: elements})

 $("#id select").each(function()
 {
 allOptionsInSelect.push($(this).val());
 });

你可以執行以下操作

$elements = $_POST['elements'];
$elements = explode(',', $elements);

現在,你在伺服器端有硬編碼的。

if(in_array(value_from_database, $elements) {
//It is so skip
} else {
//It is not, so print it
}
原作者:
117 5

不要根據用戶數據創建新選項,請檢查現有選項是否等於用戶數據:

<select name="language" id="language"> 
 <option value="Punjabi" <?php if ($queryArray["language"]=="Punjabi"){echo 'selected="selected"'}?>>Punjabi</option> 
 <option value="Hindi" <?php if ($queryArray["language"]=="Hindi"){echo 'selected="selected"'}?>>Hindi</option> 
 <option value="Urdu" <?php if ($queryArray["language"]=="Urdu"){echo 'selected="selected"'}?>>Urdu</option> 
</select>

如果有大量選項並且你不想硬編碼這些條件,可以使用DOM上的javascript刪除第二個選項:

$(document).ready(function(){
 $('option[value="<?php echo $queryArray["language"]?>"]').eq(1).remove();
})
原作者:
...