如何使用 Select2 创建新标签并保存到数据库
Posted
技术标签:
【中文标题】如何使用 Select2 创建新标签并保存到数据库【英文标题】:How to create new tags with Select2 AND save to database 【发布时间】:2016-10-16 15:16:26 【问题描述】:所以,我在使用 Select2 时遇到了困难。我希望用户能够在选择列表中进行搜索,并在未找到搜索结果时创建新标签。创建新标签不是问题。主要的事情 - 在大多数论坛中令人惊讶地被忽视 - 是将新闻标签插入数据库。我是 Select2 的新手,所以我想举一个完整的例子。我在这个项目上使用 php,所以,如果有办法用 PHP 做到这一点,那将非常有帮助。
这是我的代码:
$('#caracteristicas').select2(theme:'bootstrap', width:null, placeholder:'Selecione', allowClear:true)
<?php
$q = mysqli_query($con, "select id, descricao from caracteristicas");
if(mysqli_num_rows($q)>(0))
?>
<div class="form-group">
<label for="caracteristicas">Selecione um ou mais resultados</label>
<select name="caracteristicas[]" id="caracteristicas" class="form-control" multiple="multiple">
<option value="">Selecione</option>
<?php
while($linhas = mysqli_fetch_array($q)):
?>
<option value="<?=$linhas["id"]?>">
<?=strlen($linhas["descricao"])>50 ? substr($linhas["descricao"], 0, 50)."..." : $linhas["descricao"]?>
</option>
<?php endwhile;?>
</select>
</div>
<?php mysqli_close($con);?>
注意:我使用的是 Select2 4.0
【问题讨论】:
【参考方案1】:刚刚想出了如何做到这一点。我注意到用户创建的标签没有 id,这意味着选项值将是一个字符串,而不是一个数字。所以,我所要做的就是告诉 PHP 以不同的方式处理字符串值。这是我解决这个问题的方法:
for($i=0; $i<count($opcoes); $i++)
if(!is_numeric($opcoes[$i]))
if(!mysqli_query($con, "INSERT INTO `atividades`(`id`, `descricao`) VALUES (NULL, '".$opcoes[$i]."')"))
$msg_caracteristicas[$i] = "A atividade não foi cadastrada, <strong>erro <a href='http://randomurl.com' target='_blank'>#".mysqli_errno($con)."</a></strong> - \"".mysqli_error($con)."\"";
else
echo "<script>alert('deu certo');</script>";
【讨论】:
我对这个概念投了赞成票。我使用的是不同的编码语言,所以我无法评论作为答案提供的 PHP 代码是否有效。 我认为如果用户输入数字而不是字符串会出错以上是关于如何使用 Select2 创建新标签并保存到数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Select2 默认的新标签键“tab”更改为“space”?