[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Хранимые процедуры MySQL и PHP
Страницы: 1, 2
Игорь_Vasinsky
о чём это вы тут... идля чего это....

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Arni
Цитата (Игорь_Vasinsky @ 28.08.2011 - 19:46)
о чём это вы тут... идля чего это....

В mysql есть такое как хранимые процедуры и функции. Их можна хранить с привязкой к базе данных. Вызов таких может творить чудеса с данными.

Я когдато писал что-то подобное но отказался поскольку проблем с ними много на разных хостингах особенно бесплатных.

Вот например эта добавит узел в дерево NESTED SETS. {tabname} заменить на имя таблицы например.


CREATE FUNCTION {tabname}_insert(idparent INT, typeobj TINYINT, nameobj VARCHAR(255))
RETURNS int(11)
DETERMINISTIC
BEGIN
DECLARE lid INT DEFAULT 0;
DECLARE rid INT DEFAULT 0;
DECLARE lv_obj INT DEFAULT 0;
DECLARE sys_id INT DEFAULT 0;
DECLARE url_parent TEXT DEFAULT '';
DECLARE rez INT DEFAULT 0;
DECLARE url_close VARCHAR(255) DEFAULT '';
DECLARE lang_code VARCHAR(255) DEFAULT '';
DECLARE inc_php_parent VARCHAR(255) DEFAULT '';
DECLARE tpl_content_parent TEXT DEFAULT '';
DECLARE tpl_content_short_parent TEXT DEFAULT '';
/*Проверяем cуществование родительского каталога*/
SELECT id INTO sys_id FROM {tbp}{tabname} WHERE id = idparent;
IF sys_id != 0
THEN
/*Проверяем имя на совпадение*/
SET sys_id = 0;
SELECT id INTO sys_id FROM {tbp}{tabname} WHERE obj_sef = nameobj AND id_parent = idparent;
IF sys_id = 0
THEN
SELECT
lang_ISO_639_3_alpha INTO lang_code FROM al_location WHERE root = 1 AND status_cnf;
SELECT left_key, right_key, level_obj, url, tpl_content, tpl_content_short, inc_php INTO lid, rid, lv_obj, url_parent, tpl_content_parent, tpl_content_short_parent, inc_php_parent FROM {tbp}{tabname} WHERE id = idparent;
UPDATE {tbp}{tabname} SET left_key = left_key + 2 WHERE left_key > rid;
UPDATE {tbp}{tabname} SET right_key = right_key + 2 WHERE right_key >= rid;
IF typeobj THEN SET inc_php_parent = ''; END IF;
INSERT INTO {tbp}{tabname} SET level_obj = lv_obj + 1,
id_parent = idparent,
left_key = rid,
right_key = rid + 1,
obj_sef = nameobj,
obj_type = typeobj,
inc_php = inc_php_parent,
obj_name = nameobj,
advanced_content = tpl_content_parent,
short_content = tpl_content_short_parent,
tpl_content = tpl_content_parent,
tpl_content_short = tpl_content_short_parent,
sign_lang = lang_code,
url = CONCAT(url_parent,'/',nameobj,url_close);
SELECT LAST_INSERT_ID() INTO rez;
/*Запрос id сохраненной строки*/
ELSE SET rez = 0; END IF;
ELSE SET rez = 0; END IF;
RETURN rez;
END


_____________
Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены. (Edward V Berard).
________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.