Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таблица умножения 
:(
    Опции темы
romantik2011
Дата 10.10.2011, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 20.7.2011

Репутация: нет
Всего: нет



Не срабатывает вывод текста Неизвестный оператор ( и подставиться должно $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>


Добавлено через 5 минут и 12 секунд
Сорри, тема калькулятор

Это сообщение отредактировал(а) romantik2011 - 10.10.2011, 23:52
PM MAIL   Вверх
$дмитрий
Дата 11.10.2011, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Цитата

если неверно ввести что-то вообще ничего не выводится, а должно выводится

Судя по твоему первому условию нужно вводить не "что-то вообще" а числа, иначе условие is_numeric не выполнится
PM MAIL   Вверх
patap
Дата 11.10.2011, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



$res всегда будет пустой строкой, как определенно в строке 9, если передать что-то, что не соответствует +-*/ - это раз
и если что-то не то передать на обработку(пустое значение, не число), то if будет возвращать false - это два

Добавлено через 1 минуту и 23 секунды
думаю надо почитатать  как работате if ... else и switch


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
romantik2011
Дата 11.10.2011, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 20.7.2011

Репутация: нет
Всего: нет



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

Если в первое поле ввести бурду, а во второе и третье ничего не ввести, при нажатии ЭНТЕР ничего на экран не выведется

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

Код

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




Это сообщение отредактировал(а) romantik2011 - 11.10.2011, 00:27
PM MAIL   Вверх
$дмитрий
Дата 11.10.2011, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Цитата

Если в первое поле ввести бурду, а во второе и третье ничего не ввести, при нажатии ЭНТЕР ничего на экран не выведется 

Все правильно ведь в первом условии ты пишешь "Если определены chislo1 и chislo2 и они являются числами и znak не должен быть пустым"
PM MAIL   Вверх
romantik2011
Дата 14.10.2011, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 20.7.2011

Репутация: нет
Всего: нет



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

Код

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


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

Это сообщение отредактировал(а) romantik2011 - 14.10.2011, 01:08
PM MAIL   Вверх
$дмитрий
Дата 14.10.2011, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Так
Код

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

PM MAIL   Вверх
romantik2011
Дата 18.10.2011, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 20.7.2011

Репутация: нет
Всего: нет



Спасибо большое. Скажите, а регулярными выражениями как написать правильно проверку?
Хотел уточнить, а зачем делать вот это ?
Код

if(!empty($_POST) //Если массив ПОСТ не пустой? Зачем это?



Это сообщение отредактировал(а) romantik2011 - 18.10.2011, 23:17
PM MAIL   Вверх
$дмитрий
Дата 19.10.2011, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Цитата

Хотел уточнить, а зачем делать вот это ? if(!empty($_POST)

Для того чтобы отследить нажатие кнопки "вычислить"

Цитата

а регулярными выражениями как написать правильно проверку?

А зачем?
PM MAIL   Вверх
romantik2011
Дата 1.11.2011, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 20.7.2011

Репутация: нет
Всего: нет



Я хочу отследить ещё если введно например бурда какая-то вместо числа или запятая вместо точки или число слишком длинное что пхп не сможет вычислить его

Добавлено через 53 секунды
Например  00123,56 или 0,159 или 000,659 или такое 123,156.954 и такое 123 156.954
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.