<MyRusakov.ru />

Профессия Web-разработчик

Профессия Web-разработчик

Этот комплект за 8 месяцев превратит Вас в Web-разработчика с нуля. Учиться достаточно 1 час в день.

Начнёте Вы с HTML, CSS и вёрстки сайтов. Потом перейдёте к программированию и JavaScript. Затем изучите PHP, MySQL, SQL, Python. Изучите Web-фреймворки Laravel и Django. Создадите 5 своих сайтов для портфолио.

Комплект содержит:

- 540 видеоуроков

- 110 часов видео

- 1205 заданий для закрепления материала из уроков

- 5 финальных тестов

- 7 сертификатов

- 12 Бонусных курсов

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Форум сайта MyRusakov.ru

с нуля до гуру, создание движка
11.12.2016 16:27:49 с нуля до гуру, создание движка Сообщение #1
Valeragg65

Valeragg65

Новичок

Новичок

Дата регистрации:
17.11.2016 15:25:31

Сообщений: 1

Доброго дня,
объясните  пож-ста откуда  в этом коде берётся класс db в строке:
return $this->db->insert($this->table_name,$new_values);
ведь класс, где определён метод insert называется DataBase?

<?php
    require_once "class_config.php";
    require_once "class_value.php";
    require_once "class_database.php";
    
    abstract class GlobalClass
    {
        private $db;
        private $table_name;
        protected $config;
        protected $check;
            
        protected function __construct($table_name,$db)
        {
            $this->db = $db;
            $this->table_name = $table_name;
            $this->config = new Config();
            $this->check = new Check();
        }
        
        protected function add($new_values)
        {
            return $this->db->insert($this->table_name,$new_values);
        }
    }
?>
Профиль
19.12.2016 11:55:27 с нуля до гуру, создание движка Сообщение #2
shmel010201

shmel010201

Освоившийся

Освоившийся

Дата регистрации:
03.05.2016 17:31:25

Сообщений: 23

вот, весь код файла global_class.php
<?php
require_once "config_class.php";
require_once "checkvalid_class.php";
require_once "database_class.php";

//Глобальный управляющий класс
abstract class GlobalClass{
    
    private $db;
    private $table_name;
    protected $config;
    protected $valid;
    
    protected function __construct($table_name, $db){
        $this->db = $db;
        $this->table_name = $table_name;
        $this->config = new Config();
        $this->valid = new CheckValid();
    }
    
    /*-Добавление новой записи-*/
    protected function add($new_values){
        return $this->db->insert($this->table_name, $new_values);
    }
    /*-Добавление новой записи-*/
    
    /*-Редактирование записи по id-*/
    protected function edit($id, $upd_fields){
        //Метода updateOnID написал сам, могут быть ошибки
        return $this->db->updateOnID($this->table_name, $id, $upd_fields);
    }
    /*-Редактирование записи по id-*/
    
    /*-Удаление записи по Id-*/
    protected function delete($id){
        return $this->db->deleteOnID($this->table_name, $id);
    }
    /*-Удаление записи по Id-*/
    
    /*-Удаление всех записей-*/
    protected function deleteAll(){
        return $this->db->deleteAll($this->table_name);
    }
    /*-Удаление всех записей-*/
    
    /*-Выбрать определенное поле, если известно другое поле и значение-*/
    protected function getField($field_out, $field_in, $value_in){
        return $this->db->getFields($this->table_name, $field_out, $field_in, $value_in);

    }
    /*-Выбрать определенное поле, если известно другое поле и значение-*/
    
    /*-Выбрать поле по id-*/
    protected function getFieldOnID($id, $field){
        return $this->db->getFieldOnID($this->table_name, $id, $field);
    }
    /*-Выбрать поле по id-*/
    
    /*-Изменение записи по Id-*/
    protected function setFieldOnID($id, $field, $value){
        return $this->db->setFieldOnID($this->table_name, $id, $field, $value);
    }
    /*-Изменение записи по Id-*/
    
    /*-Получение всей записи целиком- (сделано public после завершение работы поменять)*/
    public function get($id){
        return $this->db->getElementOnID($this->table_name, $id);
    }
    /*-Получение всей записи целиком-*/
    
