2010-09-08 2 views
0

Прошу прощения, если это очень упрощенный вопрос, но я все еще изучаю веревки PHP.PHP Если заявления

Я пишу почтовый скрипт в PHP, который принимает содержимое формы и отправляет ее одному из двух электронных писем. Я отлично работал, но человек, для которого я его создавал, вернулся с некоторыми изменениями, и теперь я борюсь.

По существу, есть два набора переключателей, где, если «Да» проверено, также необходимо заполнить поле «дополнительная информация». Если «Нет» проверяется, другое поле может оставаться пустым.

Это то, что я до сих пор:

if ($var1 == "String" AND $var2 =="") 
{ 
    echo("Fill in the blah field"); 
} 
elseif ($var3 == "Yes" AND $var4 == "") 
{ 
    echo ("Fill in the blah blah field"); 
} 
elseif ($var1 !="" AND $var2 !="" AND $var7 !="") 
{ 
    mail(....) 
    echo(....) 
} 

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

Благодарим за помощь!

+0

Можете ли вы разместить фактическую форму, которая используется? – webbiedave

+0

Вы пробовали 'error_reporting (-1); ini_set ('display_errors', 'On'); 'наверху скрипта увидеть все ошибки? http://php.net/error_reporting – janmoesen

ответ

1

Вашего описание и код, похоже, не связаны со мной, но я смущен переменными, названными «варом» и полем «ли». Но, основываясь на вашем описании, возможно, это поможет вам.

$set_2_required = !empty($_GET['radio_set_1'] && $_GET['radio_set_1'] == 'yes'; 

if ($set_2_required && empty($_GET['radio_set_2'])){ 
    echo 'ERROR: You must fill out radio set 2.'; 
} else { 
    // Send your mail. 
} 

EDIT: Я думаю, что мой предыдущий комментарий имеет все логические куски того, что вам нужно, но, возможно, это будет ближе к тому, что вы на самом деле писать.

// With these ternary operators, you logic further down can rely on a NULL 
// value for anything that's not set or an empty string. 
$dropdown_1 = !empty($_GET['dropdown_1']) ? $_GET['dropdown_1'] : NULL; 
$dropdown_2 = !empty($_GET['dropdown_2']) ? $_GET['dropdown_2'] : NULL; 
$field_1 = !empty($_GET['field_1']) ? $_GET['field_1'] : NULL; 
$field_2 = !empty($_GET['field_2']) ? $_GET['field_2'] : NULL; 

// This 'valid' variable lets you avoid nesting and also return multiple errors 
// in the request. 
$valid = TRUE; 
if (!$field_1 && $dropdown_1 == '<string makes field required>'){ 
    echo 'ERROR: Field 1 is required for this dropdown selection.'; 
    $valid = FALSE; 
} 
if (!$field_2 && $dropdown_2 == '<string makes field required>'){ 
    echo 'ERROR: Field 2 is required for this dropdown selection.'; 
    $valid = FALSE; 
} 

// A final check if the logic gets complicated or the form on the front end 
// wants to check one thing to determine pass/fail. 
if (!$valid){ 
    echo 'ERROR: One or the other fields is required.'; 
} else { 
    // Everything's fine, send the mail. 
} 
+0

Извините, теперь, когда я оглядываюсь назад, это сбивает с толку. Var1 - это значение из выпадающего меню. Из всех значений, если выбрано 1 из них, var2 содержит что-то. Если какой-либо другой параметр в выпадающем меню выбран, это не имеет значения. Поэтому «String» ссылается на значение раскрывающегося списка. «Блахи» относятся к конкретной области, которая должна быть заполнена. Есть два из них. – Vecta

1

Я не уверен, что это действительно ошибка в коде или просто копирование и вставка для этого сообщения, но попробуйте закрыть свои кавычки.

echo("Fill in the blah field"); 
echo ("Fill in the blah blah field"); 
+0

К сожалению, я думаю, что это была просто ошибка транспонирования. Благодарю. – Vecta

Смежные вопросы