Здравствуйте, мне нужно создать простой скрипт, который будет делать возведение в степень чисел, которые я дам, а также это сообщите мне, если я не дам номер или я оставлю пустое место.
Я сделал что-то подобное, но это показывает, что «Все поля не должны быть пустыми», и если я нажму «Вычислить без чисел», я получу «Неверные данные», и это должно быть «Все поля не должны быть пустыми»
Может кто-то это исправить или сказать мне, где ошибка?
Извините если что то не понятно
Вот мой сценарий:
<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>
isset($input)
всегда вернется true
так как $input
все еще задавать даже если пусто …
Так, !empty($input)
вернусь true
только если $input
является не (см. восклицательный !
) пусто и поэтому мне кажется лучшим выбором.
Оба ответа ниже верны, но я бы предпочел объединить их.
Убедитесь, что вы проверили, нажата ли кнопка, прежде чем запускать свой код PHP — так что проверьте с
if(isset($_GET['Compute']))
до
if (isset($_GET ['number1']) || isset($_GET['number2'])) {
как сказала Морин
после этого вы должны проверить с помощью! empty от Nadav S. с
if (!empty($_GET ['number1']) && !empty($_GET['number2']))
но, пожалуйста, убедитесь, что вы не удалили строку с проверкой isset. Вы также должны изменить оператор OR || оператору AND &&, Эта строка необходима, чтобы проверить, работает ли скрипт также. Таким образом, вы проверите в этой строке, является ли переменная SET. Может случиться так, что при некоторых неудачах вы не получите правильные переменные, поэтому скрипт выдаст ошибку (вы не можете проверить с пустым, если переменная не установлена).
Я не мастер-программист, но мне кажется, я понимаю вашу проблему.
Ваш код уже начинает проверять, существуют ли числа 1 и 2 при загрузке страницы. Очевидно, что при загрузке страницы они еще не существуют. И поскольку у вас есть и еще на нем, он будет автоматически отображать все поля не должны быть пустыми при загрузке страницы.
Попробуйте проверить, нажата ли кнопка, отправив на кнопку форму DATA.
Название кнопки — Compute. Итак, давайте сделаем это!
if($_GET['Compute') {
///////// Это проверит, нажата ли кнопка /////
/// Поместите другие коды здесь. ///
}
Теперь страница начнет выполнять фактическое кодирование, КАК только КНОПКА нажата.
Поэтому он не будет проверять, существуют ли номера 1 и 2, прежде чем нажать кнопку.
Учитывая другую проблему, я не знаю, как, но я надеюсь, что это немного помогло.
Морин
попробуйте isset () и! empty () вместо просто isset ()