我想更新php中的“用户个人资料”。下拉列表中两次重复一个值。例如,我从数据库中获取语言value ='Punjabi',但下拉列表中还有一个名为'Punjabi'的值。 问题很简单,就是我不想重复价值。
<?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 ='Punjabi'时,该下拉列表不应显示已放置在下拉列表中的value ='Punjabi'。 记住:我的dropdown(html)列表中有1000多个值。
答案 0 :(得分:1)
检查现有选项是否等于用户数据,而不是根据用户数据创建新选项:
<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();
})
答案 1 :(得分:0)
您必须使用if条件在选择选项中显示值。
<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>
答案 2 :(得分:0)
当值等于旁遮普语,乌尔都语和印地语时跳过循环。
<?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 } ?>
答案 3 :(得分:0)
如果不是这样,可以使用if 。
<select name="language" id="language" >
<option value='<?php echo $queryArray["language"];?>'><?php echo $queryArray["language"]; ?></option>
<?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 } ?>
答案 4 :(得分:0)
我认为您做错了正确的方法,正确的方法是使用一个表来存储所有语言以及值
使用 selected 属性实现目标
<?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>
答案 5 :(得分:0)
因此,您的问题是您具有html硬编码选项和数据库选项。您需要将它们合并到该网站上。 因此,您可以使用一些javascript
elements = [1, 2, 9, 15].join(',')
$.post('post.php', {elements: elements})
但是您可以这样填充您的元素,因为您不想手工编写
$("#id select").each(function()
{
allOptionsInSelect.push($(this).val());
});
比php方面,您可以做的
$elements = $_POST['elements'];
$elements = explode(',', $elements);
现在您已经在服务器端对html进行了硬编码选择。现在,当您从数据库打印时,您需要检查它是否不存在 您可以这样做
if(in_array(value_from_database, $elements) {
// It is so skip
} else {
// It is not, so print it
}