    /*-Получение всех записей- (сделано public после завершение работы поменять)*/
    public function getAll($order = "", $up = true){
        return $this->db->getAll($this->table_name, $order, $up);
    }
    /*-Получение всех записей-*/
    
    /*-Выбрать все по определенному полю-*/
    protected function getAllOnField($field, $value, $order = "", $up = true){
        return $this->db->getAllOnField($this->table_name, $field, $value, $order, $up);
    }
    /*-Выбрать все по определенному полю-*/
    
    /*-Получение определенного числа случайных елементов-*/
    public function getRandomElement($count){
        return $this->db->getRandomElements($this->table_name, $count);
    }
    /*-Получение определенного числа случайных елементов-*/
    
    /*-Получение последнего ID-*/
    public function getLastID(){
        return $this->db->getLastID($this->table_name);
    }
    /*-Получение последнего ID-*/
    
    /*-Получение определенного количества записей по определенному полю-*/
    public function getCountFields($fields, $count){
        return $this->db->getCountFields($this->table_name, $fields, $count);
    }
    /*-Получение определенного количества записей по определенному полю-*/
    
    /*-Получение количества елементов в таблице-*/
    public function getCount(){
        return$this->db->getCount($this->table_name);
    }
    /*-Получение количества елементов в таблице-*/
    
    /*-Проверка на существование данного значения по полю-*/
    protected function isExist($field, $value){
        return $this->db->isExists($this->table_name, $field, $value);
    }
    /*-Проверка на существование данного значения по полю-*/
    
    /*-поиск-*/
    protected function search($words, $fields){
        return $this->db->search($this->table_name, $words, $fields);
    }
    /*-поиск-*/
}
?>
и код файла database_class.php
<?php
require_once "config_class.php";
require_once "checkvalid_class.php";
//Клас для работы с БД
class DataBase{
    
    private $config;
    private $mysqli;
    private $valid;
    
