Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс для работы с базой, Обсуждаем, делаем... 
V
    Опции темы
Mal Hack
Дата 20.6.2005, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



IZ@TOP
а ты уверен что все СУБД воспримут ANCI'99 на 100%
Добавлено @ 22:57
Цитата(PHP @ 20.6.2005, 23:54)
Лучше имхо использовать САМЫЕ новые технологии и самые новые разработки. Проэкт мы ведь делаем на будущее а не на прошлое smile

Нельзя так делать, т.к. нет уверенности что эти техгнологии приживуться.. Надо использовать то, что уже хоть как-то юзается
PM ICQ   Вверх
Wowa
Дата 20.6.2005, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(IZ @ 20.6.2005, 21:45)
К примеру с Euorohoster.net?

Конечно можно.
PM WWW   Вверх
Рыжий
Дата 20.6.2005, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: нет
Всего: 20



Mal Hack
Конечно же технологии всегда нужно использовать в меру, но все таки баналные php5 xml+xsl+xslt - это просто обязанность. А мы должны шагнуть еще дальше и перепюнуть все (ведь мы этого хотим?)
PM MAIL ICQ   Вверх
IZ@TOP
Дата 20.6.2005, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: нет
Всего: 73



С хостингом мы уже решили.
Добавлено @ 23:40
Цитата(PHP @ 21.6.2005, 00:39)
Конечно же технологии всегда нужно использовать в меру, но все таки баналные php5 xml+xsl+xslt - это просто обязанность. А мы должны шагнуть еще дальше и перепюнуть все (ведь мы этого хотим?)

переплюнуть то конечно можно, но здесь по большей части стоит вопрос в рациональности.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Gold Dragon
Дата 21.6.2005, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



Цитата(PHP @ 20.6.2005, 23:39)
А мы должны шагнуть еще дальше и перепюнуть все (ведь мы этого хотим?)

Шагать лучше не дальше, а вногу. Так что создавать CMS на современных тенденциях не гуманно, а вдруг стандарты не пойдут дальше развиваться или так и остануться не востребованными. Да и срок их внедрения очень примерный


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Рыжий
Дата 21.6.2005, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: нет
Всего: 20



Red Dragon
Тогда шагаем в ногу! smile
PM MAIL ICQ   Вверх
IZ@TOP
Дата 21.6.2005, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: нет
Всего: 73



Ну если уж на то пошло, то можно использовать такие технологии как XForms. Очень классная штука кстати, правда широкого распространения пока не получила, но АВТОВАЗ уже применяет ее в своих корпоративных решениях.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 21.6.2005, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Везде подвели итоги вроде, подведем и тут. PDO имхо самое лучше по производительности и в меру с развитием технологий.
PM MAIL Skype   Вверх
Opik
Дата 22.6.2005, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



PDO можно ставить и на 5.0.4 так что решено - PDO
PM MAIL Skype   Вверх
DemoCode
Дата 29.11.2005, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 890
Регистрация: 20.10.2005
Где: Россия

Репутация: нет
Всего: 41



Цитата(Pegas @ 18.6.2005, 20:12)
Проще говоря можно будет использользовать непосредственно несколько различных БД для хранения данных


Для этих целей, я обычно пользуюсь классом adodb - очень удобный ИМХО.
Вот ссылка: http://adodb.sourceforge.net/#download

Цитата
В настоящее время поддерживается работа с базами MySQL, Oracle, Microsoft SQL Server, Sybase, Sybase SQL Anywhere, Informix, PostgreSQL, FrontBase, SQLite, Interbase (Firebird and Borland variants), Foxpro, Access, ADO, DB2, SAP DB и ODBC.


Цитата
Легок в изучении для Windows-программистов, поскольку использует синтаксис близкий к Microsoft ADO.
В отличие от других PHP классов, которые в основном фокусируются только на SELECT-запросах, мы обращаем внимание также на команды вставки (INSERT) и изменения (UPDATE) данных, которые очень быстро могут модернизироваться под потребности различных баз данных. Также существуют методы для обработки дат, конкатенации строк и экранирования строк по правилам различных баз данных.
Система мето-типов построена так, чтоб вы могли быть уверенными, что сохраняемые вами данные, например CHAR, TEXT, STRING, будут одинаковыми для всех баз данных.
Легкая переносимость, потому что все низкоуровневые функции вынесены отдельно и вам нет необходимости вносить изменения в ядро класса.
Переносимость на уровне создания таблиц и индексов.
Контроль работы базы данных и тонкая настройка производительности.
Поддержка сессии на уровне базы данных, поддержка истечения времени сессии и уведомлений.


Меня не разу не подводил этот класс. Может и вам пригодится.




--------------------
Жить стало лучше, жить стало веселей
© И.В. Сталин 
PM MAIL ICQ   Вверх
dm9
Дата 1.6.2006, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: нет
Всего: 137



