Как можно сократить и привести в порядок код?
<form method="post" action="date_filter.php">
<select name="dateFirst">
<?php
while($row_res = $res->fetch_assoc()) {
?>
<option value="<?php echo $row_res['date']; ?>"><?php echo $row_res['date']; ?></option>
<?php } ?>
</select>
<select name="dateLast">
<?php
while($row_res2 = $res->fetch_assoc()) {
?>
<option value="<?php echo $row_res2['date']; ?>"><?php echo $row_res2['date']; ?></option>
<?php } ?>
</select>
<input type="submit" name="submit" value="Выбрать">
</form>
Как можно сократить и привести в порядок код?
Можно написать хэлпер для использование в видах, чтобы улучшить читабельность и уменьшить дублирование кода:
<form method="post" action="date_filter.php">
<select name="dateFirst">
<?php
print getOptions($source, [
'value' => 'date',
'text' => 'date'
]);
?>
</select>
<select name="dateLast">
<?php
print getOptions($source, [
'value' => 'date',
'text' => 'date'
]);
?>
</select>
<input type="submit" name="submit" value="Выбрать">
</form>
<?php
function getOptions(array $source, array $keys)
{
$options = ""
for ($i = 0, $len = count($source); $i < $len; ++$i)
{
$options .= sprintf('<option value="%s">%s</option>',
htmlspecialchars($source[$keys['value']]),
htmlspecialchars($source[$keys['text']], ENT_NOQUOTES)
);
}
return $options;
}
Ну можно и так в вашем случае.
Но лучше, конечно же, передавать массив вторым аргументом.
<form method="post" action="date_filter.php">
<?php echo createSelect('dateFirst', $res) ?>
<?php echo createSelect('dateLast', $res2) ?>
<input type="submit" name="submit" value="Выбрать">
</form>
<?php
function createSelect ($name, $res) {
$html = '<select name="' . $name .'">';
while($row_res = $res->fetch_assoc()) {
$html .= "\t<option value=\"" . $row_res['date'] .'">' . $row_res['date'] . "</option>\n";
}
$html .= '</select>';
return $html;
}
Предлагаю такой вариант:
<form method="post" action="date_filter.php">
<select name="dateFirst">
<?php
while ($row_res = $res->fetch_assoc()) {
echo '<option value="', $row_res['date'], '">', $row_res['date'], '</option>';
}
?>
</select>
<select name="dateLast">
<?php
while ($row_res2 = $res->fetch_assoc()) {
echo '<option value="', $row_res2['date'], '">', $row_res2['date'], '</option>';
}
?>
</select>
<input type="submit" name="submit" value="Выбрать">
</form>
Конструкцию echo хорошо использовать при выводе коротких данных, причём вместо оператора присваивания нужно указывать значения через запятую, как аргументы. Это понижает вычислительные затраты.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как вывести число с сотыми, если число уже к примеру: 52, чтобы вывести 5200?
Есть изображение: *png, нужно вывести изображение с помощью PHP