所以,我在 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
最佳答案
刚刚弄清楚如何做到这一点。我注意到用户创建的标签没有 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 创建新标签并保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37836584/