Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/48: Рейтинг темы: голосов - 48, средняя оценка - 4.63
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,072

Проверка на существование нескольких переменных

22.11.2016, 01:49. Показов 10064. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
error_reporting(-1);
header('Content-Type: text/html; charset=utf-8');
 
if (isset($_POST['num1']) && ($_POST['num2'])){
    echo 'numbers are entered';
    echo '<br>';
    }
else
    echo 'Is needed both numbers';
    echo '<br>';
    
?>  
 
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>calc form</title>
<link href="main.css" rel="stylesheet" type="text/css">
</head>
<body>
<form method="POST" action=''>
<table>
<tr>
<td>
Input number 1 : <input TYPE="text" name="num1" class="num_field"><br><br>
Input number 2 : <input TYPE="text" name="num2" class="num_field">
</td>
<td class="result">
 
</td>
</tr>
<tr>
<td class="operations">
<p>Choose an operation: </p>
<input TYPE="radio" name="operation" cheked value='+'/>Add
<input TYPE="radio" name="operation" value='-'/>Subtract
<input TYPE="radio" name="operation" value='*'/>Multiply
<input TYPE="radio" name="operation" value='/'/>Divide
</td>
<td class="calculate"> 
<input type='submit' name='calculate' value='Calculate' class="calc_button"> 
</td>
</tr>
</table>
</form> 
</body>
</html>

Как сделать проверку для обеих переменных сразу? isset для второго числа так не работает..

Добавлено через 17 минут
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
error_reporting(-1);
header('Content-Type: text/html; charset=utf-8');
 
if (isset($_POST['num1'])) {
    if(isset($_POST['num2'])){
        echo 'numbers are entered';
        echo '<br>';
    }
}
else
    echo 'Is needed both numbers';
    echo '<br>';
    
    ?>
Так пробовал - тоже не работает. Где у меня ошибка?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.11.2016, 01:49
Ответы с готовыми решениями:

Одновременная проверка двух переменных на существование
Доброго времени суток! Помогите советом. Есть форма на которой есть возможность загружать на сайт изображение как через поле файл так...

