Корпоративный сайт Главного федерального инспектора по УР
Обоснование целесообразности разработки системы для сайта главного федерального инспектора Башкортостана. Функциональное назначение системы. Подключение системы к базе данных и корректное выполнение запросов к базе, с помощью которых строится интерфейс.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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
Подобные документы
Основные технические решения проекта создания информационной системы целью оповещение населения актуальной информации (новости, указы, законы). Описание алгоритма обработки запросов, добавления и удаления информации в базу данных, ее обновление.
дипломная работа [3,9 M], добавлен 06.04.2013Разработка и программная реализация сайта и базы данных, наполнение базы данных тестовой информацией о товарах. Инструментальные средства создания сайта. Организация тестирования сайта, модуль визуализации интерфейса. Создание запросов в базе данных SQL.
курсовая работа [1,4 M], добавлен 24.12.2012Эффективность web-сайта в процессе развития компании, этапы его проектирования. Средства для создания web-сайтов. Разработка web-сайта для праздничного агентства "Креатив", его структура и функциональные возможности. Создание главного меню и галереи.
курсовая работа [919,8 K], добавлен 20.01.2016Функциональное назначение, обоснование необходимости WEB-сайта, технические требования. Структурная схема системы, выбор языка программирования и программных средств. Перенос сайта на хостинг, регистрация на поисковиках. Тестирование на кроссбраузерность.
дипломная работа [4,9 M], добавлен 18.12.2011Применение языков программирования для создания Web-приложений. Расчет трудоемкости и затрат на разработку информационной системы. Разработка концептуальной модели, структуры и интерфейса. Размещение сайта на хостинге, регистрация в поисковых системах.
дипломная работа [1,4 M], добавлен 13.06.2015- Разработка информационной системы предприятия с помощью системы управления базами данных Access 2007
Проектирование структуры базы данных предприятия с помощью СУБД Access. Установка связей между таблицами и ввод в них данных. Создание форм к базе данных, фильтрация запросов, просмотр отчетов. Получение комплексного отчета после группировки и сортировки.
лабораторная работа [787,7 K], добавлен 22.11.2014 Особенности разработки модуля взаимодействия и приложений для мобильных устройств на базе Windows Mobile. Основные компоненты системы. Выбор протокола XMPP. Создание базы данных, тестирование и отладка системы. Программа, моделирующая аварийные ситуации.
курсовая работа [1,2 M], добавлен 05.11.2012Создание автоматизированной системы хранения и обработки данных, обеспечивающей хранение всех сведений о персонале. Структура таблиц, запросов, отчетов и форм. Инструкция пользователя. Отладка и экономическое обоснование программного продукта.
дипломная работа [5,5 M], добавлен 07.05.2012Создание системы управления данными для информационной системы ВУЗа с помощью MS Access. Разработка таблиц и схемы базы данных, запросов в MS SQL Server, основных форм и отчетов. Организация формы главного меню для автоматического вызова объектов БД.
курсовая работа [3,0 M], добавлен 09.04.2012Анализ предметной области, сущностей и связей между ними. Составление требуемых запросов к базе данных. Анализ разрешений и запретов на операции с табличными данными для различных пользователей. Проектирование пользовательского интерфейса системы.
курсовая работа [2,2 M], добавлен 13.10.2022