Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.10.2011, 01:01
Аспирант
Отправить личное сообщение для romantik2011 Посмотреть профиль Найти все сообщения от romantik2011
 
Регистрация: 20.07.2011
Сообщений: 50

Калькулятор на ПХП
Не срабатывает вывод текста Неизвестный оператор ( и подставиться должно $rez). если неверно ввести что-то вообще ничего не выводится, а должно выводится.
<?php
if(isset($_POST['chislo1']) && isset($_POST['chislo2'])
&& is_numeric($_POST['chislo1']) && is_numeric($_POST['chislo2'])
&& !empty($_POST['znak']) ) 
{
$ch1 = $_POST['chislo1']*1;
$ch2 = $_POST['chislo2']*1;
$znak = $_POST['znak'];
$rez = '';
switch($znak){
case '+': $rez = $ch1 + $ch2; break;
case '-': $rez = $ch1 - $ch2; break;
case '*': $rez = $ch1 * $ch2; break;
case '/': if($ch2!=0){ $rez = $ch1 / $ch2; }else { echo 'Деление на ноль'; } break; 
default: echo "Неизвестный оператор $rez";
}
echo $rez;
echo '<hr width="100%" color="blue" />';
} 
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head><title>Моя страница</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<input type="text" name="chislo1"/><br />
<input type="text" name="znak"/><br />
<input type="text" name="chislo2"/><br />
<input type="submit" value="Вычислить" >
</form>
</body>

</html>
Ответить с цитированием
  #2 (permalink)  
Старый 11.10.2011, 01:31
Аспирант
Отправить личное сообщение для romantik2011 Посмотреть профиль Найти все сообщения от romantik2011
 
Регистрация: 20.07.2011
Сообщений: 50

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

<?php

