php - 如何使用 Select2 创建新标签并保存到数据库

标签 php jquery jquery-select2-4

所以,我在 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&atilde;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/

相关文章:

PHP Firebase 帮助 - 设置 JWT

php - 数据库结构,Eav模型,搜索查询太慢

php - jQuery.AJAX post() - 一些疑问和问题

jquery-select2-4 - Select2 4.0 占位符未定义

jquery - 使用 select2 的多个选择元素无法正常工作

php - 阅读受密码保护的页面

javascript - 如何检测字符串的特定范围是否在换行符中?

jquery - 如何从 on 选项中删除禁用的选项?

javascript - 如何让不同高度的html div float 起来2

javascript - 关闭 Select2 输入时选择当前项目