Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: bdlink из функции
 
 автор: tricket   (09.08.2007 в 18:49)   письмо автору
 
 

есть класс

#####################################################
#stalxed lib. version 0.1                           #
#                         POWERED BY st@l][ED       #
#___________________________________________________#
#                  Просто помню в малолетке занятия,#
#                  Просто знаю кто где есть и где я!#
#             Да просто в жизни у воров есть понятия#
#                   Точно также как в законе статья.#
#####################################################
class project{
       var $settings = array(
           'server'         => 'localhost',                            
        'login'             => 'root',                            
        'pass'            => '',                                      
        'bdname'        => 'project',
        'limit'            => '100',                                
       );
.............................................
       function project(){
         $server = $this->settings['server'];
         $login= $this->settings['login'];
         $pass = $this->settings['pass'];
         $bdname = $this->settings['bdname'];
         $bdlink=mysql_connect($server, $login, $pass) or die ("Ошибка соединения с базой данных<br><br>Ошибка: ".mysql_error());
   ............................................
         return $bdlink;
       }
     
function error_bd(){
     if(mysql_query("CREATE TABLE `words_auto1x` (
         `id` int(255) NOT NULL auto_increment,
         `word` varchar(255) character set cp1251 collate cp1251_bin NOT NULL,
         `prosmotrov` int(255) NOT NULL,
         `date` datetime NOT NULL,
          PRIMARY KEY  (`id`)
          ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ;
         ")){echo '1';} else {echo '0';}
         #а дальше ошибка!!! естественно переменной $dblink нет! теперь вопрос на кого ссылаться  нам? 
         echo mysql_error($bdlink);
}

   
 
 автор: Trianon   (09.08.2007 в 19:35)   письмо автору
 
   для: tricket   (09.08.2007 в 18:49)
 

как-то странно у Вас конструктор устроен.
Значение возвращает.
К тому же тип этого значения никакого отношения к классу не имеет.
Сохраняйте идентификатор соединения в поле класса - потом пользуйтесь.

   
 
 автор: tricket   (09.08.2007 в 20:02)   письмо автору
 
   для: Trianon   (09.08.2007 в 19:35)
 

<Значение возвращает.
это так тестовый вариант...
<Сохраняйте идентификатор соединения в поле класса - потом пользуйтесь.
я новичок в ООП. не подкинишь код как это сделать?

   
 
 автор: cheops   (10.08.2007 в 10:43)   письмо автору
 
   для: tricket   (09.08.2007 в 18:49)
 

$bdlink остаётся в конструкторе и не доступен в других частях класса, так как это локальная переменная. Если хотите организовать динамический член класса, следует обращаться к нему через префикс $this->
<?php
  
...
  
$this->bdlink=mysql_connect($server$login$pass)
  or die (
"Ошибка соединения с базой данных<br><br>Ошибка: ".mysql_error());
  ...
?>

Соответственно в методе error_bd() обращение к динамическому члену также должно происходить через $this->
<?php
  
...
  echo 
mysql_error($this->bdlink);
  ...
?>

   
 
 автор: tricket   (10.08.2007 в 11:51)   письмо автору
 
   для: cheops   (10.08.2007 в 10:43)
 

хм понял! спасибо! но возник ещё вопрос!
что будет если у нас например объявлена переменная $bdlink

class project{
       var $settings = array(
           'server'         => 'localhost',                                 // сервер БД
        'login'             => 'root',                                     // имя пользователя
        'pass'            => '',                                         // пароль БД
        'bdname'        => 'parserya',
        'limit'            => '100',                                 // имя БД
       );
       var $bdlink=null;

а потом мы её используем..

function project(){
#вырезанно...
$this->bdlink=mysql_connect($server, $login, $pass) or die ("Ошибка соединения с базой данных<br><br>Ошибка: ".mysql_error());
#вырезанно

а дальше создадим функцию

function bdlink(){
echo "что будет?!";
}

   
 
 автор: cheops   (10.08.2007 в 14:15)   письмо автору
 
   для: tricket   (10.08.2007 в 11:51)
 

Ничего страшного не произойдёт - имена функций и переменных не пересекаются.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования