Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
EK
8 / 8 / 0
Регистрация: 16.02.2012
Сообщений: 381

Калькулятор не работает с нулем

12.07.2018, 12:50. Показов 1612. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здрасьте!!!
Имеется калькулятор, с двумя полями для чисел.
Если одно из полей не заполнить - при подсчете появится надпись "Пожалуйста, заполните все поля".
И эта же надпись появится, если в одном из полей поставить 0.
Операции с остальными числами выполняются на ура.

Наведите на мысль: по какой причине калькулятор может не воспринимать число 0?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if(isset($_POST['sub'])) {
   $number_first = $_POST['first'];
   $number_second = $_POST['second'];
   $operation = $_POST['operation'];
 
    if(empty($number_first) || empty($number_second) || empty($operation)) {
       echo 'Пожалуйста, заполните все поля<br/>';
          } else { 
       switch($operation){
         case '+': $textarea = $number_first + $number_second; break;
         case '*': $textarea = $number_first * $number_second; break;
         case '-': $textarea = $number_first - $number_second; break;
         case '/': if($second !== 0) {
            $textarea = $number_first / $number_second;
         }else{
            echo 'Так низя';
         }
          }
       }
    }
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form action=<?php  echo $_SERVER['PHP_SELF']; ?> method="post">
   <input type="number" name="first" placeholder="Число 1">
   <select name="operation">
      <option>+</option>
      <option>*</option>
      <option>/</option>
      <option>-</option>
   <input type="number" name="second" placeholder="Число 2"><br>
   </select>
   <input type="submit" value="Посчитать" name="sub">
   <textarea placeholder="результат">
      <?PHP
      echo $textarea;
      ?>
   </textarea> 
</form>
И еще один вопрос.
Если я создам скрипт calc.php, вынесу его в отдельный файл и в form action укажу его, а не <?php echo $_SERVER['PHP_SELF']; ?> калькулятор перестанет работать. С чем это связано - понять не получается. Если подскажете - будет здорово
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.07.2018, 12:50
Ответы с готовыми решениями:

Не работает калькулятор
Помогите пожалуйста с калькулятором. Существуют два файла index.php и functions.php код functions.php function addition($arg1,...

Не работает калькулятор из подключённых файлов
Почему не выводит результат? И ошибки не пишет. index.php &lt;?php require __DIR__ . '/handler.php'; ?&gt;

Массивы, заменить все элементы, попадающие в интервал [a, b], нулем, всё работает, но есть 1 нюанс
Всё вроде работает, есть такой вопрос как вывести массив до изменения более простым способом, чтобы код не был таким громоздким. using...

7
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
12.07.2018, 12:53
Цитата Сообщение от EK Посмотреть сообщение
по какой причине калькулятор может не воспринимать число 0?
Идем в доку по функции empty и видим:
Следующие значения воспринимаются как пустые:

"" (пустая строка)
0 (целое число)
0.0 (число с плавающей точкой)
"0" (строка)
NULL
FALSE
array() (пустой массив)
Используйте isset

А еще лучше array_key_exists на $_POST.
0
87 / 48 / 24
Регистрация: 29.11.2016
Сообщений: 243
12.07.2018, 12:58
Лучший ответ Сообщение было отмечено EK как решение

Решение

empty - 0 и NULL и '' для нее истина

Добавлено через 4 минуты
Цитата Сообщение от EK Посмотреть сообщение
Если я создам скрипт calc.php, вынесу его в отдельный файл
require 'calc.php';
Если отправишь данные, они там обработаются, а как они назад вернутся.
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
12.07.2018, 13:00
Цитата Сообщение от tarasalk Посмотреть сообщение
Используйте isset
А еще лучше array_key_exists на $_POST.
Пожалуй is_numeric еще лучше.
0
EK
8 / 8 / 0
Регистрация: 16.02.2012
Сообщений: 381
12.07.2018, 13:27  [ТС]
tarasalk, подскажите, как действовать дальше.
Вот проверил я второй аргумент и выяснил, что он равен нулю и операции с ним вызывают сообщение о том, что поле пустое.
Как добиться того, чтобы ноль стал полноправным числом?
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
12.07.2018, 13:38
Лучший ответ Сообщение было отмечено EK как решение

Решение

EK, я же говорю, вместо emtpy использовать !is_numeric.
0
EK
8 / 8 / 0
Регистрация: 16.02.2012
Сообщений: 381
12.07.2018, 14:02  [ТС]
tarasalk, Вы имели в виду
PHP
1
2
3
4
5
6
7
case '/': 
   if( !is_numeric($number_second) ) {
      $textarea = $number_first / $number_second;
     }else{
         echo 'Так низя';
      }
     }
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
12.07.2018, 14:02
Что не понятно в словах вместо empty?
PHP
1
2
if (!is_numeric($number_first) || !is_numeric($number_secound) || empty($operation) {
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2018, 14:02
Помогаю со студенческими работами здесь

Не работает калькулятор
Калькулятор содержит поля Вид изделия (свитч) Количество изделий Размер изображения (свитч) Количество цветов Итого ...

Не работает калькулятор
Постигаю азы программирования, решил написать калькулятор и столкнулся с проблемой - он просто не работает) подскажите в чем ошибка. Вот...

Калькулятор не работает
&lt;html&gt; &lt;head&gt; &lt;script type = 'text/javascript'&gt; var fn,sn,op; function arr(){ var b =...

Калькулятор не работает
Всем привет, пишу в первый раз. Знаю темы про калькулятор были, но не нашел того, что мне надо. Вот код. У меня выбивает ошибку. Можете...

Калькулятор не работает
Деление не работает. Как очистить textBox1. Кнопка clear не возвращает переменные false;, Плюс, Умножение запутывается местами после...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru