Есть HTML-форма, которая отвечает за выбор валюты (для отображения цен в таблице). C формой работает скрипт PHP, который бы позволил сохранить последнюю валюту, которую выбирал пользователь. Написал скрипт, но не могу проверить его работу, так как не знаю почему скрипт не может отработать.
Файл lr3.html:
<form method="POST" action="lr4.php">
<div id="radio">
<input type="radio" name="currency" id="UAH" value="UAH" checked>UAH
<input type="radio" name="currency" id="USD" value="USD">USD
<input type="radio" name="currency" id="RUB" value="RUB">RUB
<input type="submit">
</div>
</form>
Файл lr4.php:
<?php
if (isset($_POST['currency']) && $_POST['currency'] == "UAH") {
setcookie('UAH', "true", 600, '/');
setcookie('USD', "false", 600, '/');
setcookie('RUB', "false", 600, '/');
$UAH = 'checked="checked"';
$USD = '';
$RUB = '';
} else if(isset($_POST['currency']) && $_POST['currency'] == "USD") {
setcookie('UAH', "false", 600, '/');
setcookie('USD', "true", 600, '/');
setcookie('RUB', "false", 600, '/');
$UAH = '';
$USD = 'checked="checked"';
$RUB = '';
} else if(isset($_POST['currency']) && $_POST['currency'] == "RUB") {
setcookie('UAH', "false", 600, '/');
setcookie('USD', "false", 600, '/');
setcookie('RUB', "true", 600, '/');
$UAH = '';
$USD = '';
$RUB = 'checked="checked"';;
}
if (isset($_COOKIE['UAH']) && $_COOKIE['UAH'] == "true") {
$UAH = 'checked="checked"';
$USD = '';
$RUB = '';
} else if (isset($_COOKIE['USD']) && $_COOKIE['USD'] == "true") {
$UAH = '';
$USD = 'checked="checked"';
$RUB = '';
} else if (isset($_COOKIE['RUB']) && $_COOKIE['RUB'] == "true") {
$UAH = '';
$USD = '';
$RUB = 'checked="checked"';
}?>
Мне немного интересно, зачем при имени поля name="currency"
Вы проверяете наличие параметра с именем radio
?
<input type="radio" name="currency" id="UAH" value="UAH" checked <?= $UAH; ?> />UAH
...
if (isset($_POST['radio']) && $_POST['radio'] == "UAH") ...
не могу проверить его работу, так как он не хочет срабатывать.
По этой причине и не срабатывает. Ознакомьтесь с руководством по работе с формами. А лучше - прочесть для начала все руководство с официального сайта, уверен - сразу станет проще отлаживаться.
P.S. Одна из самых полезных при отладке функций PHP - var_dump(). Она позволяет посмотреть, что же именно находится в переменной. Если, например, в код PHP включить
echo '<pre>$_POST = ';
var_dump($_POST);
echo '</pre>';
то можно увидеть переданные скрипту методом POST параметры. Очень пользительно при отладке.
Update
По обновленному вопросу. Файл lr3.php
<?php
$currencies = ['UAH', 'USD', 'RUB'];
// Если не установлено - установить начальное значение
$settedCurrency = $_COOKIE['currency'] ?? $currencies[0];
//если некорректное значение - установить начальное значение
$currentCurrency = in_array($settedCurrency, $currencies) ?
$settedCurrency : $currencies[0];
?>
<form method="POST" action="lr4.php">
<div id="radio">
<?php
foreach ($currencies as $currency) {
echo "\t<input type=\"radio\" name=\"currency\" id=\"$currency\" value=\"$currency\"",
$currency === $currentCurrency ? ' checked' : '', '/>', $currency, "\n";
}
?>
</div>
<input type="submit">
</form>
Файл lr4.php
<pre>
<?php
echo '$_POST = ';
var_dump($_POST);
echo '$_COOKIES = ';
var_dump($_COOKIE);
$currencies = ['UAH', 'USD', 'RUB'];
// Если не установлено - установить начальное значение
$settedCurrency = $_POST['currency'] ?? $currencies[0];
//если некорректное значение - установить начальное значение
$currentCurrency = in_array($settedCurrency, $currencies) ?
$settedCurrency : $currencies[0];
if (($_COOKIE['currency'] ?? '') !== $currentCurrency) {
setcookie('currency', $currentCurrency, time() + 600, '/');
}
echo "\n\nУстановлена валюта ", $currentCurrency;
?>
</pre>
<a href="lr3.php">Вернуться на lr3.php</a>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пишу парсер для одного сайтаНа сайте есть авторизация, это сильно усложняет, т
При рендеринге вида возникает ошибка Call to a member function isAttributeRequired() on nullКонтроллер:
Потихоньку осваивая symfony 4 возникли недопониманияИмеется абстрактный репозиторий в который inject-ица некий DriverManager объект-коннекшн к базе...
Задача следующая - есть мапа, которая хранит в себе Id и связанный с ним список значений