2012-03-29 11 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を使用して検証を行います –

+0

私はPHPを学ぶためにtryinigしています。しかし、私はjQueryの少しでも学ぶかもしれません、私はそれを行ってみましょう提案のおかげで。 –

答えて

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

ありがとう、私はそれが好きです。実際のフォームは、私が与えた例よりも複雑ですが、あなたがしたことを理解しています。私はそれを動作させることができると思います。ちょうど私が後にしたもの –

関連する問題