Есть 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>
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пишу парсер для одного сайтаНа сайте есть авторизация, это сильно усложняет, т
При рендеринге вида возникает ошибка Call to a member function isAttributeRequired() on nullКонтроллер:
Потихоньку осваивая symfony 4 возникли недопониманияИмеется абстрактный репозиторий в который inject-ица некий DriverManager объект-коннекшн к базе...
Задача следующая - есть мапа, которая хранит в себе Id и связанный с ним список значений