Доброго времени суток. Такой вопрос функция isset проверяет, существует ли переменная и присвоено ли ей какое нибудь значение. Как она работает в коде ниже: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="styleS.css"> <title>Документ без названия</title> </head> <body> <img src="blankface.jpg" width="161" height="350" alt="" style="float:right"> <img name="elvislogo" src="elvislogo.gif" width="229" height="32" border="0" alt="Make Me Elvis"> <p><strong>Персонально:</strong> ТОЛЬКО для покупателей Элмера<br> Составьте и отправьте персональное письмо для посетителей, внесенных в лист рассылки.</p> Код (Text): <?php if (isset($_POST['Submit'])) { //Тут начало $from = 'elmer@makemeelvis.com'; $subject = $_POST['subject']; $text = $_POST['elvisMail']; $output_form = false; if (empty($subject) && empty($text)) { echo 'Вы забыли ввести тему и текст электронного письма. <br>'; $output_form = true; } if (empty($subject) && (!empty($text))) { echo 'Вы забыли ввести тему электронного письма. <br>'; $output_form = true; } if((!empty($subject)) && empty($text)) { echo 'Вы забыли ввести текст электронного письма. <br>'; $output_form = true; } if ((!empty($subject)) && (!empty($text))) { $dbc = mysqli_connect('localhost', 'Encoder', '31502', 'elvis_store') or die ('Ошибка соединения с MySQL сервером.'); $query = "SELECT * FROM email_list"; $result = mysqli_query($dbc, $query) or die('Ошибка при выполнении запроса к базе данных'); while($row = mysqli_fetch_array($result)) { $first_name = $row['first_name']; $last_name = $row['last_name']; $msg = "Уважаемый $first_name $last_name,\n$text"; $to = $row['email']; mail($to, $subject, $msg, 'From:' . $from); echo 'Элекстронное письмо отправленно: ' . $to . '<br>'; } mysqli_close($dbc); } //Тут конец. } else { $output_form = true; } if ($output_form) { ?> <br> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <label for="subject">Тема электронного письма:</label><br> <input id="subject" name="subject" type="text" size="30"><br> <label for="elvisMail">Содержание элекстронного письма:</label><br> <textarea id="elvisMail" name="elvisMail" rows="8" cols="40"></textarea><br> <input type="submit" name="Submit" value="Отправить"> </form> <?php } ?> </body> </html> Не могу понять, ведь переменная $_POST она же существует, и должно вывести true. Вот код ниже, выводит сообщение что существует и не важно что значение у переменной нету. Код (Text): $v2 = ''; if (isset ($v2)) { echo 'Переменная $v2 существует'; } else { echo 'не существует'; } Он же должен выдать True, так как в супер глобальной переменой $_POST['Submit'] существует, при выполнение функций он выдает false почему так происходит?
у тебя нет никакой функции, где оно должно выдавать true? Добавлено спустя 2 минуты 41 секунду: есть тёплый ламповый способ проверки условий: поставь сразу за if() { die('OPA!!!!'); оно покажет правильно ты понимаешь код или нет. проверил одно место — передвинул die() в новое место и там проверил. так до просветления.
echo $_POST['Submit']; что то выводит? o_0 Добавлено спустя 2 минуты 21 секунду: http://www.php.ru/manual/tutorial.forms.html Зачем проверять $_POST['Submit'] ? Код (PHP): <form action="action.php" method="post"> <p>Ваше имя: <input type="text" name="name" /></p> <p>Ваш возраст: <input type="text" name="age" /></p> <p><input type="submit" /></p> </form>
Что бы при запуске функция не выполнялась, пока не нажмешь кнопку отправить. И если нажмешь отправить, тогда он либо отправить сообщение, либо выведет одну из трех опушечных ошибок. Я не понимаю как работает в данной функций isset.
Код (PHP): if(isset($_POST[subject]) { //Выполняется код } else { //Твоя форма } Ведь $_POST[subject] тоже не появится без отправки формы? Добавлено спустя 52 секунды: <input type="submit" name="Submit" value="Отправить"> Лишнее значение. Добавлено спустя 2 минуты 37 секунд: isset проверяет существование и возвращает либо true либо false , в твоем случае false потому что Submit как я полагаю не передает value.
Подумал и пришел к такому выводу: Он возвращает false потому что: Функция не передает данные php интерпретатору. То есть: я не нажимал на кнопку отправить, и в $_POST ничего не передалось, и он не существует, функция isset принимает значение false и выводит форму для заполнения. А если нажимаю отправить то появляется $_POST со значениями и функция принимает значение True, после чего выполняются условие if. Эта функция для отправки рассылки, но с условием что все поля заполнены, если хоть одно поле пустое выводит ошибку.