Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Калькулятор

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
romantik2011
Отправлено: 10 Октября, 2011 - 23:56:30
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Не срабатывает вывод текста Неизвестный оператор ( и подставиться должно $rez). если неверно ввести что-то вообще ничего не выводится, а должно выводится.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if(isset($_POST['chislo1']) && isset($_POST['chislo2'])
  4. && is_numeric($_POST['chislo1']) && is_numeric($_POST['chislo2'])
  5. && !empty($_POST['znak']) )
  6. {
  7. $ch1 = $_POST['chislo1']*1;
  8. $ch2 = $_POST['chislo2']*1;
  9. $znak = $_POST['znak'];
  10. $rez = '';
  11. switch($znak){
  12. case '+': $rez = $ch1 + $ch2; break;
  13. case '-': $rez = $ch1 - $ch2; break;
  14. case '*': $rez = $ch1 * $ch2; break;
  15. case '/': if($ch2!=0){ $rez = $ch1 / $ch2; }else { echo 'Деление на ноль'; } break;
  16. default: echo "Неизвестный оператор $rez";
  17. }
  18. echo $rez;
  19. echo '<hr width="100%" color="blue" />';
  20. }
  21. ?>
  22.  
  23. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  24. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  25. <head><title>Моя страница</title>
  26. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  27.         </head>
  28. <body>
  29. <form action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="post">
  30. <input type="text" name="chislo1"/><input type="text" name="znak"/><input type="text" name="chislo2"/><input type="submit" value="Вычислить" >
  31. </form>
  32. </body>
  33.  
  34. </html>
  35.  
 
 Top
LIME
Отправлено: 11 Октября, 2011 - 00:19:13
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




default: echo "Неизвестный оператор $znak";
только не забывайте обработать данные перед извлечением из поста
смысле безопасности
 
 Top
romantik2011
Отправлено: 11 Октября, 2011 - 00:25:49
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Если заменить мою строку на эту
PHP:
скопировать код в буфер обмена
  1.  default: echo "Неизвестный оператор $znak";

Если в первое поле ввести бурду, а во второе и третье ничего не ввести, при нажатии ЭНТЕР ничего на экран не выведется
 
 Top
LIME
Отправлено: 11 Октября, 2011 - 00:28:36
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['chislo1']) && isset($_POST['chislo2'])
  2. && is_numeric($_POST['chislo1']) && is_numeric($_POST['chislo2'])
  3. && !empty($_POST['znak']) )
это вам говорит о чем то ?
 
 Top
romantik2011
Отправлено: 11 Октября, 2011 - 00:30:23
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Просто вот подобный код и он срабатывает, а мой код не выводит ничего если не правильно ввел или вообще ничего не ввел и нажал ЭНТЕР.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. // Проверим, была ли форма отправлена
  5. if(
  6.         isset($_POST['num1']) && is_numeric($_POST['num1']) &&
  7.         isset($_POST['num2']) && is_numeric($_POST['num2']) &&
  8.         isset($_POST['operator']) && !empty($_POST['operator'])
  9. ){
  10.         // Отфильтруем полученные значения
  11.         $num1 = $_POST['num1'] * 1;
  12.         $num2 = $_POST['num2'] * 1;
  13.         $operator = $_POST['operator'];
  14.        
  15.         // Создадим переменную для хранения результата вычисления
  16.         $output = "$num1 $operator $num2 = ";
  17.        
  18.         // В зависимости от оператора будем выполнять разные математические действия
  19.         switch ($operator){
  20.                 case '+':
  21.                         $output .= $num1 + $num2; break;
  22.                 case '-':
  23.                         $output .= $num1 - $num2; break;
  24.                 case '*':
  25.                         $output .= $num1 * $num2; break;
  26.                 case '/':
  27.                         // В случае деления не забываем проверить,
  28.                         // чтобы делитель не был равен нулю
  29.                         if($num2 == 0){
  30.                                 $output = 'Деление на ноль запрещено!';
  31.                         }else{
  32.                                 $output .= $num1 / $num2;
  33.                         }
  34.                         break;
  35.                 default:
  36.                         $output = "Неизвестный оператор '$operator'";
  37.         }
  38.        
  39. }
  40. ?>
  41.  
  42. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  43.  
  44. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
  45. <head>
  46.         <title>Калькулятор</title>
  47.         <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
  48. </head>
  49. <body>
  50.  
  51. <h1>Калькулятор</h1>
  52.  
  53. <?PHP
  54. // Если результат существует, выводим его
  55. if(isset($output)){
  56.         print "<p>Результат: $output</p><hr />";
  57. }
  58. ?>
  59. <!-- http://www.softtime.ru/info/articlephp.php?id_article=69 -->
  60. <form action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="post">
  61.  
  62. Число 1:<input type="text" name="num1" /><br />
  63. Оператор:<input type="text" name="operator" /><br />
  64. Число 2:<input type="text" name="num2" /><br />
  65. <input type="submit" value="Считать!" />
  66.  
  67. </form>
  68.  
  69. </body>
  70. </html>
  71.  
  72.  
  73.  

