[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Мини-калькулятор
romantik2011
<?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 />";
}
?>

<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>


Объясните вот этот кусок кода, в чем его смысл?

if(
isset($_POST['num1']) && is_numeric($_POST['num1']) &&
isset($_POST['num2']) && is_numeric($_POST['num2']) &&
isset($_POST['operator']) && !empty($_POST['operator'])
)
{

и вот это ещё смущает:
 !empty($_POST['operator'])


Смущает очень вот эта запись.
	$output = "$num1 $operator $num2 = ";

Три переменные присваиваются одной что ли?



Спустя 3 минуты, 18 секунд (14.09.2011 - 14:19) m4a1fox написал(а):
проверка на сущ. переменных запроса

Цитата
Смущает очень вот эта запись.

Меня тоже biggrin.gif

Спустя 1 минута, 3 секунды (14.09.2011 - 14:20) caballero написал(а):
[
Цитата
Объясните вот этот кусок кода, в чем его смысл?


глупо ставить isset если уже есть is_numeric
очевидно что несуществующая переменная не может быть числом

if(is_numeric($_POST['num1']) && is_numeric($_POST['num2']) && strlen($_POST['operator']) > 0 )

Спустя 6 минут, 15 секунд (14.09.2011 - 14:26) alex12060 написал(а):

/**
*
@func manual
*
@author alex12060
*
@arg $func - интересующая Вас функция (!!!Без скобок!!!)
*
@arg [opt] $lang - язык, по умолчанию - русский
*
@demo manual('isset');
*
@return ''
* Функция предназначена для формирования ссылки на мануал
* для ознакомления с определенной функцией.
* [irony] Думаю, будет полезна [/irony]
*/


function manual($func, $lang='ru') {
$man_page = 'http://php.net/manual/'.$lang.'/function.'.$func.'.php';

echo '<a href="'.$man_page.'" target="_blank" title="Почитать мануал">Прочесть о функции <b>'.
htmlspecialchars($func).'</b> в мануале</a>'.PHP_EOL;

return;
}

manual('isset');

Спустя 3 минуты, 32 секунды (14.09.2011 - 14:30) alex12060 написал(а):

<input type="text" name="operator" /><br /><br />



!empty($_POST['operator'])


Тут идет проверка, ввели ли какой-то оператор (то ли сложение, то ли вычитание...)


if(
isset($_POST['num1']) && is_numeric($_POST['num1']) &&
isset($_POST['num2']) && is_numeric($_POST['num2']) &&
isset($_POST['operator']) && !empty($_POST['operator'])
)
{


Если существует первое число и оно число и существует 2 число и оно число исуществует оператор и оно не пустой, то ....


$output = "$num1 $operator $num2 = ";


В переменную $output записывается строка вида:


число оператор число2 =

Спустя 6 минут, 43 секунды (14.09.2011 - 14:36) romantik2011 написал(а):
Скажите, вот эта запись !empty($_POST['operator'])
равносильна этой isset($_POST['operator'])?
Меня просто смущает восклицательный знак в эмпти.

Спустя 11 минут, 6 секунд (14.09.2011 - 14:47) alex12060 написал(а):
romantik2011

isset() - существует ли элемент в массиве
empty() - пустой ли элемент в массиве
* в данном случае рассматриваем массив


# Отличия

$arr = array(0 => '11', 2 => '');

echo '<h3>isset</h3>'.PHP_EOL;

for($i=0; $i<sizeof($arr)+1; ++$i)
echo isset($arr[$i]) ? 'isset!<br />' : 'not isset.<br />';


echo '<h3>empty</h3>'.PHP_EOL;


for($i=0; $i<sizeof($arr)+1; ++$i)
echo empty($arr[$i]) ? 'empty!<br />' : 'not isset.<br />';


Получится так:


isset

isset!
not isset.
isset!

empty

not empty.
empty!
empty!


Думаю, разберешься, почему так?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.