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

Форум PHP

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

 

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

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

тема: Вызов функции в кассе не работает
 
 автор: oliss   (29.03.2010 в 19:27)   письмо автору
 
 

<?
class connect 
{
    private static 
$q_count0;    // количество sql запросов #int
    # оболочка mysql_query
    
public function q_query($query) {
        
$this->result mysql_query($query$this->db);
        
$this->q_count++;
        return(
$this->result);
    }
    public function 
Wls(){ 
    
$q_sql $this->q_query("SELECT .. "); // не работает
    
}
    public function 
QueryCount() {return $this->q_count;}    
}

$mysql = new sql_connect();

$mysql->q_query("SELECT ..... "); // работает

function Wls()

    
$q_sql $mysql->q_query("SELECT .. "); // не работает
}
    
echo 
'sql запросов :'.$mysql->QueryCount();

  Ответить  
 
 автор: neadekvat   (29.03.2010 в 20:40)   письмо автору
 
   для: oliss   (29.03.2010 в 19:27)
 

А где у вас вызов функции Wls?

class connect
$mysql = new sql_connect();
И че-т я не догоняю..

  Ответить  
 
 автор: oliss   (29.03.2010 в 23:05)   письмо автору
 
   для: neadekvat   (29.03.2010 в 20:40)
 

Да ,сори ,это куски черновика правильно :
$mysql = new connect();

Как в классе правильно вызвать функцию?

  Ответить  
 
 автор: psychomc   (29.03.2010 в 23:16)   письмо автору
 
   для: oliss   (29.03.2010 в 23:05)
 

разве $this-> <имя функции> не работает?

  Ответить  
 
 автор: neadekvat   (29.03.2010 в 23:17)   письмо автору
 
   для: oliss   (29.03.2010 в 23:05)
 

$mysql->Wls(); - это из внешней части вместо фрагмента, где вы функцию создаете.
Для обращения изнутри класса - ответ выше.

Я считаю, вам следует задуматься над тем, зачем вы создаете этот класс. ООП ради ООП бессмысленно.

  Ответить  
 
 автор: oliss   (29.03.2010 в 23:24)   письмо автору
 
   для: neadekvat   (29.03.2010 в 23:17)
 

public function Wls(){ 
    $q_sql = $this->q_query("SELECT .

Да,эта часть не работает нет подсчёта обращения к бд
А то, что насчёт ооп - это просто эксперимент

  Ответить  
 
 автор: psychomc   (29.03.2010 в 23:22)   письмо автору
 
   для: oliss   (29.03.2010 в 19:27)
 

<?php
$mysql
->q_query("SELECT ..... "); // работает

Wls($mysql);

function 
Wls($obj)

    
$q_sql $obj->q_query("SELECT .. "); // так по идее должно работать

  Ответить  
 
 автор: neadekvat   (29.03.2010 в 23:26)   письмо автору
 
   для: psychomc   (29.03.2010 в 23:22)
 

Должно.
Но где обращение к функции, елки палки? Его нет не в исходном, ни в вашем коде.

  Ответить  
 
 автор: psychomc   (29.03.2010 в 23:32)   письмо автору
 
   для: neadekvat   (29.03.2010 в 23:26)
 

суть темы мало ясна, поэтому описал просто фрагмент где не работает.

а к функции...смотря к какой, к WLs например чуть выше

  Ответить  
 
 автор: oliss   (29.03.2010 в 23:34)   письмо автору
 
   для: neadekvat   (29.03.2010 в 23:26)
 

Отлично работает, но это внешний вызов функции (за пределами класса) , как сделать это-же внутри класса,
именно в функции (внутри класса)
public function Wls(){ 
    $q_sql = $this->q_query("SELECT .. "); // не работает
    } 

спасибо.

  Ответить  
 
 автор: psychomc   (29.03.2010 в 23:39)   письмо автору
 
   для: oliss   (29.03.2010 в 23:34)
 

вот здесь мне кажется как раз всё правильно
q_query принадлежит классу, ошибка скорее всего не в вызове, а в самой функции.
а если просто в ней написать например

<?php
public function q_query()
{
   echo 
"Я q_query";
}


неужели так не работает?

  Ответить  
 
 автор: oliss   (30.03.2010 в 00:05)   письмо автору
 
   для: psychomc   (29.03.2010 в 23:39)
 

Так работает ,естественно, ( функция q_query() рабочая ) ,но почему она не вызывается внутри функции public function Wls(){ } загадка за семью печатями (она[ public function q_query( ) ] должна подсчитать обращение К БД внутри public function Wls(){ } ,но этого не происходит

  Ответить  
 
 автор: neadekvat   (29.03.2010 в 23:53)   письмо автору
 
   для: oliss   (29.03.2010 в 23:34)
 

$this->Wls();

  Ответить  
 
 автор: oliss   (30.03.2010 в 00:10)   письмо автору
 
   для: neadekvat   (29.03.2010 в 23:53)
 

Не пошло ,сейчас попробую слепить код из кусков
<?
class connect 
{
    
# Установки соединения с базой данных
        
private $db_host ='';
        private 
$db_user ='';
        private 
$db_pass =''
        private 
$db_name ='';
    
        private 
$db NULL;         // дескриптор соединения 
        
private static $q_count0// количество sql запросов 
        
    
public function __construct()
    {
        
$this->db =mysql_connect$this->db_host$this->db_user,$this->db_passFALSE); 
        
mysql_query("SET NAMES 'utf8'",$this->db); 
        
mysql_select_db($this->db_name,$this->db); 
        return 
TRUE;
    }
    
# оболочка mysql_query
    
public function q_query($query
    {
        
$this->result mysql_query($query$this->db);
        
$this->q_count++;
        
//++$this->q_count;
        
return($this->result);
    }
    
    public function 
Wls()
    { 
        
$q_sql $this->q_query("SELECT * FROM `img` "); // не считает к-во запросов
    
}
    
        public function 
QueryCount() {return $this->q_count;} 
              
        public function   
db_close() {return mysql_close($this->db);}
        public function 
__destruct() {$this->db_close();}     
}

$mysql = new connect();

$mysql->q_query("SELECT * FROM `img` "); // работает
echo 'sql запросов :'.$mysql->QueryCount().'<br />'// 1--> Должно быть 2 запроса 

  Ответить  
 
 автор: Trianon   (29.03.2010 в 23:37)   письмо автору
 
   для: oliss   (29.03.2010 в 19:27)
 

>
function Wls()

    $q_sql = $mysql->q_query("SELECT .. "); // не работает
}


$mysql - в контексте функции неопределенная переменная. А у Вас заблокированы нотайсы.
Ну не фу?

  Ответить  
 
 автор: oliss   (29.03.2010 в 23:50)   письмо автору
 
   для: Trianon   (29.03.2010 в 23:37)
 

Нет это святое
error_reporting(E_ALL);
ошибок не выдаёт

  Ответить  
 
 автор: neadekvat   (29.03.2010 в 23:52)   письмо автору
 
   для: oliss   (29.03.2010 в 23:50)
 

Вот! Я же говорю, что к функции нигде не идет обращение.

  Ответить  
 
 автор: Trianon   (30.03.2010 в 00:41)   письмо автору
 
   для: oliss   (29.03.2010 в 23:50)
 

E_ALL|E_NOTICE

  Ответить  
Rambler's Top100
вверх

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