<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

В начале курса у нас будет только идея, а в конце готовый продукт, который можно использовать в практических целях.

В рамках упражнений курса Вы параллельно со мной будете создавать свою большую программу на Java, что даст Вам необходимую практику, после которой для Вас уже не будет разницы, какого размера создавать программы.

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

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

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

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

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

Каким движком Вы предпочитаете пользоваться?

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

не могу найти ошибку (с нуля до гуру PHP и MySQL)
01.09.2015 17:08:50 не могу найти ошибку (с нуля до гуру PHP и MySQL) Сообщение #1
Maksim14

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();
}
}
?>
Профиль Ответить
02.09.2015 17:32:06 не могу найти ошибку (с нуля до гуру PHP и MySQL) Сообщение #2
Maksim14

Maksim14

Новичок

Новичок

Дата регистрации:
01.09.2015 16:53:11

Сообщений: 9

никто ничего не видит?
Профиль Ответить
03.09.2015 11:59:50 не могу найти ошибку (с нуля до гуру PHP и MySQL) Сообщение #3
gemiks

gemiks

Мастер

Мастер

Дата регистрации:
17.03.2013 18:03:11

Сообщений: 177

У вас же написано. что данный метот вызывается, но его класс не является обьектом
Профиль Ответить
03.09.2015 17:28:46 не могу найти ошибку (с нуля до гуру PHP и MySQL) Сообщение #4
Maksim14

Maksim14

Новичок

Новичок

Дата регистрации:
01.09.2015 16:53:11

Сообщений: 9

Да, это понятно. Это из-за того что запрос в базу не правильно составлен? Если это так, то где ошибка? или дело в чем-то другом?
Профиль Ответить
03.09.2015 21:12:15 не могу найти ошибку (с нуля до гуру PHP и MySQL) Сообщение #5
gemiks

gemiks

Мастер

Мастер

Дата регистрации:
17.03.2013 18:03:11

Сообщений: 177

Загрузите код на pasterbin или аналогичный сервис, а то тут не видно ничего
Профиль Ответить
04.09.2015 11:34:23 не могу найти ошибку (с нуля до гуру PHP и MySQL) Сообщение #6
gemiks

gemiks

Мастер

Мастер

Дата регистрации:
17.03.2013 18:03:11

Сообщений: 177

Я не могу зайти по ссылке, она доступна только Белорусам
Профиль Ответить
04.09.2015 12:48:57 не могу найти ошибку (с нуля до гуру PHP и MySQL) Сообщение #7
Maksim14

Maksim14

Новичок

Новичок

Дата регистрации:
01.09.2015 16:53:11

Сообщений: 9

ПЕРЕЗАЛИЛ
http://файлообменник.рф/y4v5n2wlfv6v.html
Профиль Ответить
05.09.2015 19:43:39 не могу найти ошибку (с нуля до гуру PHP и MySQL) Сообщение #8
CyberGenius777

CyberGenius777

Освоившийся

Освоившийся

Дата регистрации:
25.11.2013 14:39:15

Сообщений: 30

На 264 строке косяк на косяке. Функция isExistsDB....
$data = $this->select($table_name, array("id", "`$field` = '".addcslashes($value, ""."'";
'".addcslashes($value, ""."'";
- а именно вот тут;

$this->select($table_name, array("id", "`$field` = '".addslashes($value)."'";

 вот так должно быть, исправь, проверь, напиши, исправилось или нет
Профиль Ответить
05.09.2015 19:46:49 не могу найти ошибку (с нуля до гуру PHP и MySQL) Сообщение #9
CyberGenius777

CyberGenius777

Освоившийся

Освоившийся

Дата регистрации:
25.11.2013 14:39:15

Сообщений: 30

Там скобка закрывается, вместо картинки, не знаю, почему показывает, что это картинка, хотя, может это у меня только так
Профиль Ответить
07.09.2015 11:20:11 не могу найти ошибку (с нуля до гуру PHP и MySQL) Сообщение #10
Maksim14

Maksim14

Новичок

Новичок

Дата регистрации:
01.09.2015 16:53:11

Сообщений: 9

там все в порядке. проверь файлы на файлообменнике.
Профиль Ответить