2016-06-04 6 views
1

Я использую jquery-select2 для выбора нескольких опций.Выберите опцию С jquery-select2

У меня есть форма, где пользователь может добавить два варианта из поля выбора select2, и он будет вставлен в mysql как значение, разделенное запятой. Работает нормально.

Теперь если пользователь хочет изменить его, со следующим кодом в edit_work.php, он видит каждое значение тега дважды выберите опцию.

У меня есть две базы данных mysql ..... один - research_tag, а второй - research_work. Во время первой загрузки пользователь получает значения тегов от research_tag и вставляется в таблицу research_work.

Кодирование Я попытался в edit_work.php является:

<div>Tags :<br><font style="font-size:12px;">Select Tags Or Keywords For Your Research Work</font></div> 
<div class="form-field-input"> 
<? 
$tags = $workdataedit['tags']; // retrives values added by user during first upload 
$tagarray = explode(',', $tags); 

$tagsquery = mysql_query("select * from reseach_tags order by tags ASC"); 
?> 

<select class="js-example-basic-multiple" multiple="multiple" name="tags[]" id="tags[]" required> 
<? 
while ($tagdata = mysql_fetch_array($tagsquery)){ 
    foreach ($tagarray as $item){?> 

    <option value="<?=$tagdata['tags']?>" <?if ($item == $tagdata['tags']){?> selected="selected"<?}?>><?=$tagdata['tags']?></option> 
    <?}}?> 
</select> 

<script type="text/javascript"> 
$(".js-example-basic-multiple").select2({ 

    maximumSelectionLength: 2 
}); 
</script> 
</div> 

Как получить значение параметров только один раз в раскрывающемся?

Изображение:

enter image description here

ответ

0

Сначала вы можете сделать ваш запрос более эффективным только выбрать то, что вы на самом деле хотите от каждой строки. Кажется, вы используете столбец tags.

Затем удалите повторы использовать distinct как этот

Кроме того, если вы используете новую foreach(): .... endforeach; и while(): .... endwhile; формат кода будет легче читать ваш код, когда вы в конечном итоге вернуться изменить его.

Хотя я не вижу причины для цикла foreach внутри цикла while, поэтому это, вероятно, можно удалить.

<div>Tags :<br><font style="font-size:12px;">Select Tags Or Keywords For Your Research Work</font></div> 
<div class="form-field-input"> 

<?php 
    // retrives values added by user during first upload 
    $tags = $workdataedit['tags']; 
    $tagarray = explode(',', $tags); 

    $tagsquery = mysql_query("select DISTINCT tags 
           from reseach_tags 
           order by tags ASC"); 
?> 

<select class="js-example-basic-multiple" multiple="multiple" name="tags[]" id="tags[]" required> 

<?php 
    while ($tagdata = mysql_fetch_array($tagsquery)) : 
     // This inner foreach appears to be redundant 
     //foreach ($tagarray as $item) : 
?> 

<option value="<?=$tagdata['tags']?>" <?if ($item == $tagdata['tags']){?> selected="selected"<?}?>><?=$tagdata['tags']?></option> 
<?php 
     // redundant loop removed 
     //endforeach; 
    endwhile; 
?> 
</select> 

<script type="text/javascript"> 
$(".js-example-basic-multiple").select2({ 

    maximumSelectionLength: 2 
}); 
</script> 
</div> 

Пожалуйста, не используйте the mysql_ database extension, он устарел (ушел навсегда в PHP7) Особенно если вы только учитесь PHP, тратить свою энергию обучения PDO расширения базы данных. Start here его действительно довольно легко

Смежные вопросы