Приднестровская поддержка XOOPS
Значение по умолчанию для текстового поля ввода задается в атрибуте VALUE. Это значение будет отображаться в форме после загрузки страницы, и если его не изменить, оно и передается в PHP-сценарий при отправке формы.
Рассмотрим страницу электронного магазина с корзиной для покупок. У покупателя есть возможность изменить количество единиц товаров в корзине, перед окончательной отправкой заказа. Текущее количество товаров в корзине можно изменить в небольшом текстовом поле. После этого пользователь может щелкнуть на кнопке подачи формы и обновить содержимое корзины. В листинге 12.1 показано, как реализовать магазин. Он содержит всего один товар и дает возможность выбрать его количество для покупки.
Листинг 12.1. Значение по умолчанию для текстового поля ввода
<?php
if( isset( $_POST["quantity"] ) ) {
$quantity = (int)$_POST["quantity"];
} else {
$quantity = 1;
}
$item_price = 5.99;
printf("%d x item = $%.2f", $quantity, $quantity * $item_price);
?>
<form action="test.php" method="POST">
Обновить количество:
<input type="text" name="quantity" size="2" value="<?php echo $quantity;?>" >
<input type="submit" value="Изменить количество" >
</form>
При начальной загрузке страницы переменная $quantity равна единице, и это значение используется при расчете общей цены. После этого внутри выражения VALUE выполняется инструкция РНР, которая выводит значение переменной $quantity. Если ввести новое значение, оно будет использоваться вместо предыдущего.
Сценарий нужно сохранить в файле buy.php, тогда форма передаст данные в этот же сценарий. Если изменить количество и щелкнуть на кнопке подачи формы, сценарий рассчитает новую итоговую стоимость. Кроме того, после каждой перезагрузки страницы устанавливается новое значение по умолчанию.
Отправитель | Нити |
---|---|
GabrielluS | ![]() |
Новичок
![]() ![]() Дата регистрации: 09.01.2013
От: Видное, МО
Сообщений: 1
|
Отправлено: 09.01.2013 16:42 Обновлено: 09.01.2013 16:42
Листинг отказался работать...
Пришлось похимичить и вот что у меня получилось (если неправильно, то отругайте меня): <?php if(isset($_POST["quantity"])) { $quantity = ($_POST["quantity"]); } else { $quantity = 1; } $item_price = 5.99; printf("%d x item = $%.2f", $quantity, $quantity * $item_price); ?> <FORM ACTION="buy.php" METHOD=POST> Обновить количество: <INPUT NAME="quantity" SIZE=2 VALUE="<?php echo $quantity;?>"> <INPUT TYPE=SUBMIT VALUE="Изменить количество"> </FORM> |
andrey3761 | ![]() |
Web-мастер
![]() ![]() Дата регистрации: 07.01.2010
От: Transnistrian
Сообщений: 59
|
Отправлено: 10.01.2013 23:23 Обновлено: 10.01.2013 23:25
$quantity = settype($_POST["quantity"] , "integer");
Да, тут была логическая ошибка. Функция settype(), в данной строке, сменила тип суперглобального массива $_POST["quantity"]. Смена произошла удачна, поэтому функция вернула TRUE в переменную $quantity. Далее, при умножении болевый тип TRUE всегда приводится в INT со значением 1. Поэтому всегда еденица была... Правильней тогда сделать так:
$quantity = $_POST["quantity"];
Или одной строкой:
$quantity = (int)$_POST["quantity"];
|
1 пользователь(ей) активно (1 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 1 далее... |