2015-01-15 1 views
1

Здравствуйте, мне нужно создать простой скрипт, который будет делать возведение в степень числа, которое я дам, а также его сообщите мне, если я не дам число или я оставлю пустое место.математика - exponentation in php - простой скрипт

Я сделал что-то подобное, но он показывает начало, что «Все поля не должны быть пустыми», и если я нажму «вычислить без цифр», я получу «Неверные данные», и это должно быть «Все поля не должны быть пустым "

Может ли кто-нибудь исправить это или сказать мне, где ошибка?

Извините, если что-то не понятно

Вот мой сценарий:

<body> 

<FORM action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get"> 
Base: <input type="text" name="number1" /> 
Exponent : <input type="text" name="number2" /> 
<input type="submit" value="compute!" name="Compute"/> 
</form> 

<?php 

if (isset($_GET ['number1']) || isset($_GET['number2'])) { 

    if (is_numeric($_GET['number1']) && is_numeric($_GET['number2'])) { 

     echo "{$_GET['number1']}^{$_GET['number2']} = "; 
     echo pow($_GET['number1'], $_GET['number2']); 
     echo "<BR>"; 

    } 
    else 
    { 
     echo "Wrong data<BR>"; 
    } 
} 
else 
{ 
    echo "All fields must not be empty<BR>"; 
} 

?> 
<br /> 
<a href="index.php">Return!</a> 
</body> 
+0

Отступ кода делают сделать его легче читать, и легче увидеть, что каждый из вложенной 'if' заявления на самом деле делает –

+0

, если в сомневайтесь в версии, используйте exp (b * ln (a)) для вычисления a^b. Кроме того, вы должны выполнять только расчет, когда установлены как число 1, так и число2 (используя && вместо ||). И проверьте значение кнопки отправки, чтобы увидеть, было ли вообще представлено что-либо. – Bart

+3

Обратите внимание, что 'isset' не обязательно делает то, что вы ожидаете .... оба' $ _GET ['number1'] 'и' $ _GET ['number2'] 'are __" set "__ (они существуют и aren ' t NULL), но они все равно могут содержать пустые строки –

ответ

2

isset($input) всегда будет возвращать true потому $input еще установить даже если пустой ...

Так, !empty($input) вернется true только если $input является не (см восклицание !) пусто и поэтому кажется мне лучшим выбором.

0

Я не мастер программист, но я думаю, что я вроде понимаю вашу проблему.

Ваш код уже начинает проверку, существует ли число 1 и 2 при загрузке страницы. Очевидно, что при загрузке страницы они еще не существуют. И так как у вас есть и еще на нем, он будет автоматически эхо. Все поля не должны быть пустыми при загрузке страницы.

Попробуйте проверить, нажата ли кнопка, отправив форму DATA на кнопку. Название кнопки «Вычислить». Итак, давайте сделаем это!

if($_GET['Compute') { 

///////// Это будет проверить, является ли кнопка толкнула /////
/// Плейс других кодов здесь. ///

}

Теперь страница начнет выполнять фактическое кодирование только кнопка нажата. Поэтому он не будет проверять, существуют ли номера 1 и 2, прежде чем нажимать кнопку.

Учитывая другую проблему, я не знаю, как, но я надеюсь, что это немного помогло.

Морин

1

Оба ответа ниже, но я бы предпочел их комбинировать.

Убедитесь, что вы проверить, если кнопка нажата, прежде чем запустить PHP код - так что проверить с

if(isset($_GET['Compute'])) 

перед тем

if (isset($_GET ['number1']) || isset($_GET['number2'])) { 

, как Морин сказал

после этого необходимо проверить! Пусто от Надава С. с

if (!empty($_GET ['number1']) && !empty($_GET['number2'])) 

но, пожалуйста, не удаляйте строку с помощью проверки isset. Вы также должны изменить OR-operator || к И-оператору & &. Эта строка необходима, чтобы проверить, работает ли скрипт. Таким образом, вы проверите эту строку, если переменная SET. Может быть, что некоторые из них не удастся, вы не получите правильных переменных, поэтому скрипт выдаст ошибку (вы не можете проверить с пустым, если переменная не установлена).

+0

Хм Спасибо, что он работает с '! empty' и' && ', но если я использую' if ($ _GET ['Compute']) {'Я получаю Уведомление: Неопределенный индекс: Вычислить в C: \ xampp \ htdocs \ pot \ dobra.php в строке 15 Это строка с' if ($ _ GET ['Compute']) {' – user3465420

+1

Прошу прощения за ту туманную ошибку. Вы должны проверить 'if (isset ($ _ GET ['Compute']))'. Таким образом, ваш PHP проверяет, нажата ли кнопка. Извини :) – Sam

0

попробовать Исеть() и! Пусто() вместо того, чтобы просто Исеть()