Разработка автоматизированной системы учета пластиковых карт

Информационное обеспечение задачи автоматизации учета. Программное обеспечение задачи автоматизации учета. Расчет технико-экономической эффективности программного продукта по учету пластиковых карт. Расчет затрат на разработку программного модуля.

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

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

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

2) огнетушитель углекислотный ОУ-2: предназначен для тушения любых материалов, предметов и веществ, а также электроустановок, находящихся под напряжением до 1 000 В, применяется для тушения ПЭВМ и оргтехники;

3) огнетушитель порошковый ОП-2: предназначен для тушения твердых, жидких, газообразных веществ и электроустановок, находящихся под напряжением до 1 000 В, применяется для тушения ПЭВМ и оргтехники. Согласно нормам оснащения помещений ручными огнетушителями помещений категории В для класса пожаров А, В, Е на предельно защищаемой площади 200 м2 рекомендуется один порошковый огнетушитель вместимостью 10 литров, допускается 2 по 5 литров. Порошковые огнетушители предназначены для тушения твердых, жидких, газообразных веществ и электроустановок, находящихся под напряжением до 1000 В, применяются для тушения ПЭВМ и оргтехники.

- применением автоматических установок пожарной сигнализации и пожаротушения, в нашем случае применяется пожарная сигнализация, которая включается при повышении задымленности и температуре (НПБ 110-03 "Перечень зданий, сооружений, помещений и оборудования, подлежащих защите автоматическими установками пожаротушения и автоматической пожарной сигнализацией").

- применением основных строительных конструкций с регламентируемыми пределами огнестойкости и пределами распространения огня - II (СНиП 2.01.02-85 «Противопожарные нормы»);

Здание пятиэтажное. Высота здания 24 метра. Здание относится к категории В, т.о степень огнестойкости - III.

Таблица 4.9

пожарная безопасность зданий и сооружений

Степень огне- стойкости здания

Предел огнестойкости строительных конструкций, не менее

Несущие элементы здания

Наружные ненесущие стены

Перекрытия между-этажные, (в т.ч. чердачные и над

подвалами)

Элементы бесчердачных покрытий

Лестничные клетки

Настилы (в том числе с утепли- телем)

Фермы, балки, прогоны

Внутрен ние стены

Мерши и площа-дки лестниц

III

R 45

Е15

REI 45

RE15

R15

REI 60

R 45

Таблица 4.10

Конструктивные характеристики зданий в зависимости от их степени огнестойкости.

Степень огнестойкости

Конструктивные характеристики

III

Здания с несущими и ограждающими конструкциями из естественных или искусственных каменных материалов, бетона или железобетона. Для перекрытий допускается использование деревянных конструкций, защищенных штукатуркой или трудногорючими листовыми, а также плитными материалами. К элементам покрытий не предъявляются требования по пределам огнестойкости и пределам распространения огня, при этом элементы чердачного покрытия из древесины подвергаются огнезащитной обработке

- организацией с помощью технических средств, включая автоматические, своевременного оповещения и эвакуации людей (в соответствии с НПБ 104-03 “Проектирование систем оповещения людей о пожаре в зданиях и сооружениях”) используется СОУЭ 2 типа (Учреждения, проектно-конструкторские организации, НИИ, информационные центры и другие административные здания до 6 этажей).

В соответствии со 2 типом СОУЭ в здании требуется звуковой способ оповещения (сирена, тонированный сигнал), статические оповещатели «Выход», а также допускается использование световых мигающих указателей и статических указателей направления движения.

Для обеспечения эвакуации:

- предусмотрены 4 эвакуационных выхода, высота эвакуационных выходов - 1,9 м, ширина - 2 м (согласно СНиП 21-01-97 “Пожарная безопасность зданий и сооружений”)

- предусмотрены световые указатели и звуковое оповещение во все помещения здания, размещены эвакуационные знаки безопасности, включено эвакуационное освещение.

Организационно-технические мероприятия включают:

- организацию пожарной охраны;

- паспортизацию изделий, зданий и сооружений объектов в части обеспечения пожарной безопасности;

- организацию обучения работающих правилам пожарной безопасности на производстве,

- разработку инструкций о порядке обращения с пожароопасными веществами и материалами, о соблюдении противопожарного режима и действиях людей при возникновении пожара.

Организация рабочего места

Рабочее место, на котором используется ПЭВМ, должно соответствовать требованиям СанПин 2.2.2/2.4.1340-03 “Гигиенические требования к персональным электронно-вычислительным машинам и организации работы" должно отвечать следующим условиям:

- Площадь на одно рабочее место пользователей ПЭВМ с ВДТ на базе плоских дискретных экранов (жидкокристаллические, плазменные) - 4,5 м2.

- При размещении рабочих мест с ПЭВМ расстояние между рабочими столами с видеомониторами (в направлении тыла поверхности одного видеомонитора и экрана другого видеомонитора), должно быть не менее 2,0 м, а расстояние между боковыми поверхностями видеомониторов не менее 1,2 м.

- Рабочие места с ПЭВМ в помещениях с источниками вредных производственных факторов должны размещаться в изолированных кабинах с организованным воздухообменом.

- Рабочие места с ПЭВМ при выполнении творческой работы, требующей значительного умственного напряжения или высокой концентрации внимания, рекомендуется изолировать друг от друга перегородками 1,5 - 2,0 м.

- Экран видеомонитора должен находиться от глаз пользователя на расстоянии 600-700 мм, но не ближе 500 мм с учетом размеров алфавитно- цифровых знаков и символов.

- Конструкция рабочего стола должна обеспечивать оптимальное размещение на рабочей поверхности используемого оборудования с учетом его количества и конструктивных особенностей, характера выполняемой работы.

При этом допускается использование рабочих столов различных конструкций, отвечающих современным требованиям эргономики. Поверхность рабочего стола должна иметь коэффициент отражения 0,5 - 0,7.

- Конструкция рабочего стула (кресла) должна обеспечивать поддержание рациональной рабочей позы при работе на ПЭВМ, позволять изменять позу с целью снижения статического напряжения мышц шейно- плечевой области и спины для предупреждения развития утомления. Тип рабочего стула (кресла) следует выбирать с учетом роста пользователя, характера и продолжительности работы с ПЭВМ.

- Рабочий стул (кресло) должен быть подъемно-поворотным, регулируемым по высоте и углам наклона сиденья и спинки, а также расстоянию спинки от переднего края сиденья, при этом регулировка каждого параметра должна быть независимой, легко осуществляемой и иметь надежную фиксацию.

