Подскажите как можно улучшить данный код с сохранением его логики.
<?php
if (isset($_POST['submit'])){
if (!empty($_POST['color'])){
setcookie('color', $_POST['color']);
$_COOKIE['color'] = $_POST['color'];
}
}
$color = isset($_COOKIE['color']) ? $_COOKIE['color'] : 'red';
?>
<form method="post" action="">
<p>
<select size="5" name="color">
<label>Выберите цвет:</label>
<option value="red" <?php if ($_COOKIE['color']=='red') echo 'selected="selected"'?>>Красный</option>
<option value="blue" <?php if ($_COOKIE['color']=='blue') echo 'selected="selected"'?>>Синий</option>
<option value="yellow" <?php if ($_COOKIE['color']=='yellow') echo 'selected="selected"'?>>Жёлтый</option>
<option value="brown" <?php if ($_COOKIE['color']=='brown') echo 'selected="selected"'?>>Коричневый</option>
<option value="green" <?php if ($_COOKIE['color']=='green') echo 'selected="selected"'?>>Зелёный</option>
</select>
</p>
<p><input type="submit" name="submit" value="Применить"></p>
</form>
<div>
<font color="<?php echo $color?>">
"Lorem ipsum dolor sit amet, consectetur adipiscing elit..
</font>
При выборе и сабмите цвета, данный цвет применяется к тексту и делает option selected. Но как можно более красиво сделать с блоками option value..?
selectedэто массив в php
$colors = [ 'red' => 'Красный',
'green' => 'Зеленый',
'blue' => 'Синий'
];
это вывод
<select size="5" name="color">
<?php foreach ($colors as $k => $v): ?>
<option value="<?= $k; ?>" <?php echo ($_COOKIE['color'] == $k) ? 'selected="selected"' : '' ?>><?= $v; ?></option>
<?php endforeach; ?>
</select>
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости