Maksim14
Новичок
Дата регистрации:
01.09.2015 16:53:11
Сообщений: 9
почитал форумы и статьи... все указывают, что либо с подключением к БД что-то не так... либо селект не правильный
Вообщем, регистрация не работает (урок 12). Кмк, проблема с сравнением логинов в БД либо что-то с паролем не так несколько дней не могу словить ошибку прошу помощи:
Fatal error: Call to a member function isExistsDB() on a non-object in C:\******\global_class.php on line 87
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){
return $this->db->updateOnID($this->table_name, $id, $upd_fields);
}
//удаление записей по ID
public function delete($id){
return $this->db->deleteOnID($this->table_name, $id);
}
//удалить ВСЕ
public function deleteAll(){
return $this->db->deleteAll($this->table_name);
}
//как узнать одно поле, если известно другое
protected function getField($field_out, $field_in, $value_in){
return $this->db->getField($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
protected function setFieldOnID($id, $field, $value){
return $this->db->setFieldOnID($this->table_name, $id, $field, $value);
}
//получить всю запись целиком по ID
public function get($id){
return $this->db->getElementOnID($this->table_name, $id);
}
//получить все записи из таблицы
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);
}
//количество элементов в данной таблице
public function getCount(){
return $this->db->getCount($this->table_name);
}
//по некоторому полю проверить существует ли такое поле
protected function isExists($field, $value){
return $this->db->isExistsDB($this->table_name, $field, $value);
}
}
?>
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();
//connect to DB
$this->mysqli = new mysqli($this->config->host, $this->config->user, $this->config->password, $this->config->db);
if ($this->mysqli->connect_errno) exit("Ошибка соединения с базой данных"
$this->mysqli->query("SET NAMES 'utf8'"
}
//запросы-ответы
private function query($query){
if(mysql_connect()){
echo mysql_connect();
}
return $this->mysqli->query($query);
}
//выборка. $fields - список полей
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); //запрос через метод query
if(!$result_set) return FALSE;
//if($result_set) echo "ВСЕ ОКЕ!";
//else printf("Errormessage: %s\n, $mysqli->error"
//преобразовать в 2-хмерный массив
$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 $field => $value) $query .= "`".$field."`,";
$query = substr($query, 0, -1); //удаляем последнюю ,
$query .= " VALUES (";
//подставляем значения
foreach ($new_values as $value) $query .= "'".addcslashes($value, ""."',";
$query = substr($query, 0, -1); //удаляем последнюю ,
$query .= "";
return $this->query($query);
}
//для обновления записей. $upd_fields - поля, которые обновляем
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` = '".addcslashes($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 getField($table_name, $field_out, $field_in, $value_in){
$data = $this->select($table_name, array($field_out), "`$field_in`='".addcslashes($value_in, ""."'"
if(count($data) != 1) return FALSE; //если запись не найдена
return $data[0][$field_out];
}
//находим поле по $id. $field_out - искомое поля
public function getFieldOnID($table_name, $id, $field_out){
if (!$this->existsID($table_name, $id)) return false; //если не существует
return $this->getField($table_name, $field_out, "id", $id);
}
//получение всех записей из таблицы
public function getAll($table_name, $order, $up){
return $this->select($table_name, array("*", "", $order, $up);
}
//получаем последнюю запись таблицы
public function getLastID($table_name){
$data = $this->select($table_name, array("MAX(`id`)");
return $data[0]["MAX(`id`)"];
}
//удалить запись по ID
public function deleteOnID($table_name, $id){
if (!$this->existsID($table_name, $id)) return false; //если не существует
return $this->delete($table_name, "`id` = '$id'"
}
//изменение определенного поля
public function setField($table_name, $field, $value, $field_in, $value_in){
return $this->update($table_name, array($field => $value), "`$field_in` = '".addcslashes($value_in, ""."'"
}
//изменение поля по 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
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];
}
//возвращает случайные записи в определенном количестве
public function getRandomElements($table_name, $count){
return $this->select($table_name, array("*", "", "RAND()", TRUE, $count);
}
//количество записей в таблице
public function getCount($table_name){
$data = $this->select($table_name, array("COUNT(`id`)");
return $data[0]["COUNT(`id`)"];
}
public function getAllOnField($table_name, $field, $value, $order, $up){
return $this->select($table_name, array("*", "`$field` = '".addcslashes($value, ""."'", $order, $up);
}
//проверка на существования определенного значения в некоторой таблице
public function isExistsDB($table_name, $field, $value){
$data = $this->select($table_name, array("id", "`$field` = '".addcslashes($value, ""."'"
if (count($data) === 0) return FALSE;
return TRUE;
}
private function existsID($table_name, $id){
if(!$this->valid->validID($id)) return FALSE;
$data = $this->select($table_name, array("id", "`id` = '".addcslashes($id, ""."'"
if (count($data) === 0) return FALSE;
return TRUE;
}
public function __destruct(){
if ($this->mysqli) $this->mysqli->close();
}
}
?>