- Поверхность сиденья, спинки и других элементов стула (кресла) должна быть полумягкой, с нескользящим, слабо электризующимся и воздухопроницаемым покрытием, обеспечивающим легкую очистку от загрязнений.

- Высота рабочей поверхности стола для взрослых пользователей должна регулироваться в пределах 680-800 мм, при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм.

- Рабочий стол должен иметь пространство для ног высотой не менее 600 мм, шириной - не менее 500 мм, глубиной на уровне колен - не менее 450 мм и на уровне вытянутых ног - не менее 650 мм.

Конструкция рабочего стула должна обеспечивать:

- ширину и глубину поверхности сиденья не менее 400 мм;

- поверхность сиденья с закругленным передним краем;

- регулировку высоты поверхности сиденья в пределах 400 - 550 мм и углам наклона вперед до 15 град., и назад до 5 град.;

- высоту опорной поверхности спинки 300 +- 20 мм, ширину - не менее

380 мм и радиус кривизны горизонтальной плоскости - 400 мм;

- угол наклона спинки в вертикальной плоскости в пределах +- 30 градусов;

- регулировку расстояния спинки от переднего края сиденья в пределах 260 - 400 мм;

- стационарные или съемные подлокотники длиной не менее 250 мм и шириной 50 - 70 мм;

- регулировка подлокотников по высоте над сиденьем в пределах 230 +- 30 мм и внутреннего расстояния между подлокотниками в пределах 350 - 500 мм.

- Рабочее место пользователя ПЭВМ следует оборудовать подставкой для ног, имеющей ширину не менее 300 мм, глубину не менее 400 мм, регулировку по высоте в пределах до 150 мм и по углу наклона опорной поверхности подставки до 20 градусов. Поверхность подставки должна быть рифленой и иметь по переднему краю бортик высотой 10 мм.

- Клавиатуру следует располагать на поверхности стола на расстоянии 100 - 300 мм от края, обращенного к пользователю или на специальной, регулируемой по высоте рабочей поверхности, отделенной от основной.

Расчетная часть

Расчет уровня шума на рабочем месте

Задачей расчета уровня шума на рабочем месте является определение уровня звукового давления в расчётной точке.

В кабинете отдела разработки программного обеспечения находятся следующие постоянно работающие источники шума: 4 компьютера и 1 кондиционер.

Размеры помещения следующие: длина - 5,8 м, ширина - 3,2 м, высота - 3,5 м.

Октавные уровни звукового давления L, дБ, в расчетных точках соразмерного помещения с несколькими источниками шума, в соответствии с СНиП 23-03-2003 следует определять по формуле:

ж----m--c--F4n--ц--L--=--LР--_--+--1_--lgзз--е----i--i--+--B--чч--и--i=1--i--ш

m - количество источников шума, ближайших к расчетной точке, т.е источников, находящихся на расстоянии

ri--Ј--5ri--min,--где

rmin - расстояние от расчетной точки до акустического центра ближайшего к ней источника шума, м;

n - общее количество источников шума;

LР 0

- уровень звуковой мощности, создаваемый источником шума;

c--i - коэффициент для i-ого источника шума, учитывающий влияние ближнего поля и принимаемый в зависимости от отношения расстояния r, м между акустическим центром (АЦ) источника шума и расчётной точкой к максимальному габаритному размеру lmax, м, источника (при r >2 lmax c--=--1);

Fi - фактор направленности источника шума, определяемый по опытным данным, при равномерном излучении звука Ф = 1;

S - площадь воображаемой поверхности правильной геометрической формы, окружающей источник шума при равном удалении от его поверхности и проходящей через расчётную точку, м 2 ;

S =--W--r 2 i

где W - пространственный угол излучения, величина которого зависит от местоположения источника шума. поверхности пола, перекрытия, стены;

Условия излучения

?, рад.

10 lg ?, дБ

В пространство - источник на колонне в помещении, на мачте, трубе

4 р

11

В полупространство - источник на полу, на земле, на стене

2 р

8

В 1/4 пространства - источник в двухгранном углу (на полу близко от одной стены)

р

5

В 1/8 пространства - источник в трехгранном углу (на полу близко от двух стен)

р/2

2

B - постоянная помещения, м 2.

Постоянная помещения определяется по формуле:

B--=--S--огр--Чa

(1-----a--)--,--(6.4),

где

S огр - общая площадь ограждающих поверхностей, м 2 ; a----- средний коэффициент звукопоглощения в помещении (a--=--0,1 ).

В нашем случае

m = 3, n =4.

lmax =0,3 м,

r1 =--rmin = 0,6 м,

r2 = 2,1 м,

r3 = 2,9 м,

r4 = 3,8 м,

Уровень шума компьютера 40 дБ, принтера - 45 дБ.

LР1, 2,3, 4 = 40 дБ,

огр Чa

(1-----a--)--=--63--Ч--0,1

(1-----_,1)--+--37--Ч--_,5--(1-----_,5)--=--44м2

ж----m c--F4n ц

L =--LР 0

+--10 lgзз--е----i i +

B чч--------------=и--i=1--i--ш

ж--Ч--Ч--Ч--Ч--ц=--4_--+--1_--lgз--------3--1--+------1--1--+--------1--1--+--------1--1--+--16--ч----»--з--(2p--)r--21

(p--)r 2 2

(2p--)r 23

(2p--)r 2 4

44 ч42,6дБ

Полученное значение не превышает допустимый уровень шума для рабочего места оператора ЭВМ, равный 50 дБ ( СанПин 2.2.2/2.4.1340-03).

Заключение

Выпускная квалификационная работа посвящена разработке и внедрению автоматизированной системы учета пластиковых карт для филиала № 2657 банка ВТБ 24 (ЗАО) в г. Ставрополе.

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

Оборот карт в филиале увеличивается с каждым месяцем, т.к. помимо выдачи карт физическим лицам филиал активно заключает договоры по так называемым «зарплатным проектам». Среди уже обслуживаемых «зарплатников» числятся радиозавод «Сигнал» (2750 карт), ГУВД СК (1050 карт), ОАО «Автоколонна 1202» (3000 карт) и т.д. Всего в филиале на данный момент выдано порядка 12 000 именных и 30 000 безымянных карт, около 5000 находятся на хранении.

Учитывая постоянно возрастающий объем поступающего пластика, была разработана система, позволяющая работать с большим объем информации и с возможностью вести запись в несколько миллионов строк.

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

Список использованных литературных источников

1. Федеральный закон от 02.12.1990 N 395-1 (ред. от 05.04.2016) "О банках и банковской деятельности".

2. Федеральный закон от 27.07.2006 N 149-ФЗ (ред. от 13.07.2015) "Об информации, информационных технологиях и о защите информации" (с изм. и доп., вступ. в силу с 10.01.2016).

3. Дейт, К.Дж. Введение в системы баз данных, 6-е издание: Пер. с англ. К.; М.; Спб.: Издательский дом «Вильямс», 2015 г. 848 с.

4. Жеребенкова А.В. Документооборот на предприятии. М.: «Вершина», 2015 г. 384 с.

5. Керниган Б., Пайк Р. Практика программирования. Спб.: «Невский Диалект», 2011 г., 225 с.

6. Костюченко А.С., Корнев В.С. Автоматизация банковских бизнес- процессов. М.: «Компания Спутник+», 2013 г., 142 с.

7. Маклаков С.В. Моделирование бизнес-процессов с BP-Win 4.0 - М.: «Диалог-МИФИ», 2012 г., 224 с.

8. Мишенин А.И. Теория экономических информационных систем. М.: «Финансы и статистика», 2011 г., 240 с., ил.

9. Спольски Джоэл Х. Лучшие примеры разработки ПО. Спб.: «Питер», 2012 г., 208 с.

10 .Тавасиев А. М. Банковское дело. Управление и технологии: Учебник для вузов. М.: «Юнити-Дана», 2015 г., 671 с.

11 .Инструкция по предоставлению и обслуживанию банковских карт участникам «зарплатных проектов» №117 от 07.12.2007 г.

12 .Инструкция предоставлению и обслуживанию банковских карт для физических лиц №124 от 15.11.2015 г.

13 .Положение о Правлении ВТБ24 (ЗАО) от 10.10.2015.

14 .Положение о филиале №2657 банка ВТБ 24 (ЗАО) в г.Ставрополе №2657 от 01.12.2015 г.

15 .Положение об Отделе Обслуживания филиала №2657 банка ВТБ 24 (ЗАО) в г.Ставрополе № 555 от 16.07.2015 г.

16 .Порядок работы дополнительных офисов и филиалов с платежными картами № 1038 от 16.01.2015 г.

17 .Порядок транспортировки, учета, хранения и уничтожения банковских карт №1088 от 19.01.2015 г.

18 .Устав Банка ВТБ 24 (ЗАО) от 10.10.2014 г.

19. ABS-Online - независимый портал об автоматизированных банковских системах www.absonline.ru.

20. Cnews - издание о высоких технологиях www.cnews.ru 21.DOC-Online - независимый портал о СЭД www.doc-online.ru 22.IT-портал www.citforum.ru.

23.Информационный портал MySQL www.mysql.ru 24.Информационный портал PHP www.php.ru 25.Официальный сайт Microsoft www.microsoft.com 26.Официальный сайт банка ВТБ24 (ЗАО) www.vtb24.ru 27.Портал о работе с Apache www.apachedev.ru 28.Словарь по экономике и финансам www.glossary.ru 29.Фирма 1С www.v8.1c.ru.

30.Свободная энциклопедия Википедия www.wikipedia.org

31. Фирма «Банковские информационные технологии» www.bis.ru.

Приложения

Приложение А

Размещено на http://www.allbest.ru/

Рисунок 15 Общий алгоритм работы программы

Приложение Б

Размещено на http://www.allbest.ru/

Рисунок 16 Работа подпрограммы поиска

Приложение В

Размещено на http://www.allbest.ru/

Рисунок 17 Работа подпрограммы редактирования записи

Приложение Г

Приложение № 13 «Журнал учета Карт» к Порядку транспортировки, учета, хранения и уничтожения банковских Карт

ЖУРНАЛ УЧЕТА КАРТ хранящихся в сейфе 1 за «20» апреля 2016 г.

п/п

Номер описи

Количество

(шт., цифрами)

Подпись ответственного за хранение

Остаток на начало дня

5675

Приход

1.

6483

25

2.

6484

122

...

Расход*

1.

5467

25

2.

5463

37

3.

6312

14

Остаток на конец дня

5746

Приложение Д

<?php

include ("./include/config.php");

/* 4.0 */

// hack for oracle, all field names fetched in lower case if ($dbms_type === 'oci8po') {

define('ADODB_ASSOC_CASE', 0);

} // end if

include('./include/adodb/adodb.inc.php');

if (isset($mail_feature) and $mail_feature == 1){

// include mail classes

include ("./include/mail_classes/class.html.mime.mail.inc"); include ("./include/mail_classes/class.smtp.inc");

} // and if

include ("./include/languages/".$language.".php"); include ("./include/functions.php");

include ("./include/common_start.php"); include ("./include/check_installation.php"); include ("./include/check_login.php"); include ("./include/check_table.php"); include ("./include/header.php");

// HTTP Variables:

/***************** GET ***************************

***************************************************/

// link export_to_csv, set to 1

if (isset($_GET["export_to_csv"])){

$export_to_csv = $_GET["export_to_csv"];

} // end if

// I keep in session where_clause, page, order and order_by in order to save a results view, even if a change table

// contains the where clause, without limit and order e.g. "field = 'value'" (all url encoded)

// navigation bar, order, delete and delete all links, export to csv, show_all link, check existing mail

// why strepslashes? The first time $where_clause is calculated from build_where_clause, and it's ok because all the field contents come from POST with slashes, so when I pass it through links new slashes are added and I have to strip them

if (isset($_GET["where_clause"])){

$where_clause = stripslashes($_GET["where_clause"]);

$_SESSION['where_clause_'.$table_name] = $where_clause;

} // end if

elseif (isset($_SESSION['where_clause_'.$table_name])){

$where_clause = $_SESSION['where_clause_'.$table_name];

} // end if

// the current page in records results (0......n)

// navigation bar, order, delete and delete all links, export to csv, show_all link if (isset($_GET["page"])){

$page = $_GET["page"];

$_SESSION['page_'.$table_name] = $page;

} // end if

elseif (isset($_SESSION['page_'.$table_name])){

$page = $_SESSION['page_'.$table_name];

} // end if

// the field used to order the results

// navigation bar, order, delete and delete all links, export to csv

// why strepslashes? The first time $order is calculated in the code, so when I pass it through links new slashes are added if the field name contains quotes and I have to strip them

if (isset($_GET["order"])){

$order = stripslashes($_GET["order"]);

$_SESSION['order_'.$table_name] = $order;

} // end

elseif (isset($_SESSION['order_'.$table_name])){

$order = $_SESSION['order_'.$table_name];

} // end if

// the order type ('ASC'|'DESC')

// navigation bar, order, delete and delete all links, export to csv if (isset($_GET["order_type"])){

$order_type = $_GET["order_type"];

$_SESSION['order_type_'.$table_name] = $order_type;

} // end

elseif (isset($_SESSION['order_type_'.$table_name])){

$order_type = $_SESSION['order_type_'.$table_name];

} // end if

// set to 1 when the user click on "show all"

// show_all link (footer.php)

// why isset()? All variables should be set because if empty_search_variables the user comes from a show results page, but could ben unset if the session has expired

if (isset($_GET['empty_search_variables']) && (int)$_GET['empty_search_variables'] === 1) { if (isset($where_clause)) {

unset($where_clause);

} // end if

if (isset($page)) {

unset($page);

} // end if

if (isset($order)) {

unset($order);

} // end if

if (isset($order_type)) { unset($order_type);

} // end if

} // end if

// the function of this page I wanto to execute ('edit'|'delete'|'search'....)

// navigation bar, order, edit, detail, delete and delete all links, export to csv, bottom links, insert/edit/search form, insert_duplication form

if (isset($_GET["function"])){ // from the homepage

$function = $_GET["function"];

} // end else{

$function = "search";

} // end else

// the number of result records to be displayed in a page

// records_per_page listbox

if (isset($_GET["records_per_page"])){ // the user set a new value from the listbox

$records_per_page = (int)$_GET["records_per_page"];

$_SESSION['records_per_page_'.$table_name] = $records_per_page;

} // end

elseif (isset($_SESSION['records_per_page_'.$table_name])){ // otherwise use the value saved for this table

$records_per_page = $_SESSION['records_per_page_'.$table_name];

} // end if

else{ // otherwise (first time the table is accessed or session expired) use the first value of the listbox

$records_per_page = $records_per_page_ar[0];

} // end else

// the function ('edit'|'delete') from which the user click on previous/next buttons

// previous/next links

if (isset($_GET["from_function"])){

$from_function = $_GET["from_function"];

} // end

// the field used to identify a single record in edit, delete and detail functions

// edit, delete, detail links, edit form if (isset($_GET["where_field"])){

$where_field = $_GET["where_field"];

} // end if

// the value (of where_field) used to identify a single record in edit, delete and detail functions

// edit, delete, detail links, edit form if (isset($_GET["where_value"])){

$where_value = $_GET["where_value"];

} // end if

// set to 1 when a research has been just executed

// from the search form

if (isset($_GET["execute_search"])){

$execute_search = $_GET["execute_search"];

} // end if

// set to 1 after an update

// redirect after update

if (isset($_GET["just_updated"])){

$just_updated = $_GET["just_updated"];

} // end if

// set to 1 after an update with no authorization

// update case

if (isset($_GET["just_updated_no_authorization"])){

$just_updated_no_authorization = $_GET["just_updated_no_authorization"];

} // end if

// set to 1 after a delete with no authorization

// delete case

if (isset($_GET["just_delete_no_authorization"])){

$just_delete_no_authorization = $_GET["just_delete_no_authorization"];

} // end if

// set to 1 after an insert

// redirect after insert

if (isset($_GET["just_inserted"])){

$just_inserted = $_GET["just_inserted"];

} // end if

// set to 1 after a delete multiple with authentication enabled

// redirect after delete_all

if (isset($_GET["just_delete_all_authorizated"])){

$just_delete_all_authorizated = $_GET["just_delete_all_authorizated"];

} // end if

// set to 1 after a next record on the last one

// redirect after choose_next_record

if (isset($_GET["just_next_record_on_last_one"])){

$just_next_record_on_last_one = (int)$_GET["just_next_record_on_last_one"];

} // end if

// set to 1 after a previous record on the first one

// redirect after choose_previous_record

if (isset($_GET["just_previous_record_on_first_one"])){

$just_previous_record_on_first_one = (int)$_GET["just_previous_record_on_first_one"];

} // end if

// from index.php: when the user want to check an existing mailing, set 0 because I don't want to show the add to mailing form below the results table. Otherwise I set it to 1

if (isset($_GET['show_add_to_mailing_form'])) {

$show_add_to_mailing_form = (int)$_GET['show_add_to_mailing_form'];

} // end if else {

$show_add_to_mailing_form = 1;

} // end else

// insert_duplication_form, set to 1 if the user want to insert anyway if (isset($_GET["insert_duplication"])){

$insert_duplication = $_GET["insert_duplication"];

} // end if

/***************** POST ***************************

All the field contents come from POST, and I use them directly ($_POST)

***************************************************/

$action = $dadabik_main_file;

$show_record_numbers_change_table = 1;

// get the array containg label ant other information about the fields

$fields_labels_ar = build_fields_labels_array($table_internal_name, "1");

switch($function){

case "insert":

if ($enable_insert == "1") {

// if (!isset($insert_duplication) || $insert_duplication != '1'){ // otherwise would be checked for two times

// check values

$check = 0;

//$check = check_required_fields($_POST, $fields_labels_ar);

$check = check_required_fields($_POST, $_FILES, $fields_labels_ar,

$function);

if ($check == 0){

txt_out($normal_messages_ar["required_fields_missed"], "er

ror_messages_form");

"error_messages_form");

} // end if ($check == 0)

else{ // required fields are ok

// check field lengths

$check = 0;

$check = check_length_fields($_POST, $fields_labels_ar); if ($check == 0){

txt_out($normal_messages_ar["fields_max_length"],

} // end if ($check == 0) else{ // fields length are ok

$check = 0;

$content_error_type = "";

$check = check_fields_types($_POST,

$fields_labels_ar, $content_error_type);

if ($check == 0){

txt_out($normal_messages_ar["{$content_error_type}_not_valid"], "error_messages_form");

} // end if ($check == 0) else{ // type field are ok

$check = 0;

$check = write_temp_uploaded_files($_FILES,

$fields_labels_ar);

if ($check == 0){

//Need to add the reason why the

upload failed: file too large, improper filename (such as a.php file), or the file couldn't be found.

txt_out($error_messages_ar["upload_error"], "error_messages_form");

} // end if ($check == 0) else{ // uploaded files are ok

if (!isset($insert_duplication) ||

$insert_duplication != '1'){ in the database

// check for duplicated insert

$sql =

build_select_duplicated_query($_POST, $table_name, $fields_labels_ar, $string1_similar_ar,

$string2_similar_ar);

are some duplication

if ($sql != ""){ // if there

$check = 0;

== 1){

txt_out("<h3>".$normal_messages_ar["duplication_possible"]."</h3>");

if ($display_is_similar

for ($i=0;

$i<count($string1_similar_ar); $i++){ txt_out("<br>"); txt_out($normal_messages_ar["i_think_that"]); txt_out($string1_similar_ar[$i]); txt_out($normal_messages_ar["is_similar_to"]);

txt_out($string2_similar_ar[$i]);

($display_is_similar == 1)

} // end for

} // end if

query

execute_db($sql, $conn);

execute_db_limit($sql, $conn, $number_duplicated_records, 0);

display_sql($sql);

// execute the select

//$res_records =

$res_records =

"possible_duplication";

I don't need it here, I've just a fixed number of results.

$results_type =

$where_clause = ""; //

$results_table = build_results_table($fields_labels_ar, $table_name, $res_records, $results_type, "", "", $action, $where_clause, "", "", "");

($normal_messages_ar["similar_records"]);

txt_out

$insert_duplication_form = build_insert_duplication_form($_POST, $fields_labels_ar,

$table_name, $table_internal_name);

$insert_duplication_form;

$fields_labels_ar, $table_name, $table_internal_name);

echo

echo $results_table;

} // end if

} // end if if ($check === 1){

// insert a new record insert_record($_FILES, $_POST,

if

($enable_insert_notice_email_sending === 1) {

get_unique_field_db($table_name);

$unique_field_name =

get_last_ID_db();

$last_inserted_ID =

if (isset($unique_field_name) && $unique_field_name !== '' && isset($last_inserted_ID) &&

$last_inserted_ID !== false) {

build_select_part($fields_labels_ar, $table_name);

$sql =

$sql.= " WHERE ".$quote.$table_name.$quote.".".$quote.$unique_field_name.$quote." = '".$last_inserted_ID."'";

select query execute_db($sql, $conn);

// execute the

$res_details =

insert notice message

// build the

$insert_notice_email = build_insert_update_notice_email_record_details($fields_labels_ar,

$res_details);

'';

'';

'';

$to_addresses =

$cc_addresses =

$bcc_addresses =

($insert_notice_email_to_recipients_ar as $insert_notice_email_to_recipient){

$to_addresses.= $insert_notice_email_to_recipient.', ';

substr($to_addresses, 0, -2); // delete the last ', '

foreach

} // end foreach

$to_addresses =

($insert_notice_email_cc_recipients_ar as $insert_notice_email_cc_recipient){

$cc_addresses.= $insert_notice_email_cc_recipient.', ';

substr($cc_addresses, 0, -2); // delete the last ', '

foreach

} // end foreach

$cc_addresses =

($insert_notice_email_bcc_recipients_ar as $insert_notice_email_bcc_recipient){

$bcc_addresses.= $insert_notice_email_bcc_recipient.', ';

substr($bcc_addresses, 0, -2); // delete the last ', '

$additional_headers = '';

foreach

} // end foreach

$bcc_addresses =

($cc_addresses != '') {

$additional_headers.= "Cc:".$cc_addresses."\n";

($bcc_addresses != '') {

$additional_headers.= "Bcc:".$bcc_addresses;

if

} // end if if

} // end if

mail($to_addresses, $db_name.' - '.$table_name.' - '.$normal_messages_ar['new_insert_executed'], $insert_notice_email, $additional_headers);

} // end if

} // end if

== 1) {

if ($insert_again_after_insert

//txt_out("<p>".$normal_messages_ar["insert_result"]); txt_out($normal_messages_ar["record_inserted"]);

txt_out("<h3>".$normal_messages_ar["insert_record"]."</h3>");

$form_type = "insert";

$res_details = "";

// re-get the array containg label ant other information about the fields, could be changed in the insert (other choices......)

build_fields_labels_array($table_internal_name, "1");

$show_insert_form_after_error = 0;

$show_edit_form_after_error = 0;

$fields_labels_ar =

// display the form

$form = build_form($table_name, $action, $fields_labels_ar, $form_type, $res_details, "", "", $_POST,

$_FILES, $show_insert_form_after_error, $show_edit_form_after_error);

echo $form;

} // end if else{

get_unique_field_db($table_name);

$unique_field_name =

$location_url=$site_url.$dadabik_main_file.'?table_name='.urlencode($table_name).'&functio n=search&where_clause=&page=0&just_inserted=1';

!= '') {

'&order='.$unique_field_name.'&order_type=desc';

'.$location_url);

if ($unique_field_name

$location_url.=

} // end if header('Location:

} // end else

} // end if

} // end else

} // end else

} // end else

} // end else if ($check === 0) {

txt_out("<h3>".$normal_messages_ar["insert_record"]."</h3>");

$form_type = "insert";

$res_details = "";

$show_insert_form_after_error = 1;

$show_edit_form_after_error = 1;

// display the form

$form = build_form($table_name, $action, $fields_labels_ar,

$form_type, $res_details, "", "", $_POST, $_FILES, $show_insert_form_after_error,

$show_edit_form_after_error);

echo $form;

} // end if

// } // end if (!isset($insert_duplication) || $insert_duplication != '1')

/*

$table_internal_name);

else{ // $insert_duplication == "1"

// insert a new record

insert_record($_FILES, $_POST, $fields_labels_ar, $table_name,

if ($insert_again_after_insert == 1) { txt_out("<p>".$normal_messages_ar["insert_result"]); txt_out($normal_messages_ar["record_inserted"]);

txt_out("<h3>".$normal_messages_ar["insert_record"]."</h3>");

$form_type = "insert";

$res_details = "";

// re-get the array containg label ant other information about the fields, could be changed in the insert (other choices......)

$fields_labels_ar = build_fields_labels_array($table_internal_name, "1");

$form_type, $res_details, "", "");

// display the form

$form = build_form($table_name, $action, $fields_labels_ar,

echo $form;

} // end if else{

$unique_field_name = get_unique_field($table_name);

$location_url=$site_url.'form.php?table_name='.urlencode($table_name).'&function=search&wh ere_clause=&page=0&just_inserted=1';

if ($unique_field_name != '') {

$location_url.= '&order='.$unique_field_name.'&order_type=desc';

} // end if

header('Location: '.$location_url);

} // end else

} // end else

*/

} // end if break;

case "search":

launched)

// $page if index.php is called without parameters (the first time DaDaBIK is if (!isset($page)) {

$page = 0;

$_SESSION['page_'.$table_name] = $page;

} // end if

