Вложенные условные выражения в операторе if - PullRequest
0 голосов
/ 24 января 2012

Я хочу вложить два условия в другое условие (если это имеет смысл) оператора if. Позвольте мне объяснить.

У меня есть форма. У меня есть имя, адрес электронной почты, а затем у меня есть две текстовые области (одна представлена ​​$ designer_program, а другая - $ _designer_language). Одна текстовая область предназначена для дизайнеров, заполняющих форму, а другая текстовая область предназначена для программистов, заполняющих форму. Им нужно заполнить только одно, НО нужно заполнить. Поэтому оператор if, который я использую в своем PHP, выглядит следующим образом:

if (isset($_POST['designer_name']) && isset($_POST['designer_email']) && isset($_POST['designer_program'])){

etc.

Это хорошо, но я хочу сделать либо designer_program, либо designer_language. В основном я пробовал что-то вроде этого:

if (isset($_POST['designer_name']) && isset($_POST['designer_email']) && isset(($_POST['designer_program']) || ($_POST['designer_language'])){

но я думаю, вы не можете вложить такие условные выражения? Я уверен, что есть простое синтаксическое решение, но я не могу его найти. Благодарю.

EDIT

Вот полный код:

<?php

if (isset($_POST['designer_name']) && isset($_POST['designer_email']) && isset($_POST['designer_program'])){
    $designer_name = $_POST['designer_name'];
    $designer_email = $_POST['designer_email'];
    $designer_program = $_POST['designer_program'];
    $designer_language = $_POST['designer_language'];

    if(!empty($designer_name) && !empty($designer_email) && !empty($designer_program)){
        $to = 'example@example.com';
        $subject = 'Test Application: '.$designer_name;
        $body = "Test Application";
        $headers = 'From: '.$designer_email;

        if (@mail($to, $subject, $body, $headers)){
                echo '<script type="text/javascript">document.location.href="thankyou.php";</script>';
        }

        }
        else{
        echo '<script type="text/javascript">
        window.alert("Please fill out all fields.");
        </script>';
        }

    }
?>

1 Ответ

1 голос
/ 24 января 2012

Ваша логика не работает, потому что отправляются все текстовые области, независимо от того, содержат они информацию или нет.

Вам нужно сделать одну проверку для POST, а затем проверить, используя условия, которые у вас есть для непустые значения вместо заданных значений.

if (isset($_POST['designer_name'])
{
    if (!empty() && !empty() && ( !empty() || !empty() ))
    {
...