#php
#php
Вопрос:
У меня есть этот цикл foreach, который я использую внутри select для получения параметров из моей базы данных. но я получаю много дубликатов. Это мой код.
<select id="selectid" name="selectOrdre_nummer" class="select custom-select col-md-1" onchange="callthis();">
<option default disabled>-- select an option --</option>
<option value=""> None </option>
<!---------------------------------------------------------------------->
<?php foreach ($csv->getGodOrdre_nummerTable() as $select) { ?>
<option class="option" value="<?= $select->Ordre_nummer ?>"><?= $select->Ordre_nummer ?></option>
<?php } ?>
<!------------------------------------------------------------------------>
</select>
Это попытка, которую я пробовал, но безуспешно:
<script>$("select .option").val(function(idx, val) {
$(this).siblings('[value="' val '"]').remove();
});
</script>
Также пробовал делать это :
<?php foreach ($csv->getGodVarenummerTable() as $select) {
$varenummer = json_decode(json_encode($select->Varenummer), True);
array_unique($varenummer);
?>
<option class="option" value="<?= $varenummer?>"><?= $varenummer ?></option>
<?php } ?>
Приветствуется любая помощь!
Комментарии:
1.
array_unique
?2. Используйте group by в запросе, покажите нам свой запрос
3. Если вы получаете параметры из своей базы данных, почему вы не используете
DISTINCT
в своем запросе?4. Большое спасибо, подойдет!
5. Ваша попытка использовать array_unique изначально была сфокусирована на неправильном элементе данных — это не $ select, содержащий дубликаты, а результат $ csv-> getGodVarenummerTable()
Ответ №1:
Вы можете использовать встроенную функцию array_unique для создания нового массива только уникальных значений, по существу удаляя ваши дубликаты.
<select id="selectid" name="selectOrdre_nummer" class="select custom-select col-md-1" onchange="callthis();">
<option default disabled>-- select an option --</option>
<option value=""> None </option>
<!---------------------------------------------------------------------->
$unique_array = array_unique($csv->getGodOrdre_nummerTable());
<?php foreach ($unique_array as $select) { ?>
<option class="option" value="<?= $select->Ordre_nummer ?>"><?= $select->Ordre_nummer ?></option>
<?php } ?>
<!------------------------------------------------------------------------>
</select>
Пока это работает, вы можете вместо этого подумать об оптимизации вашего запроса, чтобы выбирать только уникальные значения в точке запроса, поэтому возвращая меньше данных.
Ответ №2:
Не знал о том, что DISTINCT Работает как во сне. вот ответ!
public function getGodOrdre_nummerTable()
{
return $this->db->toList("SELECT DISTINCT Ordre_nummer FROM `Angle`");
}