2012-10-17 98 views
0

所以基本上,我對PHP很陌生,並且我無法使它工作。我有一個對象內的對象,我試圖訪問它的領域。它從MySQL數據庫中繪製數據。我不確定錯誤在哪裏發生。我希望有人能指出我正在製造的一個明顯的錯誤或什麼。謝謝!一個對象內的PHP對象

<?php 
    include("Data/Classes.php"); 
    include("Data/Utils.php"); 
    $contacts = listBusinessesWithDefaultContact() or die(); 
?> 
<!DOCTYPE html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <title>Lab 05 - Home</title> 
     <link rel="stylesheet" type="text/css" href="Styles/main.css" /> 
    </head>  
    <body> 
     <div id="Wrapper"> 
      <header> 
       <h1>Contacts</h1> 
      </header> 
      <div id="MainContent"> 
       <img id="bg" alt="Background" src="Images/Ring.png" /> 
       <?php 

        foreach ($contacts as $BusinessWithContact) { 
         echo $contacts->Contact->FirstName; 
        } 

       ?> 
      </div> 
      <nav> 
       <a id="HomeLink" href="index.php"><img alt="Home Image" src="Images/Home.png" /></a> 
       <a id="CreateLink" href="create.php"><img alt="Create Image" src="Images/Create.png" /></a> 
       <a id="ReadLink" href="read.php"><img alt="Read Image" src="Images/Read.png" /></a> 
       <a id="UpdateLink" href="update.php"><img alt="Update Image" src="Images/Update.png" /></a> 
       <a id="DeleteLink" href="delete.php"><img alt="Delete Image" src="Images/Delete.png" /></a> 
      </nav> 
     </div> 
    </body> 
</html> 

這裏的 「Classes.php」:

<?php 
    class Business { 
     public $BusinessID; 
     public $BusinessName; 
     public $BusinessPhone; 
     public $BusinessEmail; 
     public $Website; 
     public $Address; 
     public $City; 
     public $Province; 
     public $PostalCode; 
     public $Notes; 

     public function __construct($id, $name, $phone, $email, $website, $address, $city, $province, $postalCode, $notes) { 
      $this->BusinessID = $id; 
      $this->BusinessName = $name; 
      $this->BusinessPhone = $phone; 
      $this->BusinessEmail = $email; 
      $this->Website = $website; 
      $this->Address = $address; 
      $this->City = $city; 
      $this->Province = $province; 
      $this->PostalCode = $postalCode; 
      $this->Notes = $notes; 
     } 
    } 

    class ContactPerson { 
     public $BusinessID; 
     public $ContactID; 
     public $FirstName; 
     public $LastName; 
     public $DefaultContact; 
     public $Email; 
     public $WorkPhone; 
     public $CellPhone; 
     public $Notes; 

     public function __construct ($bid, $cid, $fName, $lName, $dContact, $email, $wPhone, $cPhone, $notes) { 
      $this->BusinessID = $bid; 
      $this->ContactID = $cid; 
      $this->FirstName = $fName; 
      $this->LastName = $lName; 
      $this->Email = $email; 
      $this->WorkPhone = $wPhone; 
      $this->CellPhone = $cPhone; 
      $this->Notes = $notes; 
     } 
    } 

    class BusinessWithContact { 
     public $Business; 
     public $Contact; 

     public function __construct(Business $business, ContactPerson $contact) { 

      $this->Business = $business; 
      $this->Contact = $contact; 
     } 
    } 
?> 

最後, 「utils.php中」:

<?php 
    function listBusinessesWithDefaultContact() { 
     $result = array(); 

     $connection = mysql_connect('[connection]', '[user]', '[pass]') or die (mysql_error()); 
     mysql_select_db('[db]') or die (mysql_error()); 

     $dbResult = mysql_query("select * from Business") or die (mysql_error()); 

     while ($row = mysql_fetch_array($dbResult)) { 
      $business = new Business($row['BusinessID'], $row['BusinessName'], $row['BusinessPhone'], $row['BusinessEmail'], $row['Website'], $row['Address'], $row['City'], $row['Province'], $row['PostalCode'], $row['Notes']) or die(); 

      $queryString = "select * from ContactPerson where BusinessID = " . $row['BusinessID'] . " and DefaultContact = 1";   
      $contactResult = mysql_query($queryString) or die(mysql_error()); 

      while ($newRow = mysql_fetch_array($contactResult)) { 
       $contact = new ContactPerson($newRow['BusinessID'], $newRow['ContactPersonID'], $newRow['FirstName'], $newRow['LastName'], $newRow['DefaultContact'], $newRow['Email'], $newRow['WorkPhone'], $newRow['CellPhone'], $newRow['Notes']) or die(); 
      } 

      array_push($result, new BusinessWithContact($business, $contact) or die()); 
     } 

     return $result; 
    } 

    function getContact($contactID) { 
     $result; 

     $connection = mysql_connect('[connection]', '[user]', '[pass]') or die (mysql_error()); 
     mysql_select_db('[db]') or die (mysql_error()); 

     $dbResult = mysql_query("select * from Contacts where ContactID = $contactID"); 

     while ($row = mysql_fetch_array($dbResult)) { 
      $result = new Contact($row['ContactID'], $row['Name'], $row['Phone'], $row['Email'], $row['Website'], $row['ContactFirstName'], $row['ContactLastName'], $row['Address'], $row['City'], $row['Province'], $row['Postal']); 
     } 

     return $result; 
    } 

    function addContact(Contact $item) { 
     $result; 

     $connection = mysql_connect('localhost', 'jschaible1', 'dragunov'); 
     mysql_select_db('jschaible1'); 

     $result = mysql_query("insert into Contact values($item->Name, $item->Phone, $item->Email, $item->Website, $item->ContactFirstName, $item->ContactLastName, $item->Address, $item->City, $item->Province, $item->Postal)");  

     return $result; 
    } 

    function updateContact(Contact $item) { 
     $result; 

     $connection = mysql_connect('[connection]', '[user]', '[pass]') or die (mysql_error()); 
     mysql_select_db('[db]') or die (mysql_error()); 

     $result = mysql_query("update Contact values set Name = $item->Name, Phone = $item->Phone, Email = $item->Email, Website = $item->Website, ContactFirstName = $item->ContactFirstName, ContactLastName = $item->ContactLastName, Address = $item->Address, City = $item->City, Province = $item->Province, Postal = $item->Postal");   

     return $result; 
    } 

    function deleteContact(Contact $item) { 
     $result; 

     $connection = mysql_connect('[connection]', '[user]', '[pass]') or die (mysql_error()); 
     mysql_select_db('[db]') or die (mysql_error()); 

     $result = mysql_query("delete from Contact where ContactID = $item->ContactID");   

     return $result; 
    } 
?> 

編輯:對不起,澄清,我的錯誤m到處是「試圖讓非對象的財產」

+2

請澄清你的問題 – bogatyrjov

+0

你會得到什麼錯誤? – Ruben

+0

你有什麼錯誤嗎?請在這裏發佈。沒有人會通過你的所有代碼來猜測它出了什麼問題。 –

回答

0

foreach ($contacts as $BusinessWithContact) { 
    echo $contacts->Contact->FirstName; 
} 

您正在使用$contacts->Contact->FirstName而不是$BusinessWithContact->Contact->FirstNameContact可能不是$contacts的上下文中的對象。

0

很顯然,如果我在utils.php中改變

array_push($result, new BusinessWithContact($business, $contact) or die()); 

文件到

$item = new BusinessWithContact($business, $contact); 
array_push($result, $item) or die(); 

它的工作原理。我不確定爲什麼,這兩個應該是相同的,不是嗎?