Проверка нескольких переменных на true
function get_true($var1,$var2,$var3,$var4,$var5,$var6){ if( ($var1 == true) and ($var2 == true) and ($var3 == true) and ($var4 ==...

Проверка на существование нескольких файлов в нескольких папках
есть 5 папок(1,2,3,4,5), в них находятся 5 файлов( в каждой папке по файлу с известными именами) (1.txt,2.txt 3.txt, 4.txt, 5.txt) при...

33
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
22.11.2016, 01:55
isset может принимать несколько аргументов. Как альтернатива – isset(...)&&isset(...).
1
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,072
22.11.2016, 01:59  [ТС]
Цитата Сообщение от miketomlin Посмотреть сообщение
Как альтернатива – isset(...)&&isset(...).
Пробовал. Тоже не работает... Через запятую тоже не работает - как два аргумента...
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
22.11.2016, 02:02
а так?
PHP
1
2
3
$_ = null;
$__ = null;
    if(!isset($_,$__)) echo true;
1
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,072
22.11.2016, 02:13  [ТС]
Цитата Сообщение от Azdeman Посмотреть сообщение
PHP
1
2
3
$_ = null;
$__ = null;
 if(!isset($_,$__)) echo true;
Пример работает, Но почему нулевые значения? Разве !isset равнозначно null? Не совсем понял о чем речь. вернее совсме не понял Я- начинающий..
Мне бы применительно к моему контексту...
Кстати о том что выше - попутно вопрос в контексте этого же: Не заполенная строка/поле имеет значение !isset null or empty?
Например поля логин/пароль правильно поверять isset null empty?
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
22.11.2016, 02:15
PHP
1
2
3
4
5
6
if(isset($_POST['enter'])){
    if(!empty($_POST['text'])) echo 'Не пусто ';
    else echo 'Пусто ';
    
    if(!isset($_POST['text'])) echo 'Существует ';
    else echo 'Не сущесвтует ';
HTML5
1
2
3
4
<form method="POST">
<input type="text" name="text">
<input type="submit" name="enter">
</form>
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
22.11.2016, 02:16
В официальных доках должна быть таблица для результатов isset и empty. isset даст ложный результат для неопределенной переменной и переменной, кот. было присвоено значение null.
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
22.11.2016, 02:18
Цитата Сообщение от СергейСереб Посмотреть сообщение
null
1( Null может быть, если переменной присвоено значение null, переменной не существует , переменная удалена.
2( empty -- проверка на пустоту. Поле пустое ? null, в поле есть пробел? уже не пусто.
3( isset -- проверка на значение отличное от null.
4( ! --- отрицание . !isset($a) -- проверка на значение не отличное от null.. то есть наоборот. То есть если переменной нет, значит !isset($a)--- вернёт true, что как раз таки в моём случае, так как Null ----> смотри 1(
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
22.11.2016, 02:21
Цитата Сообщение от СергейСереб Посмотреть сообщение
Например поля логин/пароль правильно поверять isset null empty?
Смотря что вы хотите проверить. Если вы хотите одновременно проверить существование параметра и наличие в нем непустого значения, можно написать !empty. Лично я обычно использую isset, а уже содержимое проверяю отдельным простым условием.
0
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,072
22.11.2016, 09:58  [ТС]
Цитата Сообщение от Azdeman Посмотреть сообщение
PHP
1
2
3
4
5
if(isset($_POST['enter'])){
 if(!empty($_POST['text'])) echo 'Не пусто ';
 else echo 'Пусто ';
if(!isset($_POST['text'])) echo 'Существует ';
 else echo 'Не сущесвтует ';
HTML5
1
2
3
4
<form method="POST">
<input type="text" name="text">
<input type="submit" name="enter">
</form>
Проверка одного параметра у меня работает. У меня не работает проверка ДВУХ параметров

Цитата Сообщение от miketomlin Посмотреть сообщение
Смотря что вы хотите проверить.
Цитата Сообщение от СергейСереб Посмотреть сообщение
Например поля логин/пароль правильно поверять isset null empty?
В моем примере в первом сообщении - просто калькулятор в качестве теста, в котором я и делаю подобную проверку, но в контексте вопроса, после отправки формы я хочу проверять не факт нажатия кнопки ОТПРАВИТЬ, а существование данных для логина и пароля. После отправки формы я вижу в массиве только ключи. Без значений. Наверное тут правильно проверять используя empty и isset?
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
22.11.2016, 10:05
Достаточно isset. PHP даже пустую строку будет воспринимать нормально, считая ее нулем, если конечно это не делитель
1
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,072
22.11.2016, 11:16  [ТС]
По моему начинает доходить
Сначала наверное нужно проверить существует ли вообще(isset), a внутри этой проверки уже по результатам делать остальные проверки, на пустое поле, на корректность и соответствие введенных данных
Но почему у меня даже просто isset работает неправильно?? Опять же, повторюсь-для двух переменных. Для одной все корректно.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
22.11.2016, 11:24
Цитата Сообщение от СергейСереб Посмотреть сообщение
даже просто isset работает неправильно?? Опять же, повторюсь-для двух переменных
а что значит "неправильно" ? Всегда выводит этот текст?
PHP
1
2
echo 'numbers are entered';
        echo '<br>';
0
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,072
22.11.2016, 11:34  [ТС]
Ввожу только первое число, выводится сообщение, что нужно оба числа, оставляю оба поля пустые, выводится то же сообщение, а если ввести только второе число, выводится сообщение, что оба числа введены.

Не знаю, правильно ли я понимаю проверку функцией isset.
Наверное, если есть оба поля, проверка isset всегда должна показывать существование переменных? Даже если не введены значения? При выводе массива переменной POST ключи то всегда отображаются независимо от того, есть значения или нет.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
22.11.2016, 11:46
если это текстовые поля - то да, заполненность этих полей не влияет, существовать они должны.
1
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
22.11.2016, 12:21
Цитата Сообщение от СергейСереб Посмотреть сообщение
Но почему у меня даже просто isset работает неправильно?? Опять же, повторюсь-для двух переменных.
Все должно работать. Естественно, применяя isset сразу к двум параметрам, вы не определите, какой из них не определен, но это и не нужно. В данном случае эта проверка препятствует возникновению ошибок в вашем обработчике при некорректном доступе к нему, например с какой-то левой формы, с которой эти параметры не передаются вовсе. Перечисление параметров в одном isset эквивалентно isset(...)&&isset(...), о чем я выше писал. Кстати, разные простые условия, в том числе и те, в которых проверяется содержимое параметров, вы можете спокойно объединить в сложное. В php официально действует «ленивая» форма проверки сложных условий. Т.е. вам достаточно первоочередные условия сделать более приоритетными, например для связки && разместить их левее, чтобы в случае невыполнения первоочередных условий до второстепенных дело не дошло. Например:
PHP
1
if (isset($var)&&$var==100500)
Данная проверка вполне корректна, даже если $var не определена.

Добавлено через 11 минут
Логика кода в стартовом посте у вас ошибочная. Если не определен второй параметр, то вы не увидите ни одного сообщения.
1
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,072
22.11.2016, 14:21  [ТС]
Вот что то типа этого я имел в виду:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
error_reporting(-1);
header('Content-Type: text/html; charset=utf-8');
 
if (isset($_POST['num1']) && ($_POST['num2'])){
    if (empty($_POST['num1') || ($_POST['num2'])) {  
         echo 'numbers are not entered';
         echo '<br>';
    }
else {
    echo 'result';
    echo '<br>';
}
}
    
?>
Тут только обработки результата нет. Не на чем прямо сейчас дописать все и проверить. С телефона пишу.
Не будет работать?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
22.11.2016, 14:25
нет, не будет.
Цитата Сообщение от СергейСереб Посмотреть сообщение
PHP
1
&& ($_POST['num2'])
если не ввели ничего, то в $_POST['num2'] будет пустая строка, при использовании логического И будет выполнено преобразование к булеву типу.
(bool) '' === false.
Первая часть, с isset вернет true.
true && false всегда будет равно false.
вернее, даже не так. "что-то" && false всегда будет равно false. Независимо от того, что там в первой части вместо этого самого "что-то".
0
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,072
22.11.2016, 14:42  [ТС]
Так я же и спрашивал, isset проверяет вообще существование переменной, или принимает эта переменная какое то значение или нет. Если второе, то вообще не понимаю тогда назначение этой функции. Есть же empty например...
В массиве ключ без значения о чем говорит? Переменная существует, передана была в массиве, но в нее не записано значение?
Так я пытался функцией isset проверить, передавались ли переменные вообще. Если хоть одна не передалась, дальше обработки не будет. Просим ввести оба значения.

Т.е пррверка первоначально, передались ли такие переменные, а не ввели ли значения какие то в поля. Я же говорю, может я не правильно понимаю назначение функции isset...
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
22.11.2016, 14:57
Цитата Сообщение от СергейСереб Посмотреть сообщение
Так я же и спрашивал, isset проверяет вообще существование переменной, или принимает эта переменная какое то значение или нет
давайте посмотрим ответы. Итак
Цитата Сообщение от miketomlin Посмотреть сообщение
isset даст ложный результат для неопределенной переменной и переменной, кот. было присвоено значение null.
Цитата Сообщение от miketomlin Посмотреть сообщение
Если вы хотите одновременно проверить существование параметра и наличие в нем непустого значения, можно написать !empty. Лично я обычно использую isset, а уже содержимое проверяю отдельным простым условием.
Цитата Сообщение от KOPOJI Посмотреть сообщение
если это текстовые поля - то да, заполненность этих полей не влияет, существовать они должны
Хотите сказать, что ни разу вам об этом еще не сказали в этой теме?
Цитата Сообщение от СергейСереб Посмотреть сообщение
Если второе, то вообще не понимаю тогда назначение этой функции. Есть же empty например
1) empty более сложная функция, у нее больше проверок, которые не всегда нужны (а иногда и наоборот)
2) isset поддерживает передачу нескольких аргументов, empty нет.
3) 0 для empty - пустое значение.
4) Вопросы "Существует ли значение?" и "Существует ли значение и пустое ли оно?" несколько различаются, вы не находите?

Добавлено через 7 минут
А, вот еще наглядный пример, когда empty только сбивает.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<form method="post">
<input type="text" name="foo" value="">
<input type="checkbox" name="bar" value="">
<input type="submit">
</form>
<?php
if(!empty($_POST))
{
    if(isset($_POST['bar']))
    {
        //checkbox отметили, точно.
        echo 'isset OK<br>';
    }
    else
        echo 'isset FAIL<br>';
    if(!empty($_POST['bar']))
    {
        //checkbox отметили, но мы об этом можем и не узнать..
        echo 'empty OK<br>';
    }
    else
        echo 'empty FAIL<br>';
 
}
Попробуйте не отмечать чекбокс и отправить, посмотрите вывод. А затем отметьте галку чекбокса и отправьте форму еще раз. Все работает так, как вы ожидаете?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.11.2016, 14:57
Помогаю со студенческими работами здесь

Проверка значений нескольких строковых переменных
Подскажите пожалуйста как мне проще проверить несколько переменных, на наличие в них значений. Если хоть одна из них будет пуста, вылазит...

Проверка на существование
есть таблица Client со столбцами (Name,LastName,MobilePhoneNumber,Email) и нужно проверить на существование в ней заданного мобильного...

Проверка на существование
Есть один txt-файл. В нем построчно написаны файлы и их вес в байтах. Пример: files.rar 12345678 LOL.jpg 546987 Как создать...

Проверка на существование файла -f
В скрипте надо ввести имя файла и параметр. Естественно файл нужно проверить на существование. Пробовал так: #!bin/bash ...

Проверка на существование вектора
Проблема вот в чем, у меня есть C := eigenvects(A), который выдает ответы типа а) (2, ), Vector(2, )}] и б) (2, )}]. Например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru