使用jquery-select2选择选项

时间:2016-06-04 16:19:01

标签: php jquery-select2

我正在使用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>   

如何在下拉菜单中获取选项值?

图片:

enter image description here

1 个答案:

答案 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非常简单