0

私はフォームを持っていますが、フォームにはいくつかのフィールドのみが必須です。フィールドが必須でない場合、空のデータの検証をチェックする必要はありません。非必須フィールドにデータが含まれている場合は、データをチェックする必要があります。データあり。

以下のコードは、すべてのフィールドをチェックします。たとえば、以下のコードでは電話は必須ではないとします。コードを変更する方法を教えてください。

$validate = array(
    array($x, '/^[a-z\d ]{4,20}$/i', "Please enter valid name."),
    array($y, '/^[a-z\d ]{4,20}$/i', "Please enter a real category."),
    array($phone, '/^\(?[0-9]{3}\)?|[0-9]{3}[-. ]? [0-9]{3}[-. ]?[0-9]{4}$/' , "Please enter a valid phone number")
);

$error = '';
foreach ($validate as $validation)
{
    if (!preg_match($validation[1],$validation[0]))
    {
       $error .= $validation[2]; 
    }
}

if($error != '')
{
    echo $error;
    exit;
}

明確でない場合は、この投稿にコメントしてください。

前もって感謝します!

4

2 に答える 2

0

少なくとも必須フィールドが送信されているかどうかを確認したい場合は、issetおよびempty関数を使用して、それらが設定されていて、真の値を持っているかどうかを確認できます。

例えば:

if ( isset($_POST['username'], $_POST['password']) && 
     ! empty($_POST['username']) && ! empty($_POST['password']) ) {
    // validation here
}

これは、ユーザー名とパスワードのフィールドが送信され、値があるかどうかを確認しますが、たとえば、上記の条件が true を返すために電子メール フィールドが入力されているとは限りません。

于 2012-06-19T10:05:20.973 に答える
0

事前に必須フィールドがわかっている場合は、それらを配列にグループ化し、現在のキーに基づいてテストすることをお勧めします。キーが必須ではないが値を保持している場合は、テストできます。それ以外の場合は、通常のチェックを行います。

$error = '';
$mandatoryFields = array('key1', 'key2' 'key3');

foreach ($validate as $validation)
{
    if (!in_array($validation[0], $mandatoryFields) && strlen(trim($validation[0])) > 0) 
    {
        // There is data in a non mandatory field.
        // Perform your test.
    } 
    else {
        // Do your regular test.
        if (!preg_match($validation[1],$validation[0]))
        {
           $error .= $validation[2]; 
        }
    }
}

これを試すことができます。

于 2012-06-19T10:32:52.137 に答える