// Проверим, была ли форма отправлена
if(
	isset($_POST['num1']) && is_numeric($_POST['num1']) &&
	isset($_POST['num2']) && is_numeric($_POST['num2']) &&
	isset($_POST['operator']) && !empty($_POST['operator'])
){
	// Отфильтруем полученные значения
	$num1 = $_POST['num1'] * 1;
	$num2 = $_POST['num2'] * 1;
	$operator = $_POST['operator'];
	
	// Создадим переменную для хранения результата вычисления
	$output = "$num1 $operator $num2 = ";
	
	// В зависимости от оператора будем выполнять разные математические действия
	switch ($operator){
		case '+':
			$output .= $num1 + $num2; break;
		case '-':
			$output .= $num1 - $num2; break;
		case '*':
			$output .= $num1 * $num2; break;
		case '/':
			// В случае деления не забываем проверить,
			// чтобы делитель не был равен нулю
			if($num2 == 0){
				$output = 'Деление на ноль запрещено!';
			}else{
				$output .= $num1 / $num2;
			}
			break;
		default:
			$output = "Неизвестный оператор '$operator'";
	}
	
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
	<title>Калькулятор</title>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head>
<body>

<h1>Калькулятор</h1>

<?php
// Если результат существует, выводим его
if(isset($output)){
	print "<p>Результат: $output</p><hr />";
}
?>
<!-- http://www.softtime.ru/info/articlephp.php?id_article=69 -->
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

Число 1:<br />
<input type="text" name="num1" /><br /><br />

Оператор:<br />
<input type="text" name="operator" /><br /><br />

Число 2:<br />
<input type="text" name="num2" /><br /><br />

<input type="submit" value="Считать!" />

</form>

</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 11.10.2011, 07:34
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Может все же так?
default: echo "Неизвестный оператор $znak";
Ответить с цитированием
  #4 (permalink)  
Старый 14.10.2011, 02:06
Аспирант
Отправить личное сообщение для romantik2011 Посмотреть профиль Найти все сообщения от romantik2011
 
Регистрация: 20.07.2011
Сообщений: 50

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

<?php

if(empty($_POST['chislo1']))
echo 'Пожалуйста, введите Число №1 <br />';

if(empty($_POST['chislo2']))
echo 'Пожалуйста, введите Число №2 <br />';

if(empty($_POST['znak']))
echo 'Введите знак во второе поле <br />';


if(isset($_POST['chislo1']) && isset($_POST['chislo2'])
&& is_numeric($_POST['chislo1']) && is_numeric($_POST['chislo2'])
&& !empty($_POST['znak']) )
{
$ch1 = $_POST['chislo1']*1;
$ch2 = $_POST['chislo2']*1;
$znak = $_POST['znak'];


switch($znak){
case '+': $rez = $ch1 + $ch2; break;
case '-': $rez = $ch1 - $ch2; break;
case '*': $rez = $ch1 * $ch2; break;
case '/': if($ch2!=0){ $rez = $ch1 / $ch2; }else { echo 'Деление на ноль'; } break; 
default: echo "Неизвестный оператор $znak";
}

if(isset($rez))
echo $rez;
echo '<hr width="100%" color="blue" />';
} 

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head><title>Моя страница</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<input type="text" name="chislo1"/><br />
<input type="text" name="znak"/><br />
<input type="text" name="chislo2"/><br />
<input type="submit" value="Вычислить" >
</form>
</body>

</html>


Получается даже не дает ввести, сразу выдает что пустое. Как сделать проверку на пустоту поля если ничего не введено и нажата кнопка вычислить? Я вот сделал и не дает даже ввести что-то, сразу выдает что не пусто.
Ответить с цитированием
  #5 (permalink)  
Старый 14.10.2011, 10:29
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

$ch2 = preg_replace('/[^0-9., ]/si', '', $_POST['chislo2']);
if ( trim($ch2) == '') echo 'введите число2';

так же надо будет проверить, не ввели ли одни точки или запятые
далее в $ch2 меняем запятые на точку (что бы всё-таки добиться числа, которое понимается пхп как число)
потом убираем ведущие нули, при чем надо учитывать, что может быть введено 00123,56 или 0,159 или 000,659
еще надо сделать проверку на такое 123,156.954 и такое 123 156.954
Ответить с цитированием
  #6 (permalink)  
Старый 14.10.2011, 10:32
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

еще вспомнил: в одном из кредитных калькуляторов я так и написал юзерам подсказку, что разделитель разрядов пробел, а десятичных точка или зпт, или дефис (тогда выше надо так [^0-9., \-])
Ответить с цитированием
  #7 (permalink)  
Старый 19.10.2011, 00:12
Аспирант
Отправить личное сообщение для romantik2011 Посмотреть профиль Найти все сообщения от romantik2011
 
Регистрация: 20.07.2011
Сообщений: 50

Вот так лучше работает.
Код:
<?
if(!empty($_POST)){
    if(empty($_POST['chislo1']))
    echo 'Пожалуйста, введите Число №1 <br />';
    if(empty($_POST['chislo2']))
    echo 'Пожалуйста, введите Число №2 <br />';
    if(empty($_POST['znak']))
    echo 'Введите знак во второе поле <br />';
    if(isset($_POST['chislo1']) && isset($_POST['chislo2'])
    && is_numeric($_POST['chislo1']) && is_numeric($_POST['chislo2'])
    && !empty($_POST['znak']) )
    {
    $ch1 = $_POST['chislo1']*1;
    $ch2 = $_POST['chislo2']*1;
    $znak = $_POST['znak'];
    switch($znak){
    case '+': $rez = $ch1 + $ch2; break;
    case '-': $rez = $ch1 - $ch2; break;
    case '*': $rez = $ch1 * $ch2; break;
    case '/': if($ch2!=0){ $rez = $ch1 / $ch2; }else { echo 'Деление на ноль'; } break;
    default: echo "Неизвестный оператор $znak";
    }
    if(isset($rez))
    echo $rez;
    echo '<hr width="100%" color="blue" />';
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head><title>Моя страница</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="chislo1"/><br />
<input type="text" name="znak"/><br />
<input type="text" name="chislo2"/><br />
<input type="submit" value="Вычислить" >
</form>
</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор + форма заказа jkdl Элементы интерфейса 8 15.09.2012 14:10
Таймер вызывающий пхп функцию или как минимум посылающий какой-то параметр syegorius Общие вопросы Javascript 1 08.09.2010 17:12
Сделать калькулятор на сайт. asderru Работа 1 22.07.2010 13:46
Калькулятор работает ТОЛЬКО в ie6 (вопрос ламера) st_sinner Javascript под браузер 3 17.04.2010 18:11
джава и пхп zerg Общие вопросы Javascript 4 22.02.2009 18:57