【问题标题】:How to create new tags with Select2 AND save to database如何使用 Select2 创建新标签并保存到数据库
【发布时间】: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

【问题讨论】:

    标签: php jquery jquery-select2-4


    【解决方案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&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 代码是否有效。
    • 我认为如果用户输入数字而不是字符串会出错
    猜你喜欢
    • 2015-08-08
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2019-11-02
    • 2015-04-23
    相关资源
    最近更新 更多