2013-02-13 3 views
0

다음은 등록 양식을 통해 데이터베이스에 새 사용자를 추가하기 위해 작성한 클래스입니다. 필요한 값이 제공되지 않는지 확인하기 위해 백엔드 검사를 시도 할 때까지 모든 것이 정상적으로 작동했습니다. 여기 동적 키 => 값을 기반으로 한 PhP 연관 오류 배열

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 인덱스 문자열 배열을 가지고 무엇을 설명함으로써 시간을 절약 해보자 ... 코드입니다. 그런 다음 각 문자열을 통해 $ _POST 배열에 해당 문자열을 설정했는지 확인하기 위해 foreach 루프를 실행합니다. 그렇지 않은 경우 필요한 값인지 확인합니다. 그것이 실제로 필요한 값이라면 문자열을 가진 연관 배열 (예 : 'uName')을 배열의 키로 만들고 싶습니다.이 값은 "이 필드가 필요합니다"와 같은 값을 가지므로 다시 리디렉션 할 때 내 양식 내 클래스에서 getErrors를 가져 와서 양식에 적절한 곳에 표시 할 수 있습니다.

미리 도움을 청하십시오.

답변

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

이 줄은

당신이 찾고있는이 같은 그것을하지 자사의 작성 및 배열의 ​​배열처럼 보이는?

$this->errors[$index] = 'This field is required'; 
+0

좋아요 ... 그래, 내가 그이있을 때 한 지점에서,하지만 난 ... 프린트 아웃이 얻을했다 '배열 ([cpWord]이 필드는 필요 =>)' 그게 내가 원하는 것입니다. 그러나 ... cpWord가 채워지지 않은 유일한 값은 아니었고, uName과 pWord도 채워지지 않았습니다. 그것은 그것이해야 할 일을하는 것과 같지만 오류를 추가하는 대신 배열 내부의 값을 대체합니다. 편집 : array_push와 같은 것을 사용하려고했지만, 그 중 하나가 작동하지 않거나 적어도 내가하지 않았던 방식으로 작동하지 않습니다. –

+0

배열의 값을 화면에 어떻게 인쇄하고 있습니까? – cosmicsafari

+0

User 클래스는 사용자를 양식으로 다시 리디렉션 할 것이며 각 요소 위에 $ errors [ 'uName'] etc ... (getErrors 함수에서 가져옴)가 설정되면 div 태그가 표시됩니다. display 그것은 요소 위에 메시지입니다. 여기에 내가 오류를 표시하는 방법의 예입니다 –