Должен ли я получить данные из моей базы данных, чтобы создать раскрывающийся список?
У меня есть форма с выпадающим списком, чей вариант определяется из таблицы в базе данных. Периодически я буду (вручную) добавлять дополнительные параметры в раскрывающийся список и базу данных. Либо я могу сделать выпадающий выбор получить параметры из базы данных, как это:
<select class="form-control" name="category" id="category">
<?php
$sql = "SELECT id, category FROM categories;";
$result = $GLOBALS['conn']->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$category = $row['category'];
$id = $row['id'];
echo "<option value='$id'>$category</option>";
}
}
?>
</select>
Что даст мне меньше работы, потому что все, что мне нужно сейчас обновить, - это база данных, и форма обновится сама.
Или я могу вручную ввести параметры в форму следующим образом:
<select class="form-control" name="category" id="category">
<option value='1'>option1</option>
<option value='2'>option2</option>
<option value='3'>option3</option>
</select>
Этот способ потребует больше ручной работы, но имеет то преимущество, что нет необходимости каждый раз подключаться к базе данных (меньше работы для серверов).
У меня вопрос, какой метод я должен использовать? Метод, который дает мне больше работы, или метод, который дает серверу больше работы?
1 ответ
Есть аргументы за и против использования базы данных для выбора. Что касается аргументов pro, то его относительно легко обновить - вы просто вставляете новое значение, и оно появится в вашей форме. Проблема этого подхода заключается в том, что ваше приложение будет выполнять запрос каждый раз, когда вы визуализируете форму. На сайтах с миллионами кликов это не очень хорошая идея. Таким образом, используемая альтернатива заключается в том, что результат запроса кэшируется на некотором промежуточном уровне, особенно когда эти значения не сильно меняются. По моему опыту, лучший способ обработать эти значения - загрузить их из файлов конфигурации. Это значения, которые редко меняются, и в них можно добавить новое значение. Они все еще могут быть кэшированы, и попадание в базу данных не требуется.