Есть 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>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей