0

フォームのいくつかのフィールドを検証しようとしています。私は「住所」と「都道府県」の 2 つのフィールドで作業しています。最初は「住所」と「都道府県」フィールドは必須ではありませんが、「住所」フィールドに値が入力された場合は「都道府県」フィールド (これは選択項目です)リスト) は自動的に必須になります。正しい IF 条件をコーディングする方法がわかりません。

これが私が始めたものです:

<?php

if (isset($_POST["submit"])) {

$address = $_POST["address"];
$address = trim($address);
$lengtha = strlen($address);
$post = $_POST["post"];
$state = $_POST["state"];

if ($lengtha > 1) {

?>

<form method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="custinfo" >
<table>
<tr>
    <td><label for="custid">Customer ID (integer value): </label></td>
    <td><input type="text" id="custid" name="custid" value="<?php echo $temp ?>" size=11 /><?php echo $msg; ?></td>
</tr>

<tr>
    <td><label for="customerfname">Customer First Name: </label></td>
    <td><input type="text" id="fname" name="fname" size=50/><?php echo $strmsg; ?></td>
</tr>
<tr>
    <td><label for="customerlname">Customer Last Name: </label></td>
    <td><input type="text" id="lname" name="lname" size=50/><?php echo $strmsgl; ?></td>
</tr>
   <tr>
    <td><label for="customeraddress">Customer Address: </label></td>
    <td><input type="text" id="address" name="address" size=65/></td>

    <td><label for="suburb"> Suburb: </label></td>
<td><input type="text" id="suburb" name="suburb"/></td>
</tr>
<tr>
<td>
State:<select name="state" id="state">
    <option value="select">--</option>
    <option value="ACT">ACT</option>
    <option value="NSW">NSW</option>
    <option value="NT">NT</option>
    <option value="QLD">QLD</option>
    <option value="SA">SA</option>
    <option value="TAS">TAS</option>
    <option value="VIC">VIC</option>
     <option value="WA">WA</option>
   </select>
</td>

これを理解するための助けは素晴らしいでしょう!

4

1 に答える 1

0

基本的に、住所フィールドが空でない場合にのみ、都道府県フィールドを検証する必要があります。これは、次のコードで実現できます。

if ( isset( $_POST[ 'address' ] ) && ! empty( $_POST[ 'address' ] ) ) {
    // An address has been provided, so validate the state.
    if ( ! isset( $_POST[ 'state' ] ) || ! in_array( $_POST[ 'state' ], $valid_states ) ) {
        // There was an error: the address is set but the state is not.
    }
}

$valid_states上記のコードは、フォームで受け入れられる選択リストからのすべての状態値の配列を表していることに注意してください。例えば:

$valid_states = array(
    'KY', 'IL', 'FL', 'WY', /* ... */
);

また、フォームに JavaScript を追加して、住所フィールドが入力されていない場合に都道府県フィールドを完全に非表示にすることもできます。州は住所が入力されている場合にのみ検証されるため、フォーム上での存在は問題になりません。

于 2013-05-04T17:03:50.773 に答える