Я понимаю, что тема старая, но вставлю всё же своё мнение - может, кого натолкнёт на умные мысли.

Единственный реально продуманный класс для работы с БД, который я видел - PEAR'овский. Он тяжёлый, конечно, но никто не заставляет использовать именно его - можно взять оттуда часть идей и реализовать их самостоятельно.

Все вышеперечисленные классы (включая PDO) не содержат всего того, что реально часто используется и может быть сокращёно с вызова двух-трёх методов до одного.

Например, это
mixed GetValue(string $query) - выбирает первую ячейку первого столбца.
mixed GetRow(string $query) - выбирает первую строку.
boolean RowExists(string $query) - смотрит, выдаёт ли запрос хотя бы одну строку.

Мелочи, но насколько они могут облегчить жизнь...
 
PM MAIL ICQ   Вверх
Opik
Дата 3.6.2006, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



dm9
string PDOStatement::fetchColumn ( [int column_number] )
Returns a single column from the next row of a result set. 

PDOStatement::nextRowset --  Advances to the next rowset in a multi-rowset statement handle 

Это насчет PDO.
Который меня устраивает на все 100. 
PM MAIL Skype   Вверх
m1m1n0
Дата 9.7.2006, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.7.2006

Репутация: нет
Всего: нет



Цитата(Opik @ 3.6.2006,  00:39)
Это насчет PDO.
Который меня устраивает на все 100.

Меня тоже устраивало, но не нашел аналога метода mysql_num_rows
Если есть такой, подскажите плз... 
PM MAIL   Вверх
Vaulter
Дата 21.7.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



давайте начнем сначала,
какой должен быть класс?
я так вижу ситуацию, что необходим список функций с четкими аргументами (в смысле.. задокументированными), на котором (списке) будут формироватся уровень
и так
__construct (?)
connect (выбирать сразу БД?)
selectRow($tablename, $tail);
selectCell(%tablename,$query);
selectList($tablename,$query);// выбирает сразу в массив

query($query);//основная фун-я запроса, возврат и все дела с сохранением всякой лабуды, типа ошибок, русурса, или кол-ва записей....... хотя. нах

fetch()
fetchCell() к примеру
free()

report - вот приблуда:
Код


/*----------------------------------------
        report - return report of some query with templates
        params - array of parametrs
    ----------------------------------------*/
    function report($query, $page, & $ttable,& $trow,$tempty="<p>ничего нет</p>",
    $params = array("onpage" => 100, "pagingurl" => "?page=%d" ,/* in format ?mod=some&mode=list&page=%d sprintf */
        "itemvar" => "item",    "reportvar" => "items",        "pagingvar" => "paging", "callback" => null, "pagertype" => "window" ,"pagelinks"=>15 ))
    {//check params array
        if(empty($params['onpage']) || !is_numeric($params['onpage'])) $params['onpage'] = 100;
        if(empty($params['pagelinks']) || !is_numeric($params['pagelinks'])) $params['pagelinks'] =15;//in row//only for window or slider (<prev 1 2 3 4 5 next>)
        if(empty($params['pagingurl'])) $params['pagingurl'] = "?page=%d";
        if(empty($params['itemvar'])) $params['itemvar'] = "item";
        if(empty($params['reportvar'])) $params['reportvar'] = "items";
        if(empty($params['pagingvar'])) $params['pagingvar'] = "paging";
        if(empty($params['pagertype'])) $params['pagertype'] = "window";//can be continuos or simple, complex TODO
        
        
        $tquery = preg_replace("/SELECT\s+(.*)\s+FROM/is","SELECT COUNT(*) FROM",$query);
        $totalitems = $this->selectCell($tquery);

        //------------------------------------------
        //paging CUT :) too huge
        //------------------------------------------

        $itemvar = $params['itemvar'];
        $reportvar = $params['reportvar'];
        $ritems = $this->_query($query);
        if($ritems && $this->_count($ritems))
        {//do report
            while($$itemvar = $this->fetch($ritems))
            {
                if(!empty($params['callback'])) $params['callback']($$itemvar);
                @eval("\$$reportvar .= \"".$trow."\";");
            }
            @eval("\$ret = \"".$ttable."\";");
        }
        else
        {//empty 
            eval("\$ret = \"".$tempty."\";");
        }
        return $ret;
    }


Добавлено @ 15:19 
собственно... тут ктонить есть? smile 


--------------------
PM MAIL WWW ICQ   Вверх
Sardar
Дата 21.7.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Цитата(Vaulter @  21.7.2006,  14:18 Найти цитируемый пост)
собственно... тут ктонить есть?

Vaulter, а зачем это всё? Есть PEAR:DB, Adodb для PHP4/5 и PDO для PHP5. Свой слой абстракции это лишнее, ИМХО.
 


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Vingrad CMS | Следующая тема »


 




[ Время генерации скрипта: 0.0946 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.