Сохранение значений формы после отправки в PHP

Пусть у нас есть некоторая форма, отправляющаяся на текущую страницу:

<form action="" method="GET"> <input name="test"> <input type="submit"> </form>

Давайте сделаем так, чтобы после отправки введенные данные не пропадали из нашего инпута:

<form action="" method="GET"> <input name="test" value="<?php echo $_GET['test'] ?>"> <input type="submit"> </form>

Такой подход, однако, не совершенен - при первом заходе на страницу PHP выдаст ошибку из-за того, что $_GET['test'] не существует.

Для решения проблемы добавим условие:

<form action="" method="GET"> <input name="test" value="<?php if (isset($_GET['test'])) echo $_GET['test'] ?>" > <input type="submit"> </form>

С помощью формы спросите город и страну пользователя. После отправки формы выведите введенные данные на экран. Сделайте так, чтобы введенные данные не пропадали из инпутов после отправки формы.

Значение по умолчанию

Пусть мы хотим сделать так, чтобы по при заходе на страницу в инпуте уже был какой-то текст. Пользователь может поредактировать этот текст, а может оставить его без изменения. А после отправки формы в инпуте должен остаться тот текст, который был на момент отправки.

Для решения этой задачи нам необходимо добавить блок else в наше условие и в этом блоке вывести значение по умолчанию:

<form action="" method="GET"> <input name="test" value="<?php if (isset($_GET['test'])) echo $_GET['test']; else echo 'default' ?>" > <input type="submit"> </form>

С помощью формы спросите у пользователя год. После отправки определите, этот год високосный или нет. Сделайте так, чтобы при первом заходе на страницу в инпуте уже стоял текущий год.

Сократим код

Полученный нами код очень уж длинный. Давайте его сократим. Для начала вместо if используем тернарный оператор:

<form action="" method="GET"> <input name="test" value="<?php echo isset($_GET['test']) ? $_GET['test'] : 'default' ?>" > <input type="submit"> </form>

А теперь используем сокращенный вариант PHP скобки:

<form action="" method="GET"> <input name="test" value="<?= isset($_GET['test']) ? $_GET['test'] : 'default' ?>" > <input type="submit"> </form>

А теперь используем оператор ??, который сократит код еще больше:

<form action="" method="GET"> <input name="test" value="<?= $_GET['test'] ?? 'default' ?>"> <input type="submit"> </form>

С помощью трех инпутов спросите у пользователя год, месяц и день. После отправки формы выведите на экран, сколько дней осталось от введенной даты до Нового Года. По заходу на страницу сделайте так, чтобы в инпутах стояла текущая дата.