Корпоративный сайт Главного федерального инспектора по УР

Обоснование целесообразности разработки системы для сайта главного федерального инспектора Башкортостана. Функциональное назначение системы. Подключение системы к базе данных и корректное выполнение запросов к базе, с помощью которых строится интерфейс.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 07.07.2012
Размер файла 2,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

else {$this->ERROR=true;$this->ERROR_STR.=» [restoreValue]:значение колонки '».$key. «' не может быть равно '».$value. «' так как тип данных».$meta_info[$i] [«data_type»].». <br>»;}

}

} elseif ($this->is_type («char»,$meta_info[$i] [«data_type»]) || $this->is_type («text»,$meta_info[$i] [«data_type»])) {

if ($value==»») {

if ($meta_info[$i] [«column_default»]==»») {

if ($meta_info[$i] [«is_nullable»]== «NO») {$this->ERROR.=true;$this->ERROR_STR=» [restoreValue]:колонка '».$key. «' должна иметь значение типа».$meta_info[$i] [«data_type»].» не нулевое. <br>»;

} else {$this->dataArray [$key_data] [$key] = «null»;}

} else {$this->dataArray [$key_data] [$key] = $meta_info[$i] [«column_default»];}

} else {

if (is_string($value)) {$this->dataArray [$key_data] [$key] = «'».$this->string_encode($value). «'»;}

else {$this->ERROR=true;$this->ERROR_STR.=» [restoreValue]:значение колонки '».$key. «' не может быть равно '».$value. «' так как тип данных».$meta_info[$i] [«data_type»].». <br>»;}

}

} elseif ($this->is_type («date»,$meta_info[$i] [«data_type»]) || $this->is_type («times»,$meta_info[$i] [«data_type»])) {

if ($value==»») {

if ($meta_info[$i] [«column_default»]==»») {

if ($meta_info[$i] [«is_nullable»]== «NO») {$this->ERROR.=true;$this->ERROR_STR=» [restoreValue]:колонка '».$key. «' должна иметь значение типа».$meta_info[$i] [«data_type»].» не нулевое. <br>»;

} else {$this->dataArray [$key_data] [$key] = «null»;}

} else {$this->dataArray [$key_data] [$key] = $meta_info[$i] [«column_default»];}

} else {

if (@date («Y-m-d», strtotime($value))==$value) {

$this->dataArray [$key_data] [$key] = «'».$this->string_encode($value). «'»;

} else {

$this->ERROR=true;$this->ERROR_STR.=» [restoreValue]:значение колонки '».$key. «' не может быть равно '».$value. «' так как тип данных».$meta_info[$i] [«data_type»].» (Y-m-d). <br>»;

}

}

}

}

}; if(!$flag) {$this->ERROR=true;$this->ERROR_STR.=» [restoreValue]:колонка '».$key. «' не найдена.<br>»;}

}

}

private function is_type ($type,$str) {if (sizeof (explode ($type,$str))>1) {return true;} else {return false;}}

private function string_encode($str) {$str = htmlspecialchars ($str, ENT_QUOTES); return $str;}

// - RETURN ANSWER-

private function getQuery() {

$this->check();

$this->checker = true;

$answer = «»;

Switch ($this->direction) {

case «SELECT»:

$answer = $this->direction.$this->constructDistinct().implode (»,»,$this->dataArray [«select»]).» FROM».implode (»,»,$this->dataArray [«table»]).$this->constructJoin().$this->constructWhere().$this->constructAscOrderBy().$this->constructDescOrderBy();

break;

case «UPDATE»:

$answer = $this->direction.implode (»,»,$this->dataArray [«table»]).$this->constructSet().$this->constructWhere().$this->constructAscOrderBy().$this->constructDescOrderBy();

break;

case «INSERT INTO»:

$answer = $this->direction.implode (»,»,$this->dataArray [«table»]).$this->constructColumns().$this->constructValues();

break;

case «DELETE»:

$answer = $this->direction. «FROM».implode (»,»,$this->dataArray [«table»]).$this->constructWhere();

break;

default:

$this->ERROR=true;$this->ERROR_STR.= «[getQuery]:не определено направление [select||update||insert] <br>»;

break;

}; return $answer;

}

