[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Тестовое задание
Страницы: 1, 2, 3
macheninarctica
Пробую устроится на работу.. дали такое задание
Ничего не ответили, прокомментируйте, укажите ошибки. А то сижу прогаю, все работает.. но этого мало.. хочется наставления специалистов.. где ти какие ошибки, где можно сделать лучше..

Язык реализации:
PHP5
Итоговое кол-во файлов:
3 (config.php, mysql.php, test.php)
Задача:
Написать класс работы с MySQL с отдельными функциями подключения к MySQL-
серверу, выбора БД, выполнения запроса. В файле log.txt должен вестись лог запросов и
ошибок.
Детали реализации:
config.php – конфигурационный файл. В нем в массив $GLOBALS заносятся параметры
подключения (хост, логин, пароль) и имя БД.
mysql.php – собственно, класс работы с БД. 3 функции:
 подключение (в случае неудачи запись в лог – log.txt - информации об ошибке);
 выполнение запроса (с записью в лог информации о запросе – дата, время,
текст и наличии ошибок, если они произошли);
 запись в лог (собственно, запись в log.txt в режиме добавления – “a”).
test.php – тестовый скрипт выполнения какого-нибудь запроса.
Очень желательно комментирование (описание функций и значимых функциональных
блоков)

Вот что я сделал

config.php
$host='proactivity';
$login='root';
$password='';
$db_name='proactivity';
$filename='log.txt';
?>




mysql.php
<?php 

/**
* Class for work with DB
*/

class DataBaseSelector extends Mysqli
{
// Private variable with adress file for write
private $filename;

// Function construct, which called when object of the class create.
//The function create connecting for db and write to log.txt error whith code and description if conection's error.

function __construct($host, $login, $password, $db_name, $filename){
$this->filename = $filename;
$this->host = $host;
$this->login = $login;
$this->password = $password;
$this->db_name = $db_name;
}
// Function connect to database
public function connect_db(){
parent::__construct($this->host, $this->login, $this->password, $this->db_name);

if ($this->connect_errno) {
$this->write('Error connect: ' . $this->connect_errno." - " . $this->connect_error);
die('Error connect: ' . $this->connect_errno." - " . $this->connect_error );
}
}


// Function select the database if database exist or leaves previous
private function db_select($db_name){
if($this->ping()){
$this->select_db($db_name);
return 1;
}
else return 0;
}

//The Function selection send query to database and get array with result of selection. And write date, time, query (and error if was error) to log.txt
public function db_request($query, $db_name){
if ($this->db_select($db_name)) {
$query = mysql_escape_string($query);
if($result = $this->query($query)){
while ($row = $result->fetch_assoc()) {
$arr[]=$row;
}
$result->close();
$this->write(date('d.m.Y H:i:s')." / ".$query);
return $arr;
}
else $this->write(date('d.m.Y H:i:s')." / ".$query." / Error select: ".$this->errno." - " . $this->error);
}
}


//The private function which realize write to file
private function write($massege){
if ($file = fopen($this->filename,"a")) {
fwrite($file,$massege."\r\n");
fclose($file);
}
else return "File didn't open and didn't create";
}
}



?>


test.php

<?php
include_once('config.php');
include_once('mysql.php');

//Create DataBaseSelector' object and connecting to database
$user = new DataBaseSelector($host, $login, $password, $db_name,$filename);

//Connect to database
$user->connect_db();

// Create table in database for test
/*$user->db_request("CREATE TABLE IF NOT EXISTS 'users' ('id' int(11) NOT NULL,'login' varchar(200) NOT NULL,'password' varchar(200)NOT NULL,PRIMARY KEY ('id')) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO 'users' ('id', 'login', 'password') VALUES (1, 'admin', '12345'),(2, 'user', '223232'),(3, 'guest', '312312');)",$db_name);*/

// Get and print to page reault of query

echo "<pre>";
print_r($user->db_request("SELECT * FROM users",$db_name)) ;
echo "</pre>";
?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.