ООП - Вопросы.

Тема в разделе "PHP", создана пользователем sesharim, 6 сен 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. sesharim

    sesharim

    Регистр.:
    4 окт 2006
    Сообщения:
    297
    Симпатии:
    26
    Вроде всё нормально, но ошибку свою так найти и не могу, подскажите. Кстати, именно по ООП можно всем сюда вопросы скидывать. И сами будем пробывать на них отвечать.

    PHP:
    <?php
    /**
     * Enter description here...
     *
     */
    class dataBase {
        
    /**
         * Enter description here...
         *
         * @var unknown_type
         */
        
    private $hostname;
        private 
    $username;
        private 
    $password;
        private 
    $database;
        private 
    $link;
        
    /**
         * Enter description here...
         *
         * @var unknown_type
         */
        
    protected $mainCharacter "cp1251";
        protected 
    $selectDb;
        protected 
    $errorNo;
        protected 
    $errorMsg;
        protected 
    $queryId;
        
    /**
         * Enter description here...
         *
         * @param unknown_type $hostname
         * @param unknown_type $username
         * @param unknown_type $password
         * @param unknown_type $database
         */
        
    function __construct($hostname$username$password$database$mainCharacter) {
            
    $this->hostname      $hostname;
            
    $this->username      $username;
            
    $this->password      $password;
            
    $this->database      $database;
            
    $this->mainCharacter $mainCharacter;
            
    $this->connect();
            
    $this->select();
            
            
    $this->query("set session character_set_server=".$this->mainCharacter.";");
            
    $this->query("set session character_set_database=".$this->mainCharacter.";");
            
    $this->query("set session character_set_connection=".$this->mainCharacter.";");
            
    $this->query("set session character_set_results=".$this->mainCharacter.";");
            
    $this->query("set session character_set_client=".$this->mainCharacter.";"); 
        }
        
    /**
         * Enter description here...
         *
         * @return unknown
         */
        
    function connect() {
            
    $this->link mysql_connect($this->hostname$this->username$this->password);
            if (!
    $this->link) {
                return 
    $this->error("Ошибка подключения");
            }
        }
        
    /**
         * Enter description here...
         *
         * @return unknown
         */
        
    function select() {
            
    $this->selectDb mysql_select_db($this->database);
            if (!
    $this->selectDb) {
                return 
    $this->error("Ошибка выбора базы данных");
            }
        }
        
    /**
         * Enter description here...
         *
         * @param unknown_type $query
         * @return unknown
         */
        
    function query($query) {
            
    $this->queryId mysql_query($query);
            if (!
    $this->queryId) {
                return 
    $this->error("Ошибка в запросе");
            }
        }
        
    /**
         * Enter description here...
         *
         * @param unknown_type $result
         * @return unknown
         */
        
    function rows($result) {
            return 
    mysql_num_rows($result);
        }
        
    /**
         * Enter description here...
         *
         * @param unknown_type $result
         * @return unknown
         */
        
    function mArray($result) {
            return 
    mysql_fetch_array($result);
        }
        
    /**
         * Enter description here...
         *
         * @param unknown_type $msg
         */
        
    function error($msg) {
            
    $this->errorNo mysql_errno();
            
    $this->errorMsg mysql_error();
                
    $messange "<b>".$msg."</b>: <b><font color=\"red\">".$this->errorMsg."</font> <font color=\"green\">(".$this->errorNo.")</font></b>";
                die(
    $messange);
        }
    }

    ?>
     
  2. akgrad

    akgrad

    Регистр.:
    26 июл 2008
    Сообщения:
    161
    Симпатии:
    29
    Ошибку то напиши?
    PS класс ты описал. Ты его где-нить используешь?
     
  3. sesharim

    sesharim

    Регистр.:
    4 окт 2006
    Сообщения:
    297
    Симпатии:
    26
    М-да. Нашел я свою ошибку. Забыл заинклудить класс в нужное место. :) Сам класс рабочий, кстати, если есть комментарии по классу, или я веду не правильный подход - подскажите пожайлуста.

    //всё равно ошибочка есть, но я вроде везде эти кавычки выставил: Ошибка в запросе: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 (1064)
     
  4. sesharim

    sesharim

    Регистр.:
    4 окт 2006
    Сообщения:
    297
    Симпатии:
    26
    Исправил ошибку, но теперь ничего не выводит.
    Даже пустота типа:
    $q = $db->query("SELECT * FROM `cms_users` ORDER BY `user_id`;");
    echo $q;
     
  5. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    ТС, зачем выдумывать велосипед, если есть PDO?

    И что ты хочешь здесь увидеть, если метод query у тебя ни чего не возвращает кроме ошибки?
     
  6. wellmax

    wellmax Постоялец

    Регистр.:
    9 июл 2008
    Сообщения:
    112
    Симпатии:
    33
    А что такое PDO?
     
  7. sesharim

    sesharim

    Регистр.:
    4 окт 2006
    Сообщения:
    297
    Симпатии:
    26
    Ну хоть ради приличия должно вывести типа: Resource #2, :) или что-то в этом роде, но не rows, не mArray не работают, как я понял. Ибо пустота,
    пытаюсь вывести echo count($this->rows($q)); и выводит только "1", хотя записей 4. Подскажите пожайлуста.
    P.S: насчет велосипеда - своё доступнее, тренировка знаний. :)

    Добавлено через 6 минут
    Перейти по ссылке
    Перейти по ссылке
     
  8. X-Ception

    X-Ception Прохожие

    Чтобы что-то вывело метод query должен хотя бы что-то вернуть :)
    Добавь в function query в самом конце:
    Код:
    return $this->queryId;
     
  9. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    C какого перепуга или интерпретатор должен угадывать желания?
    Что метод тебе выведет, если он возвращает результат только в случае ошибки?
     
  10. sesharim

    sesharim

    Регистр.:
    4 окт 2006
    Сообщения:
    297
    Симпатии:
    26
    Ох, ребят. Спасибо большое за замечания. Тоесть каждый метод должен возвращать либо ошибку, либо нужное мне действие? Есть ли ещё замечания по коду выше? И ещё раз спасибо.
     
Статус темы:
Закрыта.