Как можно сократить и привести в порядок код?
<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 хорошо использовать при выводе коротких данных, причём вместо оператора присваивания нужно указывать значения через запятую, как аргументы. Это понижает вычислительные затраты.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как вывести число с сотыми, если число уже к примеру: 52, чтобы вывести 5200?
Есть изображение: *png, нужно вывести изображение с помощью PHP