(Отредактировано автором: 11 Октября, 2011 - 00:30:40)

 
 Top
LIME
Отправлено: 11 Октября, 2011 - 00:39:43
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




да потому что там вывод вне условия в начале скрипта (стр 55)
выводится $output который формируется в начале
 
 Top
romantik2011
Отправлено: 13 Октября, 2011 - 23:10:28
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Хочу проверить каждое поле на пустоту, вот так пробую что-то не срабатывает.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. if(empty($_POST['chislo1']))
  5. echo 'Пожалуйста, введите Число №1 <br />';
  6.  
  7. if(empty($_POST['chislo2']))
  8. echo 'Пожалуйста, введите Число №2 <br />';
  9.  
  10. if(empty($_POST['znak']))
  11. echo 'Введите знак во второе поле <br />';
  12.  
  13.  
  14. if(isset($_POST['chislo1']) && isset($_POST['chislo2'])
  15. && is_numeric($_POST['chislo1']) && is_numeric($_POST['chislo2'])
  16. && !empty($_POST['znak']) )
  17. {
  18. $ch1 = $_POST['chislo1']*1;
  19. $ch2 = $_POST['chislo2']*1;
  20. $znak = $_POST['znak'];
  21.  
  22.  
  23. switch($znak){
  24. case '+': $rez = $ch1 + $ch2; break;
  25. case '-': $rez = $ch1 - $ch2; break;
  26. case '*': $rez = $ch1 * $ch2; break;
  27. case '/': if($ch2!=0){ $rez = $ch1 / $ch2; }else { echo 'Деление на ноль'; } break;
  28. default: echo "Неизвестный оператор $znak";
  29. }
  30.  
  31. if(isset($rez))
  32. echo $rez;
  33. echo '<hr width="100%" color="blue" />';
  34. }
  35.  
  36. ?>
  37.  
  38.  
  39. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  40. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  41. <head><title>Моя страница</title>
  42. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  43.         </head>
  44. <body>
  45. <form action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="post">
  46. <input type="text" name="chislo1"/><input type="text" name="znak"/><input type="text" name="chislo2"/><input type="submit" value="Вычислить" >
  47. </form>
  48. </body>
  49.  
  50. </html>
  51.  


Получается даже не дает ввести, сразу выдает что пустое. Как сделать проверку на пустоту поля если ничего не введено и нажата кнопка вычислить? Я вот сделал и не дает даже ввести что-то, сразу выдает что не пусто.

(Отредактировано автором: 14 Октября, 2011 - 01:08:34)

 
 Top
Мелкий Супермодератор
Отправлено: 14 Октября, 2011 - 09:31:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




заключите всю логику обработки формы в
PHP:
скопировать код в буфер обмена
  1. if (!empty($_POST)) {
  2. //обработка формы
  3. }


-----
PostgreSQL DBA
 
 Top
romantik2011
Отправлено: 18 Октября, 2011 - 23:11:38
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Вот так лучше работает.
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?
  3. if(!empty($_POST)){
  4.     if(empty($_POST['chislo1']))
  5.     echo 'Пожалуйста, введите Число №1 <br />';
  6.     if(empty($_POST['chislo2']))
  7.     echo 'Пожалуйста, введите Число №2 <br />';
  8.     if(empty($_POST['znak']))
  9.     echo 'Введите знак во второе поле <br />';
  10.     if(isset($_POST['chislo1']) && isset($_POST['chislo2'])
  11.     && is_numeric($_POST['chislo1']) && is_numeric($_POST['chislo2'])
  12.     && !empty($_POST['znak']) )
  13.     {
  14.     $ch1 = $_POST['chislo1']*1;
  15.     $ch2 = $_POST['chislo2']*1;
  16.     $znak = $_POST['znak'];
  17.     switch($znak){
  18.     case '+': $rez = $ch1 + $ch2; break;
  19.     case '-': $rez = $ch1 - $ch2; break;
  20.     case '*': $rez = $ch1 * $ch2; break;
  21.     case '/': if($ch2!=0){ $rez = $ch1 / $ch2; }else { echo 'Деление на ноль'; } break;
  22.     default: echo "Неизвестный оператор $znak";
  23.     }
  24.     if(isset($rez))
  25.     echo $rez;
  26.     echo '<hr width="100%" color="blue" />';
  27.     }
  28. }
  29. ?>
  30. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  31. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  32. <head><title>Моя страница</title>
  33. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  34.     </head>
  35. <body>
  36. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  37. <input type="text" name="chislo1"/><input type="text" name="znak"/><input type="text" name="chislo2"/><input type="submit" value="Вычислить" >
  38. </form>
  39. </body>
  40. </html>
  41.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB