Программирование >>  Создание клиентов mysql 

1 ... 169 170 171 [ 172 ] 173 174 175 ... 201


Объектно-реляционные связи 531

CREATE TABLE Building (

ID INT NOT NULL AUTO INCREMESIT, Name CHAR(32) NOT NULL, PRIMARY KEY(ID)

CREATE TABLE Room (

ID INT NOT NULL AUTO INCREMENT, Building INT NOT NULL, Name CHAR(32) NOT NULL, PRIMARY KEY(ID),

FOREIGN KEY (Building) REFERENCES Building (ID)

В листинге 30.4 демонстрируется реализация классов Building и Room на PHP с использованием методов, обеспечивающих постоянство объектов. Чтобы пример стал немного короче, я не включил в него код проверки ошибок, возникающих при подключении к базе данных. Естественно, в реальном приложении такой код необходим.

<?php

class Building {

var $name; var $room;

var $id; var $dbLink,-

function Building($dbLink, $id=0) {

$this->dbLink = $dbLink; $tMs->id = $id; $this->room = array();

если задан идентификатор, загружаем объект

if($this->id)

$this->sqlGet О;

function {

if($this->id <= 0) {

return(FALSE);

извлечение даннтх из таблицы Building




$ Que г у = SELECT Name .

FROM Building .

WHERE ID = $this->id ; $dbResult = mysql query($Query, $this->dbLink); $row = mysql fetch row($dbResult); $this->name = $rowl01;

создание массива комнат $this->room = array(); $Query = SELECT ID .

FROM Room .

WHERE Building = $this->id ; $dbResult = mysql query($Query, $this->dbLink); while($row = mysql fetch row($dbResult))

$this->room[] = new Room($this->dbLink, $row[0])

function sqlPutO {

global $dbLink; if($this->id <= 0)

создание новой записи в таблице Building $Query = INSERT INTO Building (Name) .

VALUES ( . $tMs->name . ) ; $dbResult = mysql query($Query, $this->dbLink); $tMs->id = mysql insert id () ;

занесение в базу данных массива комнат for($r=0; $г < count($this->room); $r++) {

$this->room[$r]->building = $this->id; $this->room[$ri->sqlPut{);

else

обновление существующей записи $Query = UPDATE Building .

SET Name = . $this->name . ,

WHERE ID = $this->id ; $dbResult = mysql query($Query, $this->dbLink);

обновление массива комнат for($r=0; $r < count($this->room); $r++) {

$this->room[$r]->sqlPut();

function sqlDeleteO {

удаление всех объектов комнат



Объектно-реляционные связи 533

for($r=0; $ his->room) ; $r++)

$this->roorti[$r]->sqlDelete() ;

удаление объекта здания

$Query = DELETE EROM Building .

WHERE ID = $this->id ; $dbResult = mysql query($Query, $this->dbLink);

$tMs->id = 0;

class Room

var $building; var $name; , var $id; var $dbLink;

function Room($dbLink, $id=0) {

$this->dbLink = $dbLink; $tMs->id = $id;

если задан идентификатор, загружаем объект if($id)

$this->sqlGet() ;

function sqlGetO {

return(FALSE);

извлечение данных из таблицы Room $Query = SELECT Building, Name .

EROM Room .

WHERE ID = $this->id ; $dbResult = mysql query($Query, $this->dbLink) ; $row = mysql fetch row ($dbResult) ; $this->building = $row[0]; $this->name = $row[l];

function sqlPutO {

if($this->building <= 0) {

return(FALSE);

if 0)



1 ... 169 170 171 [ 172 ] 173 174 175 ... 201

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика