Оглавление

Стандартные значения для ввода

Значение по умолчанию для текстового поля ввода задается в атрибуте 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, тогда форма передаст данные в этот же сценарий. Если изменить количество и щелкнуть на кнопке подачи формы, сценарий рассчитает новую итоговую стоимость. Кроме того, после каждой перезагрузки страницы устанавливается новое значение по умолчанию.

3
<< Меню >>  
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити
GabrielluS
 Листинг не пашет...
Новичок
Дата регистрации: 09.01.2013
От: Видное, МО
Сообщений: 1
Отправлено: 09.01.2013 14:42  Обновлено: 09.01.2013 14: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
 Re: Листинг не пашет...
Web-мастер
Дата регистрации: 07.01.2010
От: Transnistrian
Сообщений: 59
Отправлено: 10.01.2013 21:23  Обновлено: 10.01.2013 21:25
$quantity settype($_POST["quantity"] , "integer");


Да, тут была логическая ошибка. Функция settype(), в данной строке, сменила тип суперглобального массива $_POST["quantity"]. Смена произошла удачна, поэтому функция вернула TRUE в переменную $quantity. Далее, при умножении болевый тип TRUE всегда приводится в INT со значением 1.

Поэтому всегда еденица была...
Правильней тогда сделать так:

$quantity $_POST["quantity"];
settype($quantity "integer");


Или одной строкой:

$quantity = (int)$_POST["quantity"];