2012-03-29 9 views
1

Ich habe ein Formular, wo Benutzer die Namen und E-Mail-Adressen von Kollegen eingeben können. Sie müssen nichts eingeben. Wenn jedoch ein Name eingegeben wird, ist die E-Mail-Adresse erforderlich.Wie man ein Feld nur dann benötigt, wenn ein anderes Feld verwendet wird

<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> 

Ich kann bereits bestimmte Felder macht erforderlich, um die Funktion unten. Ich denke, ich könnte eine if else-Anweisung verwenden, um zu überprüfen, ob der erste Name einen Wert hatte, und dann die erste E-Mail-Adresse eingeben. Das Formular enthält jedoch zwanzig mögliche Namen/E-Mail-Paare.

Was ich bin, ist Rat über die Art von Sache, die ich versuchen sollte, dies zu tun, anstatt eine vollständige Lösung. Ich schätze das eine vage Frage, aber ich bin sehr neu in PHP und habe Schwierigkeiten bei der Suche nach einer Lösung.

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

Warum nicht auf der Client-Seite? Beim Absenden der Validierung mit Javascript/JQuery –

+0

versuche ich PHP zu lernen und finde den besten Weg dazu, indem ich etwas tue. Allerdings kann ich auch ein wenig von jQuery lernen, danke für den Vorschlag, ich werde es versuchen. –

Antwort

0

Solange Sie mit der Benennung Ihrer Felder wie name_1 konsistent sind, können Sie die Anzahl der Array-Schlüssel mit Teilzeichenoperationen nach _ extrahieren und in email_ für einen vergleichbaren Wert suchen.

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

Danke, das gefällt mir. Die tatsächliche Form ist komplizierter als das Beispiel, das ich gab, aber ich verstehe, was Sie getan haben, und ich denke, ich kann es zum Laufen bringen. Genau das, was ich suchte –

Verwandte Themen