[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ООП, наследование и вообще как сделать...
Krevedko
Не могу разобраться что-то никак. Есть два класса, один наследует другой. У обоих есть конструкторы. Я так понимаю у наследуемого класса конструктор стирается.
Вообщем показываю...класс работы с базой

/*
При создании класса ему нужно передать следующие данные:
1) DB Login
2) DB Password
3) DB Prefix
4) DB Name
5) DB Host
*/


class mysql
{
public $conn_id; //Идентификатор соединения
public $sql_query; //Запрос
public $sql_res; //Результат запроса

function __construct($sql_login, $sql_pass, $sql_prefix, $sql_database, $sql_host)
{
$this->sql_login = $sql_login;
$this->sql_pass = $sql_pass;
$this->sql_prefix = $sql_prefix;
$this->sql_database = $sql_database;
$this->sql_host = $sql_host;
$this->sql_connect();
}

private function sql_connect()
{
$this->conn_id = mysql_connect($this->sql_host, $this->sql_login, $this->sql_pass);
if(!$this->conn_id)
{
header('location: error.html');
exit;
}

mysql_select_db($this->sql_prefix . $this->sql_database, $this->conn_id);

$this->query('SET NAMES utf8', __FILE__, __LINE__);
$this->query('SET CHARACTER SET utf8', __FILE__, __LINE__);
$this->query('SET COLLATION_CONNECTION="utf8_general_ci"', __FILE__, __LINE__);
}

public function sql_close()
{
mysql_close($this->conn_id);
}

#Обработка MySQL запросов
public function query($sql_query, $file, $line)
{
$sql_res = mysql_query($sql_query, $this->conn_id);
if($sql_res)
return $sql_res;
else
{
die('<b style="color:red">Mysql error: </b>' . mysql_error() . '<br><b>Query: </b>' . $sql_query . '<br><b>File:
</b>'
. $file . '<br><b>Line: </b>' . $line);
}
}
}



и есть другой класс скажем
    class other extends mysql
{


У него тоже свой конструктор. Я создаю объект класса other и если в нем попробовать обратиться к методу query, то получим фиг. Соединения-то нет. Вот как тут сделать по нормальному ?



Спустя 8 минут, 23 секунды (19.04.2010 - 15:11) glock18 написал(а):
какой именно конструктор у потомка?

Спустя 30 секунд (19.04.2010 - 15:12) vasa_c написал(а):

Спустя 10 минут, 5 секунд (19.04.2010 - 15:22) Krevedko написал(а):
во, спасибо. это думаю подойдет на все сто

Спустя 24 минуты (19.04.2010 - 15:46) twin написал(а):
Яркий пример бесполезности и быдлокодинга от ООП.
Ну для чего тут нужен класс?

Спустя 17 минут, 37 секунд (19.04.2010 - 16:04) Krevedko написал(а):
Для крутости biggrin.gif
Кстати не сработало у меня чвто-то...итак..второй класс (его кусок)


function __construct($table, $where, $quantity, $page)
{
parent::__construct(SQL_LOGIN, SQL_PASS, SQL_PREFIX, SQL_DATABASE, SQL_HOST);
$this->quantity = $quantity;
$this->page = intval($page);

$result = $this->query("SELECT COUNT(*)
FROM `"
.$table."` ".$where
, __FILE__, __LINE__);


Выдает
Mysql error: No database selected
Query: SELECT COUNT(*) FROM `group`
Хотя соединение вроде как происходит, по крайней мере


if(!$this->conn_id)
{
header('location: error.html');
exit;
}

не вызывается

Спустя 15 минут, 51 секунда (19.04.2010 - 16:20) twin написал(а):
Выкинууууть. biggrin.gif
Головняк себе и людям. Ну нет же пользы никакой от этого.

Спустя 37 секунд (19.04.2010 - 16:20) Krevedko написал(а):
Ну хочется же разобраться...а потом выкинуть biggrin.gif

Спустя 1 час, 19 минут, 28 секунд (19.04.2010 - 17:40) vasa_c написал(а):
Цитата
Хотя соединение вроде как происходит, по крайней мере

А оно не про соединение в сообщении об ошибке говорит.

Спустя 2 минуты, 47 секунд (19.04.2010 - 17:42) Krevedko написал(а):
дак это понятно. просто mysql_select_db идет аккурат следом

кстати так
            $res = mysql_select_db($this->sql_prefix . $this->sql_database, $this->conn_id);
if(!$res)
{
echo 'случилась жо-па';
exit;
}

срабатывает на жо-пу sad.gif

Спустя 11 минут, 14 секунд (19.04.2010 - 17:54) Krevedko написал(а):
мильпардон господа...перепутал константы базы и хоста в конфиге smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.