    public function __construct(){
        $this->config = new Config();
        $this->valid = new CheckValid();
        $this->mysqli = new mysqli($this->config->host, $this->config->user, $this->config->password, $this->config->db);
        $this->mysqli->query("SET NAMES 'utf8'";
    }
    /*-Отправка запроса и получение ответа-*/
    private function query($query){
        return $this->mysqli->query($query);
    }
    /*-Отправка запроса и получение ответа-*/
    
    /*-Выборка с БД-*/
    private function select($table_name, $fields, $where = "", $order = "", $up = true, $limit = ""{
        //перебор всех полей
        for ($i = 0; $i < count($fields); $i++){
            if((strpos($fields[$i], "(" === false) && ($fields[$i] != "*") $fields[$i] = "`".$fields[$i]."`";
        }
        $fields = implode(",", $fields);
        $table_name = $this->config->db_prefix.$table_name;
        if(!$order) $order = "ORDER BY `id`";
        else{
            if ($order != "RAND()"{
                $order = "ORDER BY `$order`";
                if (!$up) $order .= " DESC";
            }
            else $order = "ORDER BY $order";
        }
        if ($limit) $limit = "LIMIT $limit";
        if ($where) $query = "SELECT $fields FROM $table_name WHERE $where $order $limit";
        else $query = "SELECT $fields FROM $table_name $order $limit";
        $result_set = $this->query($query);
        if (!$result_set) return false;
        $i = 0;
        while($row = $result_set->fetch_assoc()){
            $data[$i] = $row;
            $i++;
        }
        $result_set->close();
        return $data;
    }
    /*-Выборка с БД-*/
    
    /*-Добавление записей-*/
    public function insert($table_name, $new_values){
        $table_name = $this->config->db_prefix.$table_name;
        $query = "INSERT INTO $table_name (";
        foreach($new_values as $fields => $value) $query .= "`".$fields."`,";
        $query = substr($query, 0, -1);
        $query .= " VALUES (";
        foreach($new_values as $value) $query .= "'".addslashes($value)."',";
        $query = substr($query, 0, -1);
        $query .= "";
        return $this->query($query);
    }
    /*-Добавление записей-*/
    
    /*-Обновление таблиц-*/
    private function update($table_name, $upd_fields, $where){
        $table_name = $this->config->db_prefix.$table_name;
        $query = "UPDATE $table_name SET ";
        foreach($upd_fields as $field => $value) $query .= "`$field` = '".addslashes($value)."',";
        $query = substr($query, 0, -1);
        if ($where) {
            $query .= " WHERE $where";
            return $this->query($query);
        }
        else return false;
    }
    /*-Обновление таблиц-*/
    
    /*-Удаление записей-*/
    public function delete($table_name, $where){
        $table_name = $this->config->db_prefix.$table_name;
        if ($where){
            $query = "DELETE FROM $table_name WHERE $where";
            return $this->query($query);
        }
        else return false;
    }
    /*-Удаление записей-*/
    
    /*-Очищение таблицы-*/
    public function deleteAll($table_name){
        $table_name = $this->config->db_prefix.$table_name;
        $query = "TRUNCATE TABLE `$table_name`";
        return $this->query($query);
    }
    /*-Очищение таблицы-*/
    
    /*-Метод возвращает одно поле по значению другого поля (Поле должно быть уникальным, по которому ищем)-*/
    public function getFields($table_name, $field_out, $field_in, $value_in){
        $data = $this->select($table_name, array($field_out), "`$field_in`='".addslashes($value_in)."'";
        if (count($data) != 1) return false;
        return $data[0][$field_out];
    }
    /*-Метод возвращает одно поле по значению другого поля (Поле должно быть уникальным, по которому ищем)-*/
    
    /*-Получение значения поля по Id-*/
    public function getFieldOnID($table_name, $id, $field_out){
        if (!$this->existsID($table_name, $id)) return false;
        return $this->getFields($table_name, $fild_out, "id", $id);
    }
    /*-Получение значения поля по Id-*/
    
    /*Выбор определенного количества елементов из таблицы по полю*/
    public function getCountFields($table_name, $fields, $count){
        return $this->select($table_name, array("*", "", $fields, false, $count);
    }
    /*Выбор определенного количества елементов из по полю*/
    
    /*-Получение всех записей из таблицы-*/
    public function getAll($table_name, $order, $up){
        return $this->select($table_name, array("*", "", $order, $up);
    }
    /*-Получение всех записей из таблицы-*/
    
    /*-Получение всех записей по определенному полю-*/
    public function getAllOnField($table_name, $field, $value, $order, $up){
        return $this->select($table_name, array("*", "`$field`='".addslashes($value)."'", $order, $up);
    }
    /*-Получение всех записей по определенному полю-*/
    
    /*-Удаление записи по id-*/
    public function deleteOnID($table_name, $id){
        if (!$this->existsID($table_name, $id)) return false;
        return $this->delete($table_name, "`id`='$id'";
    }
    /*-Удаление записи по id-*/
    
    /*-Изменение значения определенного поля (в конце in - это поля и значения которые известны)-*/
    public function setField($table_name, $field, $value, $field_in, $value_in){
        return $this->update($table_name, array($field => $value), "`$field_in`='".addslashes($value_in)."'";
    }
    /*-Изменение значения определенного поля-*/
    
    /*-Обновление определенной записи по ID-*/
    public function updateOnID($table_name, $id, $upd_fields){
        //upd_fields асоциативный масив, тоесть клюсь название поля, значение собственно значение
        if(!$this->existsID($table_name, $id)) return false;
        return $this->update($table_name, $upd_fields, "`id`='".addslashes($id)."'";
    }
    /*-Обновление определенной записи по ID-*/
    
    /*-Изменение поля по определенному id-*/
    public function setFieldOnID($table_name, $id, $field, $value){
        if (!$this->existsID($table_name, $id)) return false;
        return $this->setField($table_name, $field, $value, "id", $id);
    }
    /*-Изменение поля по определенному id-*/
    
    /*-Возвращение всей записи по одному только id-*/
    public function getElementOnID($table_name, $id){
        if (!$this->existsID($table_name, $id)) return false;
        $arr = $this->select($table_name, array("*", "`id`='$id'";
        return $arr[0];
    }
    /*-Возвращение всей записи по одному только id-*/
    
    /*-Возвращение случайных записей-*/
    public function getRandomElements($table_name, $count){
        return $this->select($table_name, array("*", "", "RAND()", true, $count);
    }
    /*-Возвращение случайных записей-*/
    
    /*-Количество записей в таблице-*/
    public function getCount($table_name){
        $date = $this->select($table_name, array("COUNT(`id`)");
        return $data[0]["COUNT(`id`)"];
    }
    /*-Количество записей в таблице-*/
    
    /*-Проверка на существование определенной записи с определенным значением в таблице-*/
    public function isExists($table_name, $field, $value){
        $data = $this->select($table_name, array("id", "`$field`='".addslashes($value)."'";
        if (count($data) === 0) return false;
        return true;
    }
    /*-Проверка на существование определенной записи в таблице-*/
    
    /*-последний максимальный id в таблице-*/
    /*-Метод переписывается в уроке №6 если с моим будут проблемы-*/
    public function getLastID($table_name){
        $id = $this->select($table_name, array("id", "", "id", false, 1);
        if(count($id[0]) === 0) return false;
        return $id[0]['id'];
    }
    /*-последний максимальный id в таблице-*/
    
    /*-Вытаскивание записей в указаном интервале даты, выводит по убыванию даты (Важно: функция принимает значение в секундах!)-*/
    public function getFieldsOnDate($table_name, $fields, $value_start, $value_end){
        $result = $this->select($table_name, array("*", "`$fields`>='".addslashes($value_start)."' AND `$fields`<='".addslashes($value_end)."'", "date", false);
        if (($result) === false) return false;
        return $result;
    }
    /*-Вытаскивание записей в указаном интервале даты-*/
    
    /*-Проверка на корректность Id-*/
    private function existsID($table_name, $id){
        if (!$this->valid->validID($id)) return false;
        $data = $this->select($table_name, array("id", "`id`='".addslashes($id)."'";
        if (count($data) === 0) return false;
        return true;
    }
    /*-Проверка на корректность Id-*/
    
    /*-Поиск на сайте-*/
    public function search($table_name, $words, $fields){
        $words = quotemeta(trim(mb_strtolower($words)));
        $words = preg_replace("/ {2,}/", " ", $words);
        if($words == "" return false;
        $where = "";
        $arraywords = explode(" ", $words);
        $logic = "OR";
        
        foreach($arraywords as $key => $value) {
            if(isset($arraywords[$key - 1])) $where .= $logic;
            for($i = 0; $i < count($fields); $i++){
                $where .= "`".$fields[$i]."` LIKE '%".addslashes($value)."%'";
                if(($i + 1) != count($fields)) $where .= " OR";
            }
        }
        
        $results = $this->select($table_name, array("*", $where);
        if(!$results) return false;
        $k = 0;
        $data = array();
        for($i = 0; $i < count($results); $i++){
            for($j = 0; $j < count($fields); $j++){
                $results[$i][$fields[$j]] = mb_strtolower(strip_tags($results[$i][$fields[$j]]));
            }
            $data[$k] = $results[$i];
            $data[$k]["relevant"] = $this->getRelevantForSearch($results[$i], $fields, $words);
            $k++;
        }
        $data = $this->orderResultSearch($data, "relevant";
        return $data;
    }
    /*-Поиск на сайте-*/
    
    /*-Подсчет совпадений-*/
    private function getRelevantForSearch($results, $fields, $words){
        $relevant = 0;
        $arraywords = explode(" ", $words);
        for($i = 0; $i < count($fields); $i++){
            for($j = 0; $j < count($arraywords); $j++){
                $relevant = substr_count($results[$fields[$i]], $arraywords[$j]);
            }
        }
        return $relevant;
    }
    /*-Подсчет совпадений-*/
    
    /*-Сортировка поиска-*/
    private function orderResultSearch($data, $order){
        for($i = 0; $i < count($data) - 1; $i++){
            $k = $i;
            for($j = $i + 1; $j < count($data); $j++){
                if($data[$j][$order] > $data[$k][$order]) $k = $j;
            }
            $temp = $data[$k];
            $data[$k] = $data[$i];
            $data[$i] = $temp;
        }
        return $data;
    }
    /*-Сортировка поиска-*/
    
    /*-Закрытие соединение с БД-*/
    public function __destruct(){
        if ($this->mysqli) $this->mysqli->close();
    }
    /*-Закрытие соединение с БД-*/
}
?>
Скажите спасибо, © Mr CaT
Профиль