2012-03-29 113 views
1

我有一個表單,用戶可以輸入同事的姓名和電子郵件地址。他們不需要輸入任何內容。但是,如果輸入名稱,則需要電子郵件地址。如何使一個字段僅在使用另一個字段時才需要

<form> 
     1st name <input type="text" name="name_1" value"" /> 
     1st email <input type="text" name="email_1" value"" /> 
     2nd name <input type="text" name="name_2" value""/> 
     2nd email <input type="text" name="email_2" value""/> 
    </form> 

我已經可以使用下面的功能做某些字段了。我想我可以使用if else語句來檢查第一個名稱是否有值,然後創建第一個電子郵件。但是,該表單有20個潛在的名稱/電子郵件對。

我所追求的是關於我應該嘗試這樣做的事情的建議,而不是一個完整的解決方案。我對這個問題有點模糊,但我對PHP很陌生,並且在尋找解決方案時遇到困難。

function check_required_fields($required_array) { 
    $field_errors = array(); 
    foreach($required_array as $fieldname) { 
      if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) && !is_numeric($_POST[$fieldname]))) { 
        $field_errors[] = $fieldname; 
      } 
    } 
    return $field_errors; 
} 
+0

爲什麼不在客戶端做呢?在提交做驗證使用JavaScript/JQuery – 2012-03-29 15:34:41

+0

我tryinig學習PHP,我發現最好的方式是通過實際上做某事。不過,我也可以學習一些jQuery,謝謝我提出的建議。 – 2012-03-29 16:07:36

回答

0

只要您與您的命名像場一致name_1,你可以_後提取與子操作數組鍵的數量,並尋找在email_同等的數值。

foreach ($_POST as $key => $value) { 
    // If it is a name field and isn't empty 
    if (strpos($key, 'name_') === 0 && !empty($_POST[$key])) { 
    // The email field is email_ and the number (which comes after the 5th character in name_num) 
    $namenumber = substr($key, 5); 
    $emailfield = 'email_' . $namenumber; 
    // Append the email requirement onto $field_errors if it's empty in $_POST 
    if (empty($_POST[$emailfield])) { 
     $field_errors[] = $emailfield; 
    } 
    } 
} 
+0

謝謝,我喜歡那樣。實際的形式比我給出的例子更復雜,但是我明白你已經做了什麼,我想我可以使它工作。就是我以後的樣子 – 2012-03-29 16:18:20

相關問題