| веб-мастеру | блог веб-мастера | Статьи Веб-Мастера | SEO Tools | книги веб-мастеру |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
| Реаниматолог |
26.12.2007, 23:53
Сообщение
#1
|
|
Новичок ![]() ![]() Группа: Пользователи Сообщений: 6 Регистрация: 25.12.2007 Пользователь №: 464 |
Уважаемые форумчане!
Начинаю изучать php и прошу Вашей консультации... Каким образом передаются данные введённые в форму скрипту-передатчику. В книгах читал, что данные, введённые в форму автоматически присваиваются переменным. При написании скрипта отправки сообщения на электронный ящик всё так и происходило, но сейчас пишу скрипт, проводящий некоторые рассчёты. Приведу пример: возьмём простейшую задачу на скорость-время-расстояние. Предположим, что нам необходимо вычислить скорость по известным расстоянию и времени. Скрипт-обработчик выглядит так: Код <?php Форма:$v = $s / $t; echo $v; ?> Код <FORM METHOD="POST" ACTION="адрес скрипта-обработчика"NAME="mainform"> При отправке сообщения открывается файл скрипта-обработчика с надписью:<font face="Tahoma" size="2">Расстояние</font><P style="margin-top: 0; margin-bottom: 0"> <font face="Tahoma"> <INPUT TYPE=text SIZE=67 NAME="s" style="font-family: Tahoma; font-size: 8pt"></font><P> <font face="Tahoma" size="2">Время</font><P style="margin-top: 0; margin-bottom: 0"> <font face="Tahoma"> <INPUT TYPE=text SIZE=67 NAME="t" style="font-family: Tahoma; font-size: 8pt"></font><P> <input type=submit value="Отправка сообщения" style="font-family: Tahoma; font-size: 12px">?> Цитата Warning: Division by zero in /home/doc/data/www/reanimatolog.ru/php1.php on line 2 Подскажите пожалуйста, что я делаю не так. |
| gid |
27.12.2007, 0:08
Сообщение
#2
|
|
Администратор форума ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 623 Регистрация: 27.11.2006 Из: Россия Пользователь №: 1 |
Division by zero - это вообще то деление на ноль...
Можете попробовать заменить свой код на более сложный: Код <?php if ((isset($_POST['s'])) and (isset($_POST['t']))) { if ((!empty($_POST['s'])) and (!empty($_POST['t']))) { $v = ((int)$_POST['s']) / ((int)$_POST['t']); echo $v; } } ?> не проверял, но должно работать, если работать не будет, то нужно заменить Код $v = ((int)$_POST['s']) / ((int)$_POST['t']); на Код $s = (int)$_POST['s']; $t = (int)$_POST['t']; $v = $s / $t; В любом другом случае форма заполненна не корректно либо вообще не заполненна. -------------------- Хочу жить на о.Самуи
Раскрутка Вашего сайта | Пишу php скрипты на заказ | Регистрация Вашего сайта в каталогах |__| RU-домены за 170 рублей |__| SU-домены за 460 рублей |__| | - | - | - | ICQ: 6-426-630 |
| Реаниматолог |
27.12.2007, 0:29
Сообщение
#3
|
|
Новичок ![]() ![]() Группа: Пользователи Сообщений: 6 Регистрация: 25.12.2007 Пользователь №: 464 |
gid, благодарю Вас! Скрипт работает.
Разумеется, я пытаюсь написать скрипт, производящий более сложные вычисления, необходимые в моей профессиональной деятельности. Если будут вопросы, обращусь к Вам, если Вы не против... Ещё раз спасибо! |
| Реаниматолог |
27.12.2007, 21:40
Сообщение
#4
|
|
Новичок ![]() ![]() Группа: Пользователи Сообщений: 6 Регистрация: 25.12.2007 Пользователь №: 464 |
gid, с Вашей помощью программу удалось написать. Но проблемка всё же есть: программа не вычисляет десятичные дроби. При умножении на 0,1 получается 0. Другими словами 0,1 воспринимается как 0.
Судя по всему, проблема в типе данных. Как в Ваших примерах можно привести тип данных к float или double? |
| gid |
27.12.2007, 21:57
Сообщение
#5
|
|
Администратор форума ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 623 Регистрация: 27.11.2006 Из: Россия Пользователь №: 1 |
Все достаточно просто, это происходит из-за использования операции конвертации типов ( применение конструкции $переменная = (int)$переменная; ), в моем примере конвертация пременной из типа string в тип integer. Для работы с дробными числами достаточно будет заменить (int) на (float).
Подробнее об этом читайте в статье Трюки с типами -------------------- Хочу жить на о.Самуи
Раскрутка Вашего сайта | Пишу php скрипты на заказ | Регистрация Вашего сайта в каталогах |__| RU-домены за 170 рублей |__| SU-домены за 460 рублей |__| | - | - | - | ICQ: 6-426-630 |
| Реаниматолог |
27.12.2007, 22:04
Сообщение
#6
|
|
Новичок ![]() ![]() Группа: Пользователи Сообщений: 6 Регистрация: 25.12.2007 Пользователь №: 464 |
gid, спасибо за помощь и особенно за ссылку на источник информации.
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 7.10.2008, 8:56 |