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);
}
}
?>
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