2014-10-22 3 views
-1

나는 데이터베이스에서 데이터를 가져올 수 있지만 뭔가를 잡으려고 할 때 (이 경우 모든 사용자) 화면에 출력하여 마치 길을 따라 어딘가에 들어가서 아무것도 넣지 않은 것처럼 보이지 않습니다. 그곳에. 내가 필요하다고 생각하는 모든 파일과 수업을 포함했습니다. 미리 감사드립니다.내 PHP 스크립트가 데이터베이스에서 필요로하는 것을 얻지 못하는 이유는 무엇입니까?

//showUsers.php 
// Displays a list of all users 
// Input: an array of CommentData objects 
<?php 
function showUsers($userList, $msg) { 
    echo "<h1>".$msg."</h1>"; 

    foreach ($userList as $user) { 
     $user->printUser(); 
     //echo $user; 
    } 

    echo '<h3><a href="../index.php">Back to home</a>'; 
} 
?> 




//usersController.php 
<?php 
include_once("../views/showUsers.php"); 
include_once("../models/UserDB.class.php"); 
include_once("../models/UserData.class.php"); 
include_once("../models/Database.class.php"); 

$myUsers = UserDB::getAll(); 
showUsers($myUsers, "All users"); 
?> 



//UserData.class.php 
// Responsibility: Holds data for comment and performs validation 
// Constructor expects an associative array with field values for initialization 
<?php 
class UserData { 
    private $userId; 
    private $user; 
    private $userFirstName; 
    private $userLastName; 


    public function __construct($formInput) { 
     $this->initialize($formInput); 
    } 

    public function getUser() { 
     return $this->user; 
    } 

    public function getUserFirstName(){ 
     return $this->userFirstName; 
    } 

    public function getUserLastName(){ 
     return $this->userLastName; 
    } 

    public function getUserId() { 
     return $this->userId; 
    } 

    public function getParameters() { 
     // Return data fields as an associative array 
     $paramArray = array("userId" => $this->userId, 
          "userFirstName" => $this->userFirstName, 
          "userLastName" => $this->userLastName 
          ); 
     return $paramArray; 
    } 

    public function printUser() { 
     echo "<h1>SHIELD Member</h1>"; 
     echo "User first name: $this->userFirstName<br>"; 
     echo "User last name: $this->userLastName<br>"; 
    } 

    private function initialize($formInput) { 
     if (isset($formInput['userId'])) 
      $this->userId = $formInput['userId']; 
     else 
      $this->userId = 0; 
     if (isset($formInput['userFirstName'])) 
      $this->userFirstName = $formInput['userFirstName']; 
     if (isset($formInput['userLastName'])) 
      $this->userLastName = $formInput['userLastName']; 
    } 
} 
?> 


//UserDB.class.php 
// Responsibility: Handles all queries pertaining to comment 
<?php 
class UserDB { 

    public static function getAll() { 
     $query = "SELECT id, first_name, last_name 
         FROM users 
         GROUP BY id"; 

     $users = array(); 
     try { 
      $db = Database::getDB(); 
      $statement = $db->prepare($query); 
      $statement->execute(); 
      $users = UserDB::getUserArray($statement->fetchAll(PDO::FETCH_ASSOC)); 
      $statement->closeCursor(); 
     } catch (PDOException $e) { // Not permanent error handling 
      echo "<p>Error getting all users ".$e->getMessage()."</p>"; 
     } 
     return $users; 
    } 

    public static function getUserArray($rowSets) { 
     $users = array(); 
     foreach ($rowSets as $userRow) { 
      $user = UserDB::getUser($userRow); 
      array_push ($users, $user); 
     } 
     return $users; 
    } 


    public static function getUser($userRow) { 
     return new UserData ($userRow); 
    } 

} 
?> 
+1

'$ myUsers = USERDB ::를 getAll();','위해서 var_dump를 추가

이 시도 ($ myUsers);'. 그것은 무엇을 말하는가? – rjdown

+0

아무 것도 페이지에 표시되지 않습니다. 빈 페이지 만 오류가 발생하지 않습니다. – user3491205

+0

더 깊이 파고들 필요가 있습니다. 'UserDB.class.php'의 내용을 게시 할 수 있습니까? – rjdown

답변

1

데이터베이스 필드 이름이 UserData 클래스에 예상되는 것과 일치하지 않습니다.

private function initialize($formInput) { 
    if (isset($formInput['id'])) 
     $this->userId = $formInput['id']; 
    else 
     $this->userId = 0; 
    if (isset($formInput['first_name'])) 
     $this->userFirstName = $formInput['first_name']; 
    if (isset($formInput['last_name'])) 
     $this->userLastName = $formInput['last_name']; 
} 

를 (또는 이전에이 클래스에서 한 것과 일치하는 데이터베이스 필드의 이름을 변경) 한 후

+0

글쎄, DB에서 데이터를 얻는데 도움이되었지만, 내가 바라는 관점으로는 도움이되지 못했습니다. showUsers는 여전히 비어 있습니다. 내가 뭔가 잘못되었다고 생각하게 만듭니다.하지만 데이터베이스에서 데이터를 가져 오는 것까지는 이것이 해결되었습니다. 고맙습니다 ! – user3491205

관련 문제