// build the select query

if (isset($execute_search) && $execute_search === '1'){ // it's a search result, the user has just filled the search form, so we have to build the select query

//if (!isset($where_clause)){ // it's a search result, the user has just filled the search form, so we have to build the select query

$where_clause = build_where_clause($_POST, $fields_labels_ar, $table_name);

$page = 0;

$_SESSION['page_'.$table_name] = $page;

} // end if

elseif (!isset($where_clause)) { // when I call index for the first time

$where_clause = '';

} // end else

// save the where_clause without the user part to pass

$where_clause_to_pass = $where_clause;

$_SESSION['where_clause_'.$table_name] = $where_clause;

if ($enable_authentication === 1 && $enable_browse_authorization === 1) { //

$ID_user_field_name = '$current_user' where clause part in order to select only the records the current user owns

$ID_user_field_name = get_ID_user_field_name($fields_labels_ar);

use authorization

if ($ID_user_field_name !== false) { // no ID_user fields available, don't if ($where_clause === '') {

$where_clause =

$quote.$table_name.$quote.'.'.$quote.$ID_user_field_name.$quote." = '".addslashes($current_user)."'";

} // end if else {

//$where_clause.= " AND ".$quote.$table_name.$quote.'.'.$quote.$ID_user_field_name.$quote." = '".addslashes($current_user)."'";

$where_clause = "(".$where_clause.") AND ".$quote.$table_name.$quote.'.'.$quote.$ID_user_field_name.$quote." = '".addslashes($current_user)."'";

} // end else

} // end if

} // end if

//$sql = "SELECT * FROM ".$quote.$table_name.$quote;

$sql = build_select_part($fields_labels_ar, $table_name); if ($where_clause != ""){

$sql.= " WHERE ".$where_clause;

} // end if

// execute the select without limit query to get the number of results

$res_records_without_limit = execute_db($sql, $conn);

$select_without_limit = $sql; // I save it because I need it to pass it to build_add_to_mailing_form

of results

$results_number = get_num_rows_db($res_records_without_limit); // get the number

if ($results_number > 0){ // at least one record found

$pages_number = get_pages_number($results_number, $records_per_page); // get the total number of pages

== 1) {

if(isset($export_to_csv) && $export_to_csv == 1 && $export_to_csv_feature if (isset($csv_creation_time_limt)) {

set_time_limit($csv_creation_time_limt);

} // end if

$csv = build_csv($res_records_without_limit, $fields_labels_ar);

//exit;

ob_end_clean();

//header('Content-Type: application/vnd.ms-excel'); header("Content-Type: text/x-csv"); header('Content-Disposition: attachment;

filename="'.$table_name.'.csv"');

//header('Content-Type: application/octet-stream'); echo $csv;

exit;

} // end if

if (!isset($order)){

/*

$order = '';

if ($fields_labels_ar[0]["primary_key_field_field"] !== ''){

$linked_fields_ar = explode($fields_labels_ar[$i]['separator_field'], $fields_labels_ar[0]['linked_fields_field']);

foreach ($linked_fields_ar as $linked_field){

$order.=

$fields_labels_ar[0]['primary_key_table_field'].'.'.$linked_field.'~';

} //end foreach

$order = substr($order, 0, -1); // deleter the last '~'

} // end if else{

$order.=

$table_name.'.'.$fields_labels_ar[0]["name_field"];

} // end else

*/

// get the first field present in the results form as order

$count_temp = 0;

$fields_labels_ar_count = count($fields_labels_ar);

while (!isset($order) && $count_temp < $fields_labels_ar_count) { if

($fields_labels_ar[$count_temp]["present_results_search_field"] === '1') {

$order =

$fields_labels_ar[$count_temp]["name_field"];

} // end if

$count_temp++;

} // end while

if (!isset($order)) { // if no fields are present in the results form, just use the first field as order, the form wiil be empty, this is just to prevent error messages when composing the sql query

$order = $fields_labels_ar[0]["name_field"];

} // end if

} // end if

$_SESSION['order_'.$table_name] = $order; if (!isset($order_type)){

$order_type = "ASC";

$_SESSION['order_type_'.$table_name] = $order_type;

} // end if

if ($page > ($pages_number-1)) {

$page = $pages_number-1;

} // end if

$sql.= " ORDER BY ";

// get the index of $fields_labels_ar corresponding to a field

$count_temp = 0;

foreach ($fields_labels_ar as $field){ if ($field['name_field'] === $order){

$field_index = $count_temp; break;

} // end if

$count_temp++;

} // end foreach

if ($fields_labels_ar[$field_index]["primary_key_field_field"] !== '' &&

$fields_labels_ar[$field_index]["primary_key_field_field"] !== NULL){

$linked_fields_ar = explode($fields_labels_ar[$field_index]['separator_field'],

$fields_labels_ar[$field_index]['linked_fields_field']);

$is_first = 1;

foreach ($linked_fields_ar as $linked_field){

//$sql.=

$quote.$fields_labels_ar[$field_index]['primary_key_table_field'].$alias_prefix.$fields_labels_ar [$field_index]['alias_suffix_field'].$quote.'.'.$quote.$linked_field.$alias_prefix.$fields_labels

_ar[$field_index]['alias_suffix_field'].$quote;

////*$sql.=

$quote.$linked_field.$alias_prefix.$fields_labels_ar[$field_index]['alias_suffix_field'].$quote;

$sql.=

$quote.$fields_labels_ar[$field_index]['primary_key_table_field'].$alias_prefix.$linked_fi eld.$alias_prefix.$fields_labels_ar[$field_index]['alias_suffix_field'].$quote;

if ($is_first === 1){ // add the order type just to the first field e.g. order by field_1 DESC, field_2, field_3

$sql.= ' '.$order_type;

$is_first = 0;

} // end if

$sql.= ', ';

} //end foreach

$sql = substr($sql, 0, -2); // deleter the last ', '

} // end if else{

//$sql.=

$table_name.'.'.$fields_labels_ar[$field_index]["name_field"];

$sql.=

$quote.$table_name.$quote.'.'.$quote.$fields_labels_ar[$field_index]["name_field"].$quote;

$sql.= ' '.$order_type;

} // end else

// add limit clause

/* 4.0 */

//$sql.= " LIMIT ".$page*$records_per_page.", ".$records_per_page;

// execute the select query

/* 4.0 */

//$res_records = execute_db($sql, $conn);

$res_records = execute_db_limit($sql, $conn, $records_per_page,

$page*$records_per_page);

