.: Меню :.
Главная страница
Гостевая книга
Форум
Статьи
Галерея
Скачать
Голосование
Обратная Связь
Каталог ссылок
О SetCMS Team
DONATE
.: Скачай :.
SetCMS ver.3.6.5
.: Онлайн :.
Администраторы: 0
Редакторы: 0
Пользователи: 0
Гости: 11
.: Список :.
.: Пользователей :.
Зарегистрировано: 1162
Новичок: Romario
.: Объявление :.
Обращение к пользователям

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

С уважением,
Администрация
.: Вход :.
Имя:

Пароль:

Запомнить меня

Регистрация
.: ТОП Загрузки :.
  • SetCMS 3.6.5 (5782)
  • SetCMS 3.6.4 (4356)
  • IceBlind (3567)
  • subSilver (3358)
  • SetCMS 3.6.3 (3267)
  • Sven (3197)
  • Справочник по PHP 4 (2739)
  • ANBFFIX9 (2617)
  • IPB (2262)
  • NET (2194)
  • .: Последние статьи :.
  • Переделка шаблонов под 3.6
  • Создание ШАБЛОНОВ для SetCMS
  • Инструкция - ПРОЧТИ ПЕРЕД ТЕМ КАК ЗАДАТЬ ВОПРОС
  • Создание МОДУЛЕЙ для SetCMS
  • Создание БЛОКОВ для SetCMS
  • .: Последние темы форума :.
    Тема: Блок "Меню"
    Jack][ammer в 20.02.06 (13:11:44)
    Тема: GDLib
    Jack][ammer в 20.02.06 (13:10:24)
    Тема: Проблемы с чатом.
    Dragon_Dice в 20.02.06 (10:51:24)
    Тема: Блоки
    Kesha_F1 в 16.02.06 (01:25:22)
    Тема: Обнуление счетчика
    Kesha_F1 в 16.02.06 (01:20:24)
    Тема: Очень прошу! Разработчики!
    Jack][ammer в 15.02.06 (18:27:21)
    Тема: Страницы
    Inferno в 15.02.06 (13:07:19)
    Тема: rss
    tor80 в 15.02.06 (12:02:49)
    Тема: И опять про ссылки
    Metos в 15.02.06 (08:59:36)
    Тема: Проблемы с SetCMS ver. 3.6.5
    Kesha_F1 в 15.02.06 (03:59:39)
    .: Счётчик :.
    Ваш IP54.156.67.164

    Сегодня :
    Хитов : 79
    Хостов : 11
    Онлайн : 11
    Всего :
    Хитов : 149076
    Хостов : 14426
    Рекорд : 63 посетителей одновременно 05.01.2011 (16:40)

    Счётчик@Mail.ru

    .: Database Emulator :.
    · Database Emulator Автор: realxakep
    А давайте поможе админам?

    так как скрипт постоянно работает с файлами, то предлогаю написать класс имуляции базы данных на файлах (SQL syntax), для дальнейше интеграции класса в систему, + для уменьшение размера кода , + для оптмизации системы, + для уменьшение головной боли кодерам?

    Ваши соображения : ?
    кто за и против?
    и кто может помоч?

    наваял я чето, посмотрите - может стоит взглянуть!
    /**
    * если у когото есть вопросы, то пишите комментах - чтоб народ не спрашивали 1 вешъ по 2 раза
    * затем тут небольшой классик, который работает иммулятором базыы данных на основе файлов, но
    * использует синтаксис SQL запросов
    *
    * смысл в классе:
    * -оптимизация
    * -уменьшение кода
    * -меньше проблем админа
    *
    * смысл в SQL синтаксисе:
    * -так как проект OpenSource то я уверен что SQL synatax сможет помоч народу разобраться в том
    * что именно делает скрипт, так как етот синтаксис очень понятный, и довольно популярный
    * -в добавок если использовать SQL то в фальнейшем не будет проблемы написать кона который будет работать на
    * любой баззе данных, получиться довольно универсальный движок! :)
    *
    * собсна и все, надеюсь ето комуто поможет!
    * а то сидел парился около 2х часов! :)
    */

    define("FILE_PATH", "Database/");

    class DB
    {
    /**
    * тут мы сохраняем количество "столбцов" в данном файле!
    *
    * думаю что ето неочень удобно, но етот скрипт долек от соверхенства!
    */
    var $Settings = array
    (
    'links' => 3
    );

    /**
    * На всякий случай, если надо будет какието настройки делать во время инитализации
    *
    */

    function DB()
    {
    /**
    * Load Settings
    */
    }

    /**
    * сама функция запроса
    */
    function Q($Query = NULL)
    {
    // СМотрим если запрос пустой
    if(!$Query) return FALSE;

    //парсим запрос
    $ParsedQ = $this->Parse($Query);

    //выдаем резуьтат
    print_r($this->$ParsedQ['Action']($ParsedQ)) ;

    }
    /**
    * функция которая делает выбор ака Select
    */

    function DoSelect($Query)
    {
    // Смотрим если есть параметр ОТКУДА, если нет - то свободны!
    if(!isset($Query['from']) | !$Query['from'])
    {
    echo "Error, No From parameter!";
    return FALSE;
    }

    //открываем файл
    if(!$File = file(FILE_PATH.$Query['from'].".database"))
    {
    echo "Error, There is no database file : ".FILE_PATH.$Query['from'].".database";
    return FALSE;
    }

    $Text = "";
    $Total = count ($File);

    /**
    * собираем весь эррей в один кусок
    * онратите внимание, я перед каждой стокой добавляю [номер сторки]
    * сделано чтоб знать в какой строчке будет ответ ( если понадобиться в будушем)
    */
    for($x=0; $x<$Total; $x++)
    {
    $Text .= "[".$x."]".$File[$x];
    }

    //начинаем сборку поискового запроса
    $Pattern = "/\[\d+\]::";

    //продолжение запроса, проверяем если использовался параметр WHere
    if(isset($Query['where']['what']))
    {
    for($i=1; $i<$this->Settings[$Query['from']]+1;$i++)
    {
    if($i == $Query['where']['where'])
    {
    $Pattern .= "(".$Query['where']['what'].")::";
    }
    e lse
    {
    $Pattern .= "(.*)::";
    }

    }
    }
    else
    {
    for($i=1; $i<$this->Settings[$Query['from']]+1;$i++)
    {
    $Pattern .= "(.*)::";
    }

    }
    $Pattern .= "/";

    //ишем то что нам надо
    if(preg_match($Pattern, $Text, $Result))
    {
    //return Result
    unset($Result[0]);

    /**
    * в етой часте смотрим что было дано в параметрах Select
    * фиша в том что может быть дано 1,2,3 или * или 1
    * так что для разных запросов разные результаты
    * как вы заметили, у столбцов нет названия, используем просто номер
    */
    if($Query['select'][0] == '*')
    {
    return $Result;
    }
    else
    {
    if(count($Query['select']) > 1)
    {
    $NewArray = array();
    foreach($Query['select'] as $Num)
    {
    $NewArray[$Num] = $Result[$Num];
    }
    return $NewArray;

    }
    else
    {
    return array($Query['select'][0] => $Result[$Query['select'][0]]);
    }
    }
    }

    }

    /**
    * функция специально для тог чтоб парсить запросы из вида Select
    */
    function SelectParse($Query)
    {
    if(preg_match("/(.*)\s+from \s+([a-zA-Z0-9]+)\s*(.*)/is", $Query, $Result))
    {
    $Array['type'] = 'select';
    $Array['Action'] = 'DoSelect';

    if(preg_match("/(,)/",$Result[1 ],$Result2))
    {
    if(preg_match_all("/\s*(\d+) s*,*/", $Result[1], $Result3))
    {
    $Array['select'] = $Result3[1];
    }
    }
    else
    {
    $Array['select'] = array($Result[1]);
    }

    $Array['from'] = $Result[2];

    if($Result[2])
    {
    $Arr ay['where'] = $this->ParseWhere($Result[3]);
    }

    return $Array;
    }

    return FALSE;
    }
    /**
    * тут парсим часть запроса Where
    *
    */

    function ParseWhere($Query)
    {
    if(preg_match("/\s*where\s+ (\d+)\s*=\s*(.*)/i", $Query, $Result))
    {
    return array
    (
    'where' => $Result[1],
    'what' => $Result[2]
    );
    }
    }

    /**
    * основной парсер
    *
    */
    function Parse($Query)
    {
    if(preg_match("/^(select|update|de lete|insert)\s+(.*)/i", $Query, $Result))
    {
    switch ($Result[1])
    {
    case ("select") :
    case ("Select") :
    case ("SELECT") :
    {
    return $this->SelectParse($Result[2]);
    }
    break;

    case ("update"):
    case ("Update"):
    case ("UPDATE"):
    {
    return $this->UpdateParse($Result[2]);
    }
    break;

    case ("edit") :
    case ("Edit") :
    case ("EDIT") :
    {
    return $this->EditParse($Result[2]);
    }
    break;

    case("delete") :
    case("Delete") :
    case("DELETE") :
    {
    return $this->DeleteParse($Result[2]);
    }
    break;

    default : return FALSE;
    }
    }
    }
    }

    $DB = new DB();
    ?>

    Комментариев к данной новости нет

    Добавление комментария

    Ваше имя *
    Ваш e-mail
    Детранслитеризатор
    Смайлики
    Лимит знаков:
    .: Случайный Умняк :.
    Пришлите четыре крышечки от унитаза и вы получите бесплатный рулончик туалетной бумаги!
    .: Шаблон сайта :.

    .: Флудилка :.
    .: Это интересно :.
    .: Голосование :.
    Где/Как вы узнали о SetCMS ?
    Из поисковой системы
    Из баннерной рекламы
    Посоветовали знакомые
    Из обсуждений CMS на форумах
    Из сайтов с рейтингами CMS
    Из архивов скриптов
    Из другого источника...
      
    .: Календарь :.
    Сентябрь
    пнвтсрЧтптсбвс
        123
    45678910
    11121314151617
    18192021222324
    252627282930
    .: Баннеры :.
    XAP.ru - рекламная система с тройным эффектом - партнерская программа
    SetCMS

    Проголосуй за НАС !!!
    VoteGate.ru - Индикатор доверия.



    [ © SetCMS - Бесплатная портальная система БЕЗ MySQL | 2017 | WebMaster ]
    [Page generated in 0.189738 sec][Gzip: ON]