private function getUsingColumn() {return array_unique ($this->queryColumn);}

public function getTextSQL() {return $this->getQuery();}

// - SEND-

public function errorHandler() {$this->dataArray['errorHandler'] = func_get_args(); return $this;}

public function perform() {

$query = $this->getQuery();

if (!$this->ERROR) {

if ($query!=»») {

if ($this->cache) {

$md5_name = md5 ($query.$_ENV['config'] ['system_password']);

$filename = $_ENV['config'] ['cache_query_dir'].$md5_name.».txt»;

if ($handler=@fopen ($filename, 'r')) {

$this->ans = $_ENV['ext']->getCacheArray(&$handler);

} else {

$this->ans = $_ENV['db']->send_query($query);

$_ENV['ext']->cacheArray ($this->ans,$filename);

}

} else {

$this->ans = @$_ENV['db']->send_query($query);

}

if ($this->ans) {foreach ($this->ans[0] as $key=>$value) {$this->alias ($key,$key);}}

} else {

$this->ERROR=true;$this->ERROR_STR.= «[send]:запрос пуст <br>»;

}

}; return $this;

}

public function copy(&$tmp) {$tmp = $this->ans; return $this;}

public function error (&$flag,&$error,$jxNotice=false) {

if (!$this->checker) {$this->check();}

if ($this->ERROR) {

$flag = true;

$error= «<div style='font-family: Verdana; font-size:8pt; padding:5px; border:1px solid #cccccc; background:#efefef; width:400px; color:#777777;'>».$this->ERROR_STR. «</div>»;

if($jxNotice) {

$_ENV['ajax']->jxCode («alert (\"».str_replace («<br>», «\r\n»,$this->ERROR_STR). «\»);»);

}

} else {$flag = false;}; return $this;}

public function cache() {$this->cache=true; return $this;}

public function group($key) {

if (!$this->ERROR) {

$array = func_get_args();

if ($this->sort_deptch==0) {$this->ans=$this->grouper ($this->ans,$key,$array);}

else {$this->ans=$this->grouper2 ($this->ans,$key,$array, 0);};

$this->sort_deptch++;

}; return $this;

}

private function grouper2 ($arrays,$key,$array,$deptch) {// - group in deptch-

for ($i=0;$i<sizeof($arrays);$i++) {

if ($deptch==$this->sort_deptch-1) {$arrays[$i] [«group»] = $this->grouper ($arrays[$i] [«group»],$key,$array);}

else {$b=$deptch+1;$arrays[$i] [«group»]=$this->grouper2 ($arrays[$i] [«group»],$key,$array,$b);}

}; return $arrays;

}

private function grouper ($arrays,$key,$array) {// - group local array-

$dop = array(); for ($i=2;$i<sizeof($array);$i++) {$dop[] = $array[$i];}

$uniq_key = array();$uniq_key2 = array();

for ($i=0;$i<sizeof($arrays);$i++) {foreach ($arrays[$i] as $tmp_key=>$tmp_value) {if ($tmp_key==$key) {$uniq_key[]=$tmp_value;}}}

$uniq_key = array_unique ($uniq_key);

foreach ($uniq_key as $tmp_key => $value) {$uniq_key2 []=$value;};$uniq_key = $uniq_key2;

$uniq_key2 = array();

for ($i=0;$i<sizeof ($uniq_key);$i++) {

$uniq_key2 [$i] [«meta»] [$key] = $uniq_key[$i];

for ($j=0;$j<sizeof($arrays);$j++) {

if ($arrays[$j] [$key]==$uniq_key[$i]) {

$uniq_key2 [$i] [«group»][] = $arrays[$j];

if (sizeof ($uniq_key2 [$i] [«group»])==1) {

for ($g=0;$g<sizeof($dop);$g++) {$uniq_key2 [$i] [«meta»] [$dop[$g]] = $arrays[$j] [$dop[$g]];}

}

}

}

}; return $uniq_key2;

}

public function alias() {$arg=func_get_args(); for ($i=0;$i<sizeof($arg);$i+=2) {$this->alias_ar [$arg[$i]]=$arg [$i+1];}; return $this;}

public function createXML() {

if (!$this->ERROR) {

$arg = func_get_args();$this->inner_tag_name = $arg[0];

$this->use_xml_tag = array();

for ($i=1;$i<sizeof($arg);$i++) {$this->use_xml_tag[]=$arg[$i];}

$this->dom = new DOMDocument ('1.0', 'UTF-8');

$this->root = $this->dom->createElement('dbQuery');

$this->dom->appendChild ($this->root);

$this->recursiveXML ($this->ans,$this->root);

$this->ans = $this->dom->saveXML();

}; return $this;

}

private function recursiveXML ($array,&$ref_parent) {

for ($i=0;$i<sizeof($array);$i++) {

if (is_array ($array[$i] [«meta»]) || is_array ($array[$i] [«group»])) {

$counter_foreach = 0;$arg = array();

foreach ($array[$i] [«meta»] as $key => $value) {

if ($counter_foreach==0) {$tag_name=$this->alias_ar[$key];$arg[]=$key;$arg[]=$value;} else {$arg[]=$key;$arg[]=$value;}

$counter_foreach++;

}

$tmp = $this->addTag ($tag_name, «»,$arg);$ref_parent->appendChild($tmp);

if (sizeof ($array[$i] [«group»])!=0) {$this->recursiveXML ($array[$i] [«group»],$tmp);}

} else {

$arg = array();

for ($j=0;$j<sizeof ($this->use_xml_tag);$j++) {

foreach ($array[$i] as $key => $value) {if ($this->use_xml_tag[$j]==$key) {$arg[]=$key;$arg[]=$value; break;}}

};$tmp=$this->addTag ($this->inner_tag_name, «»,$arg);$ref_parent->appendChild($tmp);

}

}

}

private function addTag ($tag_name,$value) {

$jx = $this->dom->createElement ($tag_name,$value);

$args = func_get_args();

if (sizeof ($args[2])!=0) {

$args = $args[2];

for ($i=0;$i<sizeof($args);$i+=2) {

if ($this->alias_ar [$args[$i]]!=»») {$atr = $this->alias_ar [$args[$i]];}

else {$atr = $args[$i];}

$id_att= $this->dom->createAttribute($atr);

$jx_id = $this->dom->createTextNode ($args [$i+1]);

$id_att->appendChild ($jx_id);

$jx->appendChild ($id_att);

}

}; return $jx;

}

}

class postgreSQL {

function __construct() {

$this->hostname = $_ENV['config'] ['db_hostname'];

$this->database = $_ENV['config'] ['db_database'];

$this->username = $_ENV['config'] ['db_username'];

$this->password = $_ENV['config'] ['db_password'];

$this->port = $_ENV['config'] ['db_port'];

$this->link = pg_connect («host=$this->hostname port=$this->port dbname=$this->database user=$this->username password=$this->password») or $this->access=false;

}

public function send_query($query) {

$args=func_get_args();

$result = pg_query ($this->link,$query);

if($result) {

$ar = array();

$row_counter = 0;

while ($row = pg_fetch_assoc($result)) {

$counter = 0;

foreach ($row as $key => $value) {

$ar [$row_counter] [$key]=htmlspecialchars_decode ($value, ENT_QUOTES);

$counter++;

}

$row_counter++;

};

switch ($args[1]) {

case «row»:return $ar [$args[2]]; break;

default:return $ar; break;

}

} else {return false;}

}

public function dataQuery() {return new dataQuery($ans);}

public function convertKeyToIndex($ans) {

$ar=array();

for ($i=0;$i<sizeof($ans);$i++) {$ar[$i]=array(); foreach ($ans[$i] as $key => $value) {$ar[$i][]=$value;}}

return $ar;

}

}

$_ENV['db'] = new postgreSQL();

?>

CREATE TABLE public.audio (

id_audio serial NOT NULL,

title text NOT NULL,

«text» text,

audio_file varchar(255) NOT NULL,

date_add date NOT NULL,

/* Keys */

CONSTRAINT audio_pkey

PRIMARY KEY (id_audio),

CONSTRAINT audio_audio_file_key

UNIQUE (audio_file)

) WITH (

OIDS = FALSE

);

ALTER TABLE public.audio

OWNER TO postgres;

CREATE TABLE public.block (

id_block serial NOT NULL,

id_page integer NOT NULL,

id_city integer,

block_position integer,

block_title text NOT NULL,

block_content text NOT NULL,

/* Keys */

CONSTRAINT block_pkey

PRIMARY KEY (id_block),

/* Checks */

CONSTRAINT block_block_content_check

CHECK (block_content <> «:text),

CONSTRAINT block_block_title_check

CHECK (block_title <> «:text),

/* Foreign keys */

CONSTRAINT block_id_city_fkey

FOREIGN KEY (id_city)

REFERENCES public.city (id_city)

ON DELETE SET NULL

ON UPDATE CASCADE

) WITH (

OIDS = FALSE

);

CREATE TRIGGER block_fts

AFTER INSERT OR UPDATE

ON public.block

FOR EACH ROW

EXECUTE PROCEDURE public.block_fts();

CREATE TRIGGER check_block_bit

AFTER INSERT OR DELETE

ON public.block

FOR EACH ROW

EXECUTE PROCEDURE public.trg_check_block_bit();

ALTER TABLE public.block

OWNER TO postgres;

CREATE TABLE public.block_fts (

id_block integer NOT NULL,

block_fts tsvector,

/* Keys */

CONSTRAINT block_fts_pkey

PRIMARY KEY (id_block),

/* Foreign keys */

CONSTRAINT block_fts_id_block_fkey

FOREIGN KEY (id_block)

REFERENCES public.block (id_block)

ON DELETE CASCADE

ON UPDATE CASCADE

) WITH (

OIDS = FALSE

);

ALTER TABLE public.block_fts

OWNER TO postgres;

CREATE TABLE public.block_image (

id_block_image serial NOT NULL,

id_block integer NOT NULL,

file text NOT NULL,

/* Keys */

CONSTRAINT block_image_pkey

PRIMARY KEY (id_block_image),

CONSTRAINT block_image_file_key

UNIQUE (file),

/* Checks */

CONSTRAINT block_image_file_check

CHECK (file <> «:text),

/* Foreign keys */

CONSTRAINT block_image_id_block_fkey

FOREIGN KEY (id_block)

REFERENCES public.block (id_block)

ON DELETE CASCADE

ON UPDATE CASCADE

) WITH (

OIDS = FALSE

);

ALTER TABLE public.block_image

OWNER TO postgres;

CREATE TABLE public.city (

id_city serial NOT NULL,

city_name varchar NOT NULL,

city_yes bit(1) NOT NULL DEFAULT B'0': «bit»,

/* Keys */

CONSTRAINT city_pkey

PRIMARY KEY (id_city),

/* Checks */

CONSTRAINT city_city_name_check

CHECK ((city_name):text <> «:text)

) WITH (

OIDS = FALSE

);

ALTER TABLE public.city

OWNER TO postgres;

CREATE TABLE public.gallery (

id_gallery serial NOT NULL,

id_gallery_album integer NOT NULL,

gallery_file text NOT NULL,

ru_about text,

/* Keys */

CONSTRAINT gallery_pkey

PRIMARY KEY (id_gallery),

CONSTRAINT gallery_gallery_file_key

UNIQUE (gallery_file),

/* Checks */

CONSTRAINT gallery_gallery_file_check

CHECK (gallery_file <> «:text),

/* Foreign keys */

CONSTRAINT gallery_id_gallery_album_fkey

FOREIGN KEY (id_gallery_album)

REFERENCES public.gallery_album (id_gallery_album)

ON DELETE CASCADE

ON UPDATE CASCADE

) WITH (

OIDS = FALSE

);

ALTER TABLE public.gallery

OWNER TO postgres;

CREATE TABLE public.gallery_album (

id_gallery_album serial NOT NULL,

gallery_album_file text NOT NULL,

gallery_album_text text NOT NULL,

gallery_album_date_add date NOT NULL DEFAULT (now()):date,

/* Keys */

CONSTRAINT gallery_album_pkey

PRIMARY KEY (id_gallery_album),

CONSTRAINT gallery_album_gallery_album_file_key

UNIQUE (gallery_album_file)

END

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.