2012-03-29 79 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

相关问题