Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вопросы по подключению и выводу через классы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
VoVladey
Отправлено: 22 Августа, 2013 - 22:44:42
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




Добрался до классов.

Почитал в сети. Сотворил такое:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. class DB {
  5.  
  6.    protected $db_name = "name";
  7.    protected $db_user = "user";
  8.    protected $db_pass = "pass";
  9.    protected $db_host = "localhost";
  10.    
  11.  
  12.     public function connect() {
  13.         $db=mysql_connect($this->db_host,$this->db_user,$this->db_pass);
  14.         mysql_select_db($this->db_name,$db);
  15.         return $db;
  16.     }
  17.  
  18.  
  19. function select($what, $from)
  20. {
  21. $this->connect();
  22.     $result = mysql_query ("
  23.    SELECT ".$what." FROM ".$from);
  24.     if (!$result)
  25.     {
  26.         echo 'Борода!';
  27.         exit(mysql_error());
  28.     } else {
  29.         return $result;
  30.         }
  31.    
  32. }
  33. }
  34. ?>
  35.  


Дальше так:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?PHP
  4. $db = new DB();
  5. $a=$db->check_id('id', 'user');
  6.         while($res =  mysql_fetch_assoc($a)) {
  7.         echo $res['id']."<br>";
  8.         }
  9. ?>
  10.  


1. Вопрос насколько это правильно?

2. Вопрос нужно ли в каждую функцию класса запихивать $this->connect(); или можно как-то автоподключать)

ну и третий вопрос:
т.к. классов у меня будет несколько может есть какой то вариант подключения к базе сразу для всех классов (может отдельный класс) и если есть то как это должно выглядеть? например: $класс_подключения->$класс_исполнения->$функция().

Заранее благодарю за ответы на глупые вопросы. Буду рад любой помощи, кроме посылания на google
 
 Top
DelphinPRO
Отправлено: 22 Августа, 2013 - 23:06:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




VoVladey пишет:
1. Вопрос насколько это правильно?

на 0%
VoVladey пишет:
2. Вопрос нужно ли в каждую функцию класса запихивать $this->connect();

не нужно
VoVladey пишет:
или можно как-то автоподключать)

используя уставревший mysql необязательно передавать ресурс подключения в другие функции.

VoVladey пишет:
ну и третий вопрос:
т.к. классов у меня будет несколько может есть какой то вариант подключения к базе сразу для всех классов (может отдельный класс)

Делайте свой класс DB синглтоном.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
VoVladey
Отправлено: 22 Августа, 2013 - 23:18:22
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




DelphinPRO

Как правильно написано у Вас в подписи: "Чем больше узнаю, тем больше я не знаю."

Просветите, если не сложно, как это должно правильно работать если например есть класс подключения:
PHP:
скопировать код в буфер обмена
  1.  
  2. class DB {
  3.  
  4.    protected $db_name = "name";
  5.    protected $db_user = "user";
  6.    protected $db_pass = "pass";
  7.    protected $db_host = "localhost";
  8.    
  9.  
  10.     public function connect() {
  11.         $db=mysql_connect($this->db_host,$this->db_user,$this->db_pass);
  12.         mysql_select_db($this->db_name,$db);
  13.         return $db;
  14.     }
  15. }
  16.  


и соответственно класс выборки:
PHP:
скопировать код в буфер обмена
  1.  
  2. class SELECT {
  3. function select($what, $from)
  4. {
  5. $this->connect();
  6.     $result = mysql_query ("
  7.   SELECT ".$what." FROM ".$from);
  8.     if (!$result)
  9.     {
  10.         echo 'Борода!';
  11.         exit(mysql_error());
  12.     } else {
  13.         return $result;
  14.         }
  15.    
  16. }
  17. }
  18.  


и как это все должно выводиться, я так понимаю что вот это совсем НЕправильно:
PHP:
скопировать код в буфер обмена
  1.  
  2. $db = new DB();
  3. $select= new SELECT();
  4. $a=$db->$select->check_id('id', 'user');
  5.         while($res =  mysql_fetch_assoc($a)) {
  6.         echo $res['id']."<br>";
  7.         }
  8.  
 
 Top
caballero
Отправлено: 22 Августа, 2013 - 23:25:34
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Вообще неправильно ( потому как бессмысленно) городить свои классы для работы с БД


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
DelphinPRO
Отправлено: 22 Августа, 2013 - 23:37:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Как-то так.

PHP:
скопировать код в буфер обмена
  1. class DB {
  2.  
  3.         protected $db_name = "name";
  4.         protected $db_user = "user";
  5.         protected $db_pass = "pass";
  6.         protected $db_host = "localhost";
  7.  
  8.         private static $instance;
  9.        
  10.         public static function getInstance(){
  11.                 if (is_null(self::$instance)) {
  12.                         self::$instance = new self();
  13.                 }
  14.                 return self::$instance;
  15.         }
  16.        
  17.         private function __construct() {
  18.                 mysql_connect($this->db_host,$this->db_user,$this->db_pass);
  19.                 mysql_select_db($this->db_name,$db);
  20.         }
  21.  
  22.         public function select($what, $from) {
  23.                 $result = mysql_query ("SELECT ".$what." FROM ".$from);
  24.                 if (!$result) {
  25.                         echo 'Борода!';
  26.                         exit(mysql_error());
  27.                 } else {
  28.                         return $result;
  29.                 }
  30.         }
  31. }
  32.  
  33. $resource = DB::getInstance()->select('id', 'user');
  34. while($row = mysql_fetch_assoc($resource)) {
  35.         echo $row['id'] . "<br>";
  36. }


Но исключительно в целях обучения работы с объектами.
Согласен с caballero - для реального использования возьмите готовые классы из стандартной поставки php: mysqli или PDO.

(Отредактировано автором: 22 Августа, 2013 - 23:37:48)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
VoVladey
Отправлено: 22 Августа, 2013 - 23:38:37
Post Id


Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




caballero

А какие Ваши предложения?

Если мне в разных ситуациях нужно скажем получать данные по одному и тому же шаблону запроса но с разными значениями.
Например: получить
1. id из таблицы users
2. id из таблицы msg
3. id из таблицы city
3. id из таблицы help
(Добавление)
DelphinPRO

Спасибо большое буду пытаться вникнуть. Может я вообще не в ту степь начал понимать. Я первый день с классами начал знакомиться)

Может быть подскажете где почитать про готовые классы mysqli или PDO с примерами и доступным описанием.
(Добавление)
DelphinPRO, caballero

Ан, нет, уже нашел)
спасибо что заблаговременно сориентировали) не туда я копать начал)
все таки хорошие люди на это форуме обитают.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB