我正在使用jquery-select2
进行多选项选择。
我有一个表单,用户可以在select2
选择字段中添加两个选项,并以逗号分隔值的形式插入到mysql中。 工作正常。
现在如果用户想要编辑,使用edit_work.php
中的以下代码,他会在select选项中看到每个标记值两次。
我有两个mysql数据库......一个是research_tag
,第二个是research_work
。
首次上传用户获取research_tag
标记值并将其插入research_work
表格。
我在edit_work.php
尝试的编码是:
<div>Tags :<br><font style="font-size:12px;">Select Tags Or Keywords For Your Research Work</font></div>
<div class="form-field-input">
<?
$tags = $workdataedit['tags']; // retrives values added by user during first upload
$tagarray = explode(',', $tags);
$tagsquery = mysql_query("select * from reseach_tags order by tags ASC");
?>
<select class="js-example-basic-multiple" multiple="multiple" name="tags[]" id="tags[]" required>
<?
while ($tagdata = mysql_fetch_array($tagsquery)){
foreach ($tagarray as $item){?>
<option value="<?=$tagdata['tags']?>" <?if ($item == $tagdata['tags']){?> selected="selected"<?}?>><?=$tagdata['tags']?></option>
<?}}?>
</select>
<script type="text/javascript">
$(".js-example-basic-multiple").select2({
maximumSelectionLength: 2
});
</script>
</div>
如何在下拉菜单中获取选项值?
图片:
答案 0 :(得分:0)
首先,您只需从每行中选择实际需要的内容,即可提高查询效率。您似乎只使用tags
列。
然后要删除重复项,请使用distinct
这样的
此外,如果您使用较新的foreach (): .... endforeach;
和while (): .... endwhile;
代码格式,当您最终返回修改代码时,将更容易阅读您的代码。
虽然我在foreach
循环中找不到while
循环的原因,但这可能会被删除。
<div>Tags :<br><font style="font-size:12px;">Select Tags Or Keywords For Your Research Work</font></div>
<div class="form-field-input">
<?php
// retrives values added by user during first upload
$tags = $workdataedit['tags'];
$tagarray = explode(',', $tags);
$tagsquery = mysql_query("select DISTINCT tags
from reseach_tags
order by tags ASC");
?>
<select class="js-example-basic-multiple" multiple="multiple" name="tags[]" id="tags[]" required>
<?php
while ($tagdata = mysql_fetch_array($tagsquery)) :
// This inner foreach appears to be redundant
//foreach ($tagarray as $item) :
?>
<option value="<?=$tagdata['tags']?>" <?if ($item == $tagdata['tags']){?> selected="selected"<?}?>><?=$tagdata['tags']?></option>
<?php
// redundant loop removed
//endforeach;
endwhile;
?>
</select>
<script type="text/javascript">
$(".js-example-basic-multiple").select2({
maximumSelectionLength: 2
});
</script>
</div>
请不要使用the
mysql_
database extension,它 不推荐使用(在PHP7中永远消失)特别是如果您只是学习PHP,请花费精力学习PDO
数据库扩展。 Start here非常简单