|
|
|
| Привет. В процедурном я делал так:
$sql = mysql_query("SELECT COUNT(*) FROM table",$db);
$result = mysql_fetch_array($sql);
$sum = $result[0];
echo $sum;
|
Сейчас делаю посредством ООП и не получается. В модели запрос:
class Model extends Db {
function return_sum() {
$sql = "SELECT COUNT(*) FROM table" ;
$result = $this->sql($sql) ;
return $result ;
}
}
|
в контроллере хочу вывести переменную:
class Controller extends Model {
function print_sum() {
$result = $this->return_sum() ;
$page = mysql_fetch_array($result) ;
$sum = $page[0];
return $sum;
}
}
|
Что надо добавить в контроллер, чтобы в видах вывести:
Заранее спасибо. | |
|
|
|
|
|
|
|
для: hejioshin
(15.09.2011 в 12:08)
| | Непонятно, несколько вещей:
1) Что возвращает метод sql()? Дескриптор результирующей таблицы?
2) Если ответ на предыдущий вопрос положительный, зачем метод return_sum() возвращает дескриптор вместо того, чтобы вернуть то, что от него требуется - количество строк?
<?php
class Model extends Db {
function return_sum() {
$sql = "SELECT COUNT(*) FROM table" ;
$result = $this->sql($sql) ;
return mysql_result($result);
}
}
?>
| Кроме того, если уж создаете обертку для mysql-функций, делайте это до конца, чтобы пользователю вашего класса не пришлось делать двойную работу вместо одной: изучать и mysql и ваши функции. Когда вводятся обертки, делается так, чтобы логика оборачиваемых функций вообще не участвовала в логике обертки. Это конечно, может привести к потери производительности, поэтому пусть sql() останется, однако, лучше ввести еще sql_result(), sql_row(), которые бы возвращали одно значение и массив. Тогда бы ваш метод сразу бы возвращал число
<?php
class Model extends Db {
function return_sum() {
$sql = "SELECT COUNT(*) FROM table" ;
return $this->sql_result($sql) ;
}
}
?>
|
PS ООП, он не для того, чтобы кода и работы было больше, он создавался для обратных целей. | |
|
|
|
|
|
|
|
для: cheops
(15.09.2011 в 12:29)
| | Спасибо. А что мне тогда выводить в контроллере?
<?php class Sum extends Model {
function print_sum() {
???
}
} ?>
|
Что подставлять под echo?
| |
|
|
|
|
|
|
|
для: hejioshin
(15.09.2011 в 12:42)
| | Тут будут просто вызовы методов
<?php class Sum extends Model {
function print_sum() {
retrun $this->return_sum();
}
} ?>
| В echo нужно тоже подставить вызов метода, если это вывод внутри класса, то
<?php echo $this->return_sum(); ?>
| Если дело происходит вне класса, то вместо $this будет название объекта. | |
|
|
|