radioheaded
PHP нуб
Ох-ты. Пожалуй, подпишусь на тредик.
Точнее и не скажешь: действительно, для каждого класса нужно делать отдельный класс.Мне тут сказали что для каждого класса если в нём предусмотрено подключение к бд нужно делать отдельный класс, потому что если реквайрить один и тот же класс во все файлы это будет настоящая куча мусора
Потому что для этого нужно выучить PHP, хотя бы синтаксис.В этом ясно, но почемуто мне написать класс для работы с бд для этого класса ооочень сложно
Я вам покажу, как это выглядит со стороны: «Я знать руский язик и этот предложение тому в докозательство.»Я знаю php, и мой тестовый сайт этому показатель
<?php
class User {
public $mysqli;
private $error;
private function validData($data) {
if(is_array($data)) {
return $this->getError('Мы массив пока не обрабатываем');
}
else {
$data = trim(htmlspecialchars(stripslashes($data)));
}
return $data;
}
private function getError($error) {
return $this->error = $error;
}
public function connectDB() {
return $this->mysqli;
}
public function registerUser ($login, $password) {
$login = $this->validData($login);
$password = $this->validData($password);
if (empty($login) AND strlen($login) > 3) {
unset($login);
return $this->getError('Вы не ввели Логин');
}
if (empty($password) AND strlen($password) > 6) {
unset($password);
return $this->getError('Вы не ввели Пароль');
}
if (isset($login) AND isset($password)) {
//$mysqli = new mysqli("localhost", "Admin", "udiram04", "oop");
$mysqli = $this->connectDB();
$isset_login = $mysqli->query("SELECT `login` FROM `reg` WHERE `login` = '".$login."'");
$arr_isset = $isset_login->fetch_assoc();
if (!$arr_isset['login'] == "") {
return $this->getError("Такой логин существует");
}
$mysqli->query("INSERT INTO `reg` (`login`, `password`, `date`) VALUES ('".$login."', '".$password."', UNIX_TIMESTAMP())");
$id = $mysqli->insert_id;
$result = $mysqli->query("SELECT * FROM `reg` WHERE `id` = '$id'");
$arr = $result->fetch_assoc();
return "Ваш логин: ".$arr['login']."<br />Ваш пароль: ".$arr['password']."<br />Дата регистрации: ".date("d:m:y h:s", $arr['date']);
}
}
public function deleteUser($id_user) {
$mysqli = $this->connectDB();
$delete_user = $mysqli->query("SELECT `id` FROM `reg` WHERE `id` = '$id_user'");
$arr_del_user = $delete_user->fetch_assoc();
if (empty($arr_del_user['id'])) {
return $this->getError("Такого пользователя нет");
}
else {
$del_user = $mysqli->query("DELETE FROM `reg` WHERE `id` = '$id_user' LIMIT 1");
if ($del_user === true) {
return $this->getError("Пользователь успешно удалён");
}
}
}
}
?>
<?php
require_once "register.php";
if (isset($_POST['submit'])) {
$mysqli = new mysqli("localhost", "Admin", "udiram04", "oop");
$user = new User($mysqli);
$user->mysqli = $mysqli;
echo $user->registerUser($_POST['login'], $_POST['password']);
}
echo <<<TXT
<form action = "" method = "post">
<input type = "text" name = "login" />
<input type = "password" name = "password" />
<input type = "submit" name = "submit" />
</form>
TXT;
?>
class User {
public $mysqli;
private $error;
private $yes;
private function validData($data) {
if(is_array($data)) {
return $this->getError('Мы массив пока не обрабатываем');
}
else {
$data = trim(htmlspecialchars(stripslashes($data)));
}
return $data;
}
private function setError($error) {
if(empty($this->error)) {
$this->error = $error;
}
else {
$this->error .= "<br />".$error;
}
}
public function setUser($yes) {
if(empty($this->yes)) {
$this->yes = $yes;
}
else {
$this->yes .= "<br />".$yes;
}
}
public function __construct() {
return $user->error."<br />".$user->yes;
}
public function connectDB() {
return $this->mysqli;
}
public function registerUser ($login, $password) {
$login = $this->validData($login);
$password = $this->validData($password);
if (empty($login) AND strlen($login) < 4) {
$this->setError('Вы не ввели Логин');
}
if (empty($password) AND strlen($password) < 6) {
$this->setError('Вы не ввели Пароль');
}
if (!empty($login) AND !empty($password)) {
//$mysqli = new mysqli("localhost", "Admin", "udiram04", "oop");
$mysqli = $this->connectDB();
$isset_login = $mysqli->query("SELECT `login` FROM `reg` WHERE `login` = '".$login."'");
$arr_isset = $isset_login->fetch_assoc();
if (!$arr_isset['login'] == "") {
$this->setError("Такой логин существует");
}
$mysqli->query("INSERT INTO `reg` (`login`, `password`, `date`) VALUES ('".$login."', '".$password."', UNIX_TIMESTAMP())");
$id = $mysqli->insert_id;
$result = $mysqli->query("SELECT * FROM `reg` WHERE `id` = '$id'");
$arr = $result->fetch_assoc();
$this->setUser("Ваш логин: ".$arr['login']."<br />Ваш пароль: ".$arr['password']."<br />Дата регистрации: ".date("d:m:y h:s", $arr['date']));
}
}
public function deleteUser($id_user) {
$mysqli = $this->connectDB();
$delete_user = $mysqli->query("SELECT `id` FROM `reg` WHERE `id` = '$id_user'");
$arr_del_user = $delete_user->fetch_assoc();
if (empty($arr_del_user['id'])) {
$this->setError("Такого пользователя нет");
}
else {
$del_user = $mysqli->query("DELETE FROM `reg` WHERE `id` = '$id_user' LIMIT 1");
if ($del_user === true) {
$this->setUser("Пользователь успешно удалён");
}
}
}
}
Возьми один из современных фреймворков, посмотри туда на реализацию. Не принимай за истину, а просто посмотри, а потом задай себе вопросы, почему вот это там сделано так-то, а вот то — так-то. Если сам не сможешь ответить, можешь спросить здесь. Получишь ответы — попробуешь переделать свой класс.Блин, вообще ничего не получается