if (isset($just_inserted) && $just_inserted == "1") {

//txt_out("<p>".$normal_messages_ar["insert_result"]); txt_out('<p>'.$normal_messages_ar["record_inserted"]);

} // end if

if (isset($just_delete_all_authorizated) && $just_delete_all_authorizated

== "1" && $enable_browse_authorization === 0) {

txt_out('<p>'.$error_messages_ar["deleted_only_authorizated_records"]);

} // end if

== "1") {

if (isset($just_delete_no_authorization) && $just_delete_no_authorization

txt_out('<p>'.$error_messages_ar["no_authorization_update_delete"]);

} // end if display_sql($sql);

"n_results_found");

txt_out("<br>".$normal_messages_ar["records_found"]." ".$results_number,

// get the number of records in the current table

$sql = "SELECT COUNT(*) FROM ".$quote.$table_name.$quote;

if ($enable_authentication === 1 && $enable_browse_authorization === 1) {

// $ID_user_field_name = '$_SESSION['logged_user_infos_ar']['username_user']' where clause part in order to select only the records the current user owns

$ID_user_field_name = get_ID_user_field_name($fields_labels_ar);

if ($ID_user_field_name !== false) { // no ID_user fields available, don't use authorization

$sql.= " WHERE ".$quote.$table_name.$quote.'.'.$quote.$ID_user_field_name.$quote." = '".addslashes($_SESSION['logged_user_infos_ar']['username_user'])."'";

} // end if

} // end if

// execute the select query

$res_count = execute_db($sql, $conn);

while ($count_row = fetch_row_db($res_count)){

$records_number = $count_row[0];

} // end while

txt_out('&nbsp;&nbsp;('.$normal_messages_ar["total_records"].':'.$records_number.')', 'total_records');

if ($enable_delete == "1" && $enable_delete_all_feature === 1) { echo " <a class=\"onlyscreen\" onclick=\"if

(!confirm('".$normal_messages_ar['confirm_delete?']."')){ return false;}else if (!confirm('".$normal_messages_ar['really?']."')){ return false;}\" href=\"".$action."?table_name=". urlencode($table_name)."&function=delete_all&where_clause=".urlencode($where_clause_to_pass)."&pa ge=".$page."&order=".urlencode($order)."&order_type=".$order_type."\">".$normal_messages_ar['dele te_all']."</a>";

} // end if

if ($results_number > $records_per_page){ // display the navigation bar txt_out ("<br><font

class=\"page_n_of_m\">".$normal_messages_ar["page"].($page+1).$normal_messages_ar["of"].$pages_nu mber."</font>"); // "Page n of x" statement

// build the navigation tool

$navigation_tool = build_navigation_tool($where_clause_to_pass,

$pages_number, $page, $action, "", $order, $order_type);

// display the navigation tool

echo "&nbsp;&nbsp;&nbsp;&nbsp;".$navigation_tool."<br><br>";

} // end if ($results_number > $records_per_page)

$change_table_form = build_change_table_form();

$table_name);

$records_per_page_form = build_records_per_page_form($records_per_page,

if ($change_table_form != ""){ // if there is more than one table to manage txt_out('<table><tr><td>'.$change_table_form.'</td<td>'.$records_per_page_form.'</td></tr>

</table>');

} // end if else {

txt_out($records_per_page_form);

} // end else

$results_type = "search";

// build the HTML results table

$results_table = build_results_table($fields_labels_ar, $table_name,

$res_records, $results_type, "", "", $action, $where_clause_to_pass, $page, $order, $order_type); echo $results_table;

if ( $export_to_csv_feature == 1) {

echo "<a href=\"".$action."?table_name=". urlencode($table_name)."&function=".$function."&where_clause=".urlencode($where_clause_to_pass)."

&page=".$page."&order=".urlencode($order)."&order_type=".$order_type."&export_to_csv=1\">";

"export_to_csv");

txt_out ($normal_messages_ar["export_to_csv"]."</a>",

echo "</a>"; ?> | <?php

echo "<a href=\"remain.php\">Остаток карт</a>";

?> | <?php

echo "<a href=\"worker.php\">Опись карт по сотруднику</a>";

?> | <?php

echo "<a href=\"return.php\">Опись карт для возврата</a>";

?> | <?php

echo "<a href=\"outdate.php\">Опись просроченных карт</a>";

}

if (isset($mail_feature) && $mail_feature == 1 && $show_add_to_mailing_form

=== 1){ // e-mail feature activated & show_add_to_mailing_form enabled

$sql = "select name_mailing from mailing_tab where sent_mailing = '0' order by date_created_mailing desc";

created

// execute the query

$res_mailing = execute_db($sql, $conn);

if (get_num_rows_db($res_mailing) > 0){ // at least one mailing

$add_to_mailing_form =

build_add_to_mailing_form($res_mailing, $select_without_limit, $results_number);

txt_out("<br><table><tr><td>".$add_to_mailing_form."</td><td valign=\"top\">".$normal_messages_ar["all_records_found"]."</td></tr></table>");

} // end if

} // end if

} // end if else{

display_sql($sql);

$change_table_form = build_change_table_form();

$table_name);

$records_per_page_form = build_records_per_page_form($records_per_page,

if ($change_table_form != ""){ // if there is more than one table to manage txt_out('<table><tr><td>'.$change_table_form.'</td<td>'.$records_per_page_form.'</td></tr>

</table>');

} // end if else {

txt_out($records_per_page_form);

} // end else

txt_out($normal_messages_ar["no_records_found"]);

} // end else break;

case "details":

if ($enable_details == "1" && ($enable_authentication === 0 ||

$enable_browse_authorization === 0 || current_user_is_owner($where_field, $where_value,

$table_name, $fields_labels_ar))){

// build the details select query

//$sql = "select * from ".$quote.$table_name.$quote." where ".$quote.$where_field.$quote." = '".$where_value."'";

$sql = build_select_part($fields_labels_ar, $table_name);

//$sql.= " where ".$quote.$table_name.$quote.'.'.$quote.$where_field.$quote." = '".$where_value."' LIMIT 1";

$sql.= " where ".$quote.$table_name.$quote.'.'.$quote.$where_field.$quote." = '".$where_value."'";

=== 1) {

if (isset($just_next_record_on_last_one) && $just_next_record_on_last_one

txt_out("<p>".$error_messages_ar["this_record_is_the_last_one"]."</p>");

} // end if

if (isset($just_previous_record_on_first_one) &&

$just_previous_record_on_first_one === 1) {

txt_out("<p>".$error_messages_ar["this_record_is_the_first_one"]."</p>");

} // end if display_sql($sql);

txt_out("<h3>".$normal_messages_ar["details_of_record"]."</h3>");

txt_out('<p><a class="previous_next" href="'.$dadabik_main_file.'?function=choose_previous_record&table_name='.$table_name.'&where_fie ld='.urlencode($where_field).'&where_value='.urlencode($where_value).'&from_function='.$function. '">&lt;&lt; '.$normal_messages_ar['previous'].'</a>&nbsp;&nbsp;&nbsp;<a class="previous_next" href="'.$dadabik_main_file.'?function=choose_next_record&table_name='.$table_name.'&where_field='

.urlencode($where_field).'&where_value='.urlencode($where_value).'&from_function='.$function.'">'

.$normal_messages_ar['next'].' &gt;&gt;</a></p>');

// execute the select query

$res_details = execute_db("$sql", $conn);

// build the HTML details table

$details_table = build_details_table($fields_labels_ar, $res_details);

// display the HTML details table

echo $details_table;

} // end if else {

txt_out("<p>".$error_messages_ar["no_authorization_view"]."</p>");

} // end else break;

case "edit":

if ($enable_edit == "1" && ($enable_authentication === 0 ||

$enable_browse_authorization === 0 || current_user_is_owner($where_field, $where_value,

$table_name, $fields_labels_ar))){

if (isset($just_updated) && $just_updated == "1") {

//txt_out("<h3>".$normal_messages_ar["update_result"]."</h3>"); txt_out("<p>".$normal_messages_ar["record_updated"]."</p>");

}

== "1") {

if (isset($just_updated_no_authorization) && $just_updated_no_authorization

txt_out("<p>".$error_messages_ar["no_authorization_update_delete"]."</p>");

}

=== 1) {

if (isset($just_next_record_on_last_one) && $just_next_record_on_last_one

txt_out("<p>".$error_messages_ar["this_record_is_the_last_one"]."</p>");

} // end if

if (isset($just_previous_record_on_first_one) &&

$just_previous_record_on_first_one === 1) {

txt_out("<p>".$error_messages_ar["this_record_is_the_first_one"]."</p>");

} // end if

// build the details select query

$sql = "select * from ".$quote.$table_name.$quote." where ".$quote.$table_name.$quote.'.'.$quote.$where_field.$quote." = '".$where_value."'";

display_sql($sql); txt_out("<h3>".$normal_messages_ar["edit_record"]."</h3>");

txt_out('<p><a class="previous_next" href="'.$dadabik_main_file.'?function=choose_previous_record&table_name='.$table_name.'&where_fie ld='.urlencode($where_field).'&where_value='.urlencode($where_value).'&from_function='.$function. '">&lt;&lt; '.$normal_messages_ar['previous'].'</a>&nbsp;&nbsp;&nbsp;<a class="previous_next" href="'.$dadabik_main_file.'?function=choose_next_record&table_name='.$table_name.'&where_field='

.urlencode($where_field).'&where_value='.urlencode($where_value).'&from_function='.$function.'">'

.$normal_messages_ar['next'].' &gt;&gt;</a></p>');

// execute the select query

$res_details = execute_db($sql, $conn);

$form_type = "update";

$show_insert_form_after_error = 0;

$show_edit_form_after_error = 0;

// display the form

$form = build_form($table_name, $action, $fields_labels_ar, $form_type,

$res_details, $where_field, $where_value, $_POST, $_FILES, $show_insert_form_after_error,

$show_edit_form_after_error);

echo $form;

} // end if else {

txt_out("<p>".$error_messages_ar["no_authorization_view"]."</p>");

} // end else break;

case "update":

if ($enable_edit == "1"){

$check = 0;

//$check = check_required_fields($_POST, $fields_labels_ar);

$check = check_required_fields($_POST, $_FILES, $fields_labels_ar,

$function);

if ($check == 0){

txt_out($normal_messages_ar["required_fields_missed"],

"error_messages_form");

} // end if ($check == 0)

else{ // required fields are ok

// check field lengths

$check = 0;

$check = check_length_fields($_POST, $fields_labels_ar); if ($check == 0){

txt_out($normal_messages_ar["fields_max_length"],

"error_messages_form");

$content_error_type);

} // end if ($check == 0) else{ // fields length are ok

$check = 0;

$content_error_type = "";

$check = check_fields_types($_POST, $fields_labels_ar, if ($check == 0){

txt_out($normal_messages_ar["{$content_error_type}_not_valid"], "error_messages_form");

} // end if ($check == 0) else{ // type field are ok

$check = 0;

$check = write_temp_uploaded_files($_FILES,

$fields_labels_ar);

if ($check == 0){

//Need to add the reason why the upload failed: file too large, improper filename (such as a.php file), or the file couldn't be found.

txt_out($error_messages_ar["upload_error"],

"error_messages_form");

}

else { // filed uploaded are ok

$update_type = "internal";

if( $enable_authentication === 0 ||

$enable_update_authorization === 0 || current_user_is_owner($where_field, $where_value,

$table_name, $fields_labels_ar)){

// update the record update_record($_FILES, $_POST,

$fields_labels_ar, $table_name, $table_internal_name, $where_field, $where_value, $update_type);

if

($enable_update_notice_email_sending === 1) {

build_select_part($fields_labels_ar, $table_name);

$sql =

$sql.= " WHERE ".$quote.$table_name.$quote.".".$quote.$where_field.$quote." = '".$where_value."'";

$conn);

// execute the select query

$res_details = execute_db($sql,

message

// build the update notice

$update_notice_email =

build_insert_update_notice_email_record_details($fields_labels_ar, $res_details);

$to_addresses = '';

$cc_addresses = '';

$bcc_addresses = '';

foreach ($update_notice_email_to_recipients_ar as $update_notice_email_to_recipient){

$to_addresses.=

$update_notice_email_to_recipient.', ';

substr($to_addresses, 0, -2); // delete the last ', '

} // end foreach

$to_addresses =

foreach ($update_notice_email_cc_recipients_ar as $update_notice_email_cc_recipient){

$cc_addresses.=

$update_notice_email_cc_recipient.', ';

} // end foreach

$cc_addresses = substr($cc_addresses, 0, -2); // delete the last ', '

foreach ($update_notice_email_bcc_recipients_ar as $update_notice_email_bcc_recipient){

$bcc_addresses.=

$update_notice_email_bcc_recipient.', ';

substr($bcc_addresses, 0, -2); // delete the last ', '


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

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