|
|
|
| как обработать деление на ноль
<?php
if(isset($_POST['x']) && isset($_POST['y']))
$result = $_POST['x'] + $_POST['y'];
$result = $_POST['x'] - $_POST['y'];
$result = $_POST['x'] * $_POST['y'];
$result = $_POST['x'] / $_POST['y'];
$result = "";
?>
<html>
<head>
<meta charset="utf-8">
<title>Делаем колькулятор</title>
</head>
<body>
<form method="post">
<input type="text" name="x"/>
<input type="text" name="y"/>
<input type="submit" value="="/>
<p><input type="submit" value="+"/>
<input type="submit" value="-"/>
<input type="submit" value="*"/>
<input type="submit" value="/"/></p>
<?php echo $result; ?>
</form>
</body>
</html>
Предупреждение : Деление на ноль в Z: \ главная \ mysait \ WWW \ form.php на линии 31
Предупреждение : Деление на ноль в Z: \ главная \ mysait \ WWW \ form.php на линии 68 | |
|
|
|
|
|
|
|
для: Aduard
(17.08.2014 в 08:10)
| | Нужно сперва приводить полученные данные к Integer, а уж потом вычислять, причем делить можно только тогда, когда Y больше нуля.
<?
$_POST= array_map('intval', $_POST);
if($_POST['y']) $result = $_POST['x'] / $_POST['y'];
else //здесь или вывод сообщения, что делить нельзя так как Y равен 0, или чего вам требуется
|
| |
|
|
|
|
|
|
|
для: confirm
(17.08.2014 в 08:18)
| | мне нужна чтоб обрабатывалось деление на ноль а не выводилось предупреждение деление на ноль
Предупреждение : Деление на ноль в Z: \ главная \ mysait \ WWW \ form.php на линии 68
линия 68 получается эта
$result = $_POST['x'] / $_POST['y']; | |
|
|
|
|
|
|
|
|
для: confirm
(17.08.2014 в 08:34)
| | <?php
if(isset($_POST['x']) && isset($_POST['y']))
$result = $_POST['x'] + $_POST['y'];
$result = $_POST['x'] - $_POST['y'];
$result = $_POST['x'] * $_POST['y'];
$result = $_POST['x'] / $_POST['y'];
if ($_POST['y'] !==0 {
$result = $_POST['x'] / $_POST['y']; //чо я сделал не так
}else {
exit('Деление на ноль');
}
$result = "";
?>
<html>
<head>
<meta charset="utf-8">
<title>Делаем колькулятор</title>
</head>
<body>
<form method="post">
<input type="text" name="x"/>
<select name="calculator[]">
<option selected value="Плюс">+</option>
<option value="минус">-</option>
<option value="умножить">*</option>
<option value="разделить">/</option>
</select>
<input type="text" name="y"/>
<input type="submit" value="="/>
<?php echo $result; ?>
</form>
</body>
</html>
я попробовал сделать так но у меня теперь выводит другую ошибку
Ошибка разбора : ошибка синтаксиса, неожиданное '{' в Z: \ главная \ mysait \ WWW \ form.php на линии 32
вот эта 32 линия
if ($_POST['y'] !==0 {
<?php
if(isset($_POST['x']) && isset($_POST['y']))
$result = $_POST['x'] + $_POST['y'];
$result = $_POST['x'] - $_POST['y'];
$result = $_POST['x'] * $_POST['y'];
$result = $_POST['x'] / $_POST['y'];
if ($_POST['y'] !==0 {
$result = $_POST['x'] / $_POST['y']; //чо я сделал не так
}else {
exit('Деление на ноль');
}
$result = "";
?> | |
|
|
|
|
|
|
|
для: Aduard
(17.08.2014 в 08:45)
| | Когда добавляете код в сообщение, обрамляйте его ВВ-тегами [сode][/сode], чтобы код подсвечивался. Тогда вы сами увидите ошибку синтаксиса. Вы на чем код пишите, если редактором, он что у вас не имеет подсветки кода?
Я вам уже написал, что нужно приводить данные к integer, и написал как это делается. Вы же упорно пишите if(isset($_POST['x']) && isset($_POST['y'])), что глупо, ибо и значение не являющее цифрой, тоже даст в результате вашей проверки истину.
if ($_POST['y'] !==0 {
$result = $_POST['x'] / $_POST['y']; //чо я сделал не так
}else {
exit('Деление на ноль');
}
|
Условие if у вас не закрыто скобкой, должно быть if ($_POST['y'] !==0) {
//далее
}
Но вот проверка так как у вас $_POST['y'] !==0 - она бессмысленна, ибо if($_POST['y']) достаточно, так как и вернет истину только тогда когда $_POST['y'] не равно 0, с учетом того, что предварительно данные приведены к integer. | |
|
|
|
|
|
|
|
для: confirm
(17.08.2014 в 08:58)
| | зачем данные в int ? | |
|
|
|
|
|
|
|
для: moonfox
(17.08.2014 в 12:51)
| | а вы что буквы делить собрались? | |
|
|
|
|
|
|
|
для: confirm
(17.08.2014 в 13:13)
| | а там предполагаются буквы?)
защита от дурака? | |
|
|
|
|
|
|
|
для: moonfox
(17.08.2014 в 13:44)
| | А вы под кого косите?
Защита не от дураков, а как раз от понимающих. В данном же случае, это не защита, а отказ выполнять бредовые задания. | |
|
|
|
|
|
|
|
для: confirm
(17.08.2014 в 13:47)
| | как по мне кальк это форма с кнопочками как ни крути при нажатии оно выдает цифру
цифры в посте....как то сомнительно чтоб туда попали буквы. | |
|
|
|
|
|
|
|
для: moonfox
(17.08.2014 в 14:20)
| | Думайте. | |
|
|
|
|
|
|
|
для: Aduard
(17.08.2014 в 08:10)
| | Можно вставить на страницу скрипт и не гонять сервер туда-сюда в случае нуля в делителе:
http://jsbin.com/zokun/1/edit?html,js,output | |
|
|
|
|
|
|
|
для: Deed
(17.08.2014 в 12:33)
| | Не выдумывайте - все что сервер получает, он должен обязательно проверять. Пора бы уяснить, что JS, это сервис, а не инструмент решения проблем. | |
|
|
|
|
|
|
|
для: confirm
(17.08.2014 в 13:14)
| | Да вы не поняли. Пусть он встроит тот скрипт, чтобы попусту не отсылать некорректные запросы на сервер. Заодно и деление на нуль пресечет прямо в браузере.
Ну, а сервер, конечно, просто обязан проверять ВСЕ. Это не обсуждается. Это само собой. | |
|
|
|
|
|
|
|
для: Deed
(17.08.2014 в 14:54)
| | Я все понял, просто это в любом случае не панацея, тем более, что серверный скрипт все равно работать не будет, не важно цифры в нем или нет. | |
|
|
|