0

これは、登録フォームを介して新しいユーザーをデータベースに追加するために書き始めたクラスです。必要な値が提供されていないかどうかを確認するためにバックエンド チェックを試みるまで、すべてが正常に機能していました。これがコードです...

class User
{
//Basic Login variables
private $uName;
private $pWord;
private $cpWord;
private $shaPass;

//Account info vars
private $fName;
private $lName;
private $email;
private $confEmail;
private $mPhone;
private $hPhone;

//Trading info vars
private $trName;
private $phone; //Defaults to home phone, or cell, if no home number specified.
private $fax;
private $web;

//Home Address vars
private $h_addr1;
private $h_addr2;
private $h_city;
private $h_state;
private $h_zip;

//Postal Address vars
private $p_addr1;
private $p_addr2;
private $p_city;
private $p_state;
private $p_zip;

private $not_required_vars;
//Post name collection
private $post_coll;
//Error collection
private $errors;

public function User()
{       
    $this->not_required_vars = array('fax', 'web');
    $this->post_coll = array('uName', 'pWord', 'cpWord', 'fName', 'lName', 'email', 'confEmail', 'dob', 'mPhone', 'hPhone', 'trName', 'phone', 'fax', 'web', 'h_addr1', 'h_addr2', 'h_city', 'h_state', 'h_zip', 'p_addr1', 'p_addr2', 'p_city', 'p_state', 'p_zip');
    //print_r($_POST);

    foreach($this->post_coll as $index)
    {
        if(isset($_POST[$index]) && (!empty($_POST[$index])))
        {
            //echo $index . '<br />';
            $this->{$index} = $_POST[$index];
        }else
        {
            foreach($this->not_required_vars as $not_req)
            {
                if($index != $not_req)
                {
                    //echo $index . '<br />';
                    $this->errors = array();

                    $this->errors[] = array($index=>'This field is required');
                    break;
                    //header('location: '.$_SERVER['PHP_SELF'].'?page='. $_GET['page'] . '&error=1');
                }
            }
        }

    }
    print_r($this->errors);
}

上記が何をするかを説明することで、時間を節約しようとしましょう...「post_coll」と呼ばれる $_POST インデックス文字列の配列があります。次に、各文字列を foreach ループでチェックして、その文字列が $_POST 配列に設定されているかどうかを確認します。設定されていない場合は、必要な値かどうかを確認します。それが実際に必要な値である場合、配列のキーとして文字列(「uName」など)を使用して連想配列を作成し、値を「このフィールドは必須です」のようにリダイレクトして元に戻します。私のフォーム クラスからエラーを取得し、フォームの適切な場所に表示できます。

助けてくれてありがとう。

4

1 に答える 1

2
$this->errors[] = array($index=>'This field is required');

この行は、その作成と配列の配列のように見えます

あなたが探しているのはこのようなものではありませんか?

$this->errors[$index] = 'This field is required';
于 2013-02-13T10:13:19.997 に答える