Создание формы RSVP. Как сделать обязательные поля необязательными в зависимости от раскрывающегося списка?

0

Я построил форму RSVP для свадебного сайта, который я делаю для друга, и у меня есть несколько выпадающих форм в форме для участия в пятницу и субботу и для варианта питания. Прямо сейчас, все поля требуются, но я хочу сделать так, чтобы вариант раздачи еды был необходим только в том случае, если человек выбирает "да" для участия в пятницу и субботу. Таким образом, по сути, выбор еды может потребоваться только в том случае, если человек придет на свадьбу. Как это сделать в PHP?

Вот моя форма...

        <div class="form">

                <div class="validation">
                    <p>Oops! Please correct the highlighted fields...</p>
                </div>

                <div class="success">
                    <p>Thanks for your response!</p>
                </div>

                <form action="javascript:;" method="post" id="rsvp_form">
                    <div class="row">
                        <p>
                            <label for="first_name">First Name</label>
                            <input type="text" name="first_name" id="first_name" />
                        </p>
                        <p>
                            <select name="friday" id="friday">
                              <option value="">Friday Dinner?</option>
                              <option value="Yes">Yes</option>
                              <option value="No">No</option>
                            </select>
                        </p>

                    </div>

                    <div class="row">
                        <p>
                            <label for="last_name">Last Name</label>
                            <input type="text" name="last_name" id="last_name" />
                        </p>    
                        <p>
                            <select name="saturday" id="saturday">
                              <option value="">Saturday Wedding?</option>
                              <option value="Yes">Yes</option>
                              <option value="No">No</option>
                            </select>
                        </p>                        

                    </div>

                    <div class="row">
                        <p>
                            <label for="rsvp_email">Email</label>
                            <input type="text" name="rsvp_email" id="rsvp_email" />
                        </p>                            

                        <p>
                            <select name="meal_choice" id="meal_choice">
                              <option value="">Meal Choice...</option>
                              <option value="Short Ribs">Short Ribs</option>
                              <option value="Red Snapper Fillet">Red Snapper Fillet</option>
                              <option value="Stuffed Poblano Pepper">Stuffed Poblano Pepper (Vegetarian)</option>
                            </select>
                        </p>
                    </div>

                    <input type="submit" class="button" value="RSVP" />
                </form>
        </div>
    </div>

Это мой PHP-скрипт, который работает...

<?php


// Extract form contents
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$rsvp_email = $_POST['rsvp_email'];
$invite_code = $_POST['invite_code'];
$friday = $_POST['friday'];
$saturday = $_POST['saturday'];
$meal_choice = $_POST['meal_choice'];

// Validate email address
function valid_email($str) {
    return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
}

// Return errors if present
$errors = "";

if($first_name =='') { $errors .= "first_name,"; }
if($last_name =='') { $errors .= "last_name,"; }
if(valid_email($rsvp_email)==FALSE) { $errors .= "rsvp_email,"; }
if($friday =='') { $errors .= "friday,"; }
if($saturday =='') { $errors .= "saturday,"; }
if($meal_choice =='') { $errors .= "meal_choice,"; }



// Send email
if($errors =='') {

    $headers =  'From:  <[email protected]>'. "\r\n" .
                'Reply-To: '.$rsvp_email.'' . "\r\n" .
                'X-Mailer: PHP/' . phpversion();
    $email_subject = "RSVP Form: $first_name $last_name";
    $message="First Name: $first_name \n\nLast Name: $last_name \n\nRSVP Email: $rsvp_email \n\nAttending Friday: $friday \n\nAttending Saturday: $saturday \n\nMeal Choice: $meal_choice";

    mail($to, $email_subject, $message, $headers);
    echo "true";

} else {
    echo $errors;
}

?>
Теги:
validation
forms

1 ответ

0
Лучший ответ

Проверьте, даны ли в течение $friday или $saturday, а затем проверьте чек на еду. Если оба не введены, то не будет проверки на еду

if($first_name =='') { $errors .= "first_name,"; }
if($last_name =='') { $errors .= "last_name,"; }
if(valid_email($rsvp_email)==FALSE) { $errors .= "rsvp_email,"; }
if($friday =='') { $errors .= "friday,"; }
if($saturday =='') { $errors .= "saturday,"; }
if( $friday != '' || $saturday != '') {
   if($meal_choice =='') { $errors .= "meal_choice,"; }
}
  • 0
    Так где бы я разместить эту строку кода? После проверки формы и до начала отправки письма?
  • 0
    замените текущую проверку приема пищи кодом в ответе или просто окружите его выражением if, как у меня.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню