Итак, мне очень трудно с 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);?>
Просто разобрался, как это сделать. Я заметил, что теги, созданные пользователем, не имеют идентификатора, что означает, что значение параметра будет строкой, а не числом. Итак, все, что мне нужно было сделать, это сказать 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>";
}
}
}
Других решений пока нет …