Здесь курят мануал.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 25 Май, 2012, 05:26:40

Страниц: [1] 2 3 ... 5
Печать
Автор Тема: class sql  (Прочитано 901 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sweet15w    ↓ 
27 Октябрь, 2011, 02:37:11
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 104
Сила слова: -0.96

начало:
 
PHP
    class SQL {
 
        static $sql_id = 0;
 
        protected $sql_host;
        protected $sql_user;
        protected $sql_password;
        protected $sql_database;
 
        function __construct() {
 
            if( SQL::$sql_id == 0 ) {
                $this->set_sql_parametrs();
                SQL::$sql_id = mysql_connect($this->sql_host,$this->sql_user,$this->sql_password) or die ("can't connect to mysql");
                mysql_query("create database $this->sql_database");
                mysql_select_db($this->sql_database) or die ("can't select database");
                date_default_timezone_set("Europe/Moscow") or die ("can't set default timesone");
            }
        }
 
        function __destruct() {
            if( SQL::$sql_id != 0 ){
                mysql_close( SQL::$sql_id );
                SQL::$sql_id = 0;
            }
        }
 
        function set_sql_parametrs() {    /* метод установки параметров соединения */
            $this->sql_host="localhost";
            $this->sql_user="root";
            $this->sql_password="";
            $this->sql_database="wwwoopru";
        }
    }

пока все нормом идет?? )
 
особенности:
 
в конструкторе при создании объекта проверяется, было ли установлено соединение ранее, если не было, то устанавливается, затем вызывается метод установки параметров соединения
параметры соединения должны браться из файла конфига (пока жестко присвоил)
деструктор проверяет было ли разорвано соединение, если не было, то разрывает его
 
ваши предложения, поправки, пожелания?
 
p.s. не орем, пожалуйста про sqli, pdo и т.п. эти все рукожопства придуманы для ознакомления... практики
Записан

отвечаю не в тему... за то редко...
phpdude    ↓ 
27 Октябрь, 2011, 03:18:27 , спустя 41 минуту 16 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: 20790
Сила слова: 1.66

хуйня
Спустя 46 секунд добавил
хотя бы потому что настрйоки конекта к базе должны браться из конфигов а в класс передаваться а не хардкорно записаны в классе. чтобы поменять настройки мне чо - надо твой класс унаследовать и переопределить параметры соединения? xDDDDDDDDDDD
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
arvitaly    ↓ 
27 Октябрь, 2011, 04:16:52 , спустя 58 минут 25 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 5
Сообщений: 282
Сила слова: 1.77

SQL::$sql_id = mysql_connect($this->sql_host,$this->sql_user,$this->sql_password) or die ("can't connect to mysql");
 

ужссссс, изучайте исключения
Спустя 1 минуту 9 секунд добавил
ахахах
 
каким боком date_default_timezone_set("Europe/Moscow") в классе SQL
Записан

master    ↓ 
27 Октябрь, 2011, 04:26:08 , спустя 9 минут 16 секунд
НЕ ХУЕТА! ХУЕТА!

Квадратов сколько видишь ты?
Группа: Джедаи

Карма: 44
Сообщений: 2080
Сила слова: 2.12

пока что хуйня, самая мякотка которой в том, что когда ты начнёшь использовать класс ты сам будешь по полчаса втыкать "блять, как его использовать-то?".
напиши сначала пример использования своего класса, а потом по интерфейсу напишешь начинку
Записан

Ivan    ↓ 
27 Октябрь, 2011, 07:20:48 , спустя 2 часа 54 минуты 40 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98

>parametrs
parametres (правило обозначения множественных чисел в англ. языке)
Записан

master    ↓ 
27 Октябрь, 2011, 07:56:18 , спустя 35 минут 30 секунд
НЕ ХУЕТА! ХУЕТА!

Квадратов сколько видишь ты?
Группа: Джедаи

Карма: 44
Сообщений: 2080
Сила слова: 2.12

params
Записан

Абырвалг    ↓ 
27 Октябрь, 2011, 08:10:18 , спустя 14 минут
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31


>parametrs
parametres (правило обозначения множественных чисел в англ. языке)
ву-ха-ха, а вот и хуй. parameters
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
Ivan    ↓ 
27 Октябрь, 2011, 09:32:16 , спустя 1 час 21 минуту 58 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98

Вот я нуб! Пошёл учить английский
Записан

Faster    ↓ 
28 Октябрь, 2011, 01:38:11 , спустя 4 часа 5 минут 55 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 10
Сообщений: 954
Сила слова: 1.05

presets
Записан

воспитываю дочь. С домами и деревьями  - не приставать.
phpdude    ↓ 
28 Октябрь, 2011, 01:50:42 , спустя 12 минут 31 секунду
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

/* метод установки параметров соединения */

 
ну вы и школота :-)
 
setupConnectionDetails()
 
должна такая хуйня называться если она есть. Но ее там быть не должно, это вообще хуйня тогда а не класс если такая хуйня там есть :)
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Kikky    ↓ 
28 Октябрь, 2011, 01:37:36 , спустя 11 часов 46 минут 54 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: 2
Сообщений: 175
Сила слова: 1.14

sweet15w, почитай Макконнелла - Совершенный код, а конкретно главы про АТД и классы
Записан

Уроки по PHP и не только!
Strate    ↓ 
29 Октябрь, 2011, 11:39:24 , спустя 1 день 10 часов 1 минуту 48 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 1
Сообщений: 12
Сила слова: 8.33

Хуйня потому что mysql_* Есть же как минимум mysqli
Спустя 54 секунды добавил
И да, почему идентификатор соединения с базой - статика? А если мне надо 2 коннекта, чё делать?
Спустя 13 секунд добавил
И вообще: http://pyha.ru/go/godb/
Записан
sweet15w    ↓ 
01 Ноябрь, 2011, 11:49:40 , спустя 2 дня 12 часов 10 минут 16 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 104
Сила слова: -0.96

phpdude, написано ведь:
параметры соединения должны браться из файла конфига (пока жестко присвоил)

Ivan, http://www.translate.ru/ параметры (рус) = parameters (eng)
 
master, пример использования: класс при выборке должен возвращать двумерный ассоциативный массив (писал функцию когда то аналогичную без ООП)
выглядеть будет как-то так:
 
Text

$db=new SQL();
$db->
 
/*выборка из базы и вывод на экран*/
$menu=$db->q_select("select id, name from page order by id");
for( $i=0;$i<count($menu);$i++ ) {
  echo $menu[$i]['id']." - ".$menu[$i]['name'];
}
 
/*удаление из базы | возвращает количество удаленных записей*/
$result=$db->q_delete("delete * from page");
 
/*обновление базы | возвращает количество обновленных записей*/
$result=$db->q_update("update page set name='".test."' where id>'5'");
 
 

 
arvitaly,
каким боком date_default_timezone_set("Europe/Moscow") в классе SQL
да это запись из конфига была просто автоматом скопирована...
 
arvitaly, а что исключать... если база не выбралась... или нет коннекта... данных так и так не будет никаких...
 

setupConnectionDetails()
parametrs
params
parametres
да суть то не в том как какой метод или свойство называется... а то, как оно не правильно работает...
 
И да, почему идентификатор соединения с базой - статика? А если мне надо 2 коннекта, чё делать? [/qote] ну для начала мне бы хоть с одним соединением разобраться хочется... а уж дальше плясать от этого...
 
Хуйня потому что mysql_* Есть же как минимум mysqli
у Вас весомые аргументы... а есть сервера, которые не поддерживают sqli и т.п.?? и вообще
p.s. не орем, пожалуйста про sqli, pdo и т.п. эти все рукожопства придуманы для ознакомления... практики
Записан

отвечаю не в тему... за то редко...
sweet15w    ↓ 
01 Ноябрь, 2011, 02:11:20 , спустя 2 часа 21 минуту 40 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: -1
Сообщений: 104
Сила слова: -0.96

файл config
PHP
<?php
    $config=array(
        'sql_host' => 'localhost',
        'sql_user' => 'root',
        'sql_password' => '',
        'sql_database' => 'wwwoopru',
        'sql_charset' => 'cp1251',
    );
?>

PHP
<?php
    /**
        класс для работы с базой данных mysql
    **/

    class SQL {
 

        /**
            статическая переменная для идентификации текущего соединения
        **/

        static $sql_id = 0;
 
        protected $sql_host;
        protected $sql_user;
        protected $sql_password;
        protected $sql_database;
        public $sql_charset;
 

        /**
            конструктор класса
        **/

        function __construct() {
 
            if( SQL::$sql_id == 0 ) {
                require_once "../cfg/config.php";
                $this->sql_params_set( $config );
                SQL::$sql_id = mysql_connect( $this->sql_host, $this->sql_user, $this->sql_password );
                $this->sql_database_create( $this->sql_database );
                $this->sql_database_set( $this->sql_database );
                $this->sql_charset_set( $this->sql_charset );
            }
        }
 

        /**
            деструктор класса
        **/

        function __destruct() {
            if( SQL::$sql_id != 0 ){
                mysql_close( SQL::$sql_id );
                SQL::$sql_id = 0;
                unset( $config );
            }
        }
 

        /**
            установка параметров из файла конфига
        **/

        function sql_params_set( $config ) {
            $this->sql_host=$config["sql_host"];
            $this->sql_user=$config["sql_user"];
            $this->sql_password=$config["sql_password"];
            $this->sql_database=$config["sql_database"];
            $this->sql_charset=$config["sql_charset"];
        }
 

        /**
            установка кодировки по умолчанию для текущего соединения
        **/

        function sql_charset_set( $sql_charset ) {
            mysql_query("set names ".$sql_charset);
            mysql_query("set @@character_set_client='".$sql_charset."'");
        }
 

        /**
            выбор базы данных для текущего соединения
        **/

        function sql_database_set( $sql_database ) {
            mysql_select_db( $sql_database );
        }
 

        /**
            создание базы данных для текущего соединения
        **/

        function sql_database_create( $sql_database ) {
            mysql_query( "create database if not exists '".$sql_database."'" );
        }
 

        /**
            выборка из базы данных, возвращается двумерный ассоциативного массива
        **/

        function query_select( $sql_query ) {
 
            /** в разработке...еще нужно возвращать двумерный ассоциативный массив **/
 
            return array(
                'result' => 0,
                'error' => '',
                'count => 0,'
            );
 
            /**
                возвращает array(
                    'result' - неудачное / успешное выполнение запроса,
                    'error' - при неудачном выполнении возвращает код ошибки с описанием,
                    'count' - количество выбранных записей,
                )
            **/

        }
 

        /**
            удаление из базы данных, возвращается число удаленных строк
        **/

        function query_delete( $sql_query ) {
 
            /** в разработке... **/
 
            return array(
                'result' => 0,
                'error' => '',
                'count => 0,'
            );
 
                /**
                    возвращает array(
                        'result' - неудачное / успешное выполнение запроса,
                        'error' - при неудачном выполнении возвращает код ошибки с описанием,
                        'count' - количество удаленных записей,
                    )
                **/

        }
 

        /**
            изменение базы данных, возвращается число измененных строк
        **/

        function query_update( $sql_query ) {
 
            /** в разработке... **/
 
            return array(
                'result' => 0,
                'error' => '',
                'count => 0,'
            );
 
                /**
                    возвращает array(
                        'result' - неудачное / успешное выполнение запроса,
                        'error' - при неудачном выполнении возвращает код ошибки с описанием,
                        'count' - количество измененных записей,
                    )
                **/

        }
 

        /**
            добавление в базу данных, возвращается число добавленных строк
        **/

        function query_insert( $sql_query ) {
            if( !mysql_query( $sql_query ) ) {
                /* неудачное выполнение запроса */
                return array(
                    'result' => 0,
                    'error' => "MYSQL ERROR #".mysql_errno().": ".mysql_error(),
                    'count' => 0,
                );
            } else {
                /* успешное выполнение запроса */
                return array(
                    'result' => 1,
                    'error' => "",
                    'count' => 1,
                );
 
                /**
                    возвращает array(
                        'result' - неудачное / успешное выполнение запроса,
                        'error' - при неудачном выполнении возвращает код ошибки с описанием,
                        'count' - количество выполненых записей (на будущее, для мультизапросов),
                    )
                **/

            }
        }
    }
?>
Записан

отвечаю не в тему... за то редко...
Nyaah    ↓ 
01 Ноябрь, 2011, 03:50:11 , спустя 1 час 38 минут 51 секунду
НЕ ХУЕТА! ХУЕТА!

Группа: Джедаи

Карма: 34
Сообщений: 522
Сила слова: 6.51

и чем оно удобнее, чем PDO, к примеру? За исключением того, что у тебя нихуя не эскейпируется, для каждого типа запросов придётся вызывать свой метод, кодировка соединения устанавливается хз как, в случае возникновения ошибки, найти её можно хер знает где, ну и т.д.
Записан

Work, buy, consume, die
Страниц: [1] 2 3 ... 5
Печать
 

Перейти в:  

Этот топик скрыли: NRG, adw0rd, Sinkler, artoodetoo, mario