Доброго времени суток форумчане. Дайте направление. P.s. Благодарю Дано Произвольное количество пользователей. У каждого пользователя есть логин, пароль, Ф.И.О. Произвольное число групп. Каждая группа имеет название. Между пользователями существуют отношения субординации(подчинения) Каждый пользователь может входить в ноль или более групп Не допускается циклическая субординация(когда Вася начальник Пети, Петя начальник Ивана, а Иван начальник Васи) Требуется Разработать и реализовать реляционную БД, используя СУБД MySQL Написать web-приложение, позволяющее управлять содержимым разработанной БД. Оно должно обеспечивать следующие возможности: вывод списка пользователей с обозначением начальника каждого из них, и групп, в которые он входит; добавление пользователей; установление между пользователями отношения субординации(с автоматической проверкой отсутствия циклической субординации); редактирование данных пользователя включение пользователя в произвольную существующую группу; исключение пользователя из любой групп, в которую он входит; удаление пользователя; вывод списка групп; изменение данных любой существующей группы; добавление новой группы; удаление любой существующей группы. Результат работы Результатом выполненного тестового задания являются: SQL-дамп БД с минимальным набором необходимых для проверки работоспособдости данных; php-скрипты, необходимые для работы приложения; файлы ресурсов(css, картинки и пр.); краткая инструкция по установке. Дополнительные условия Язык написания приложения — php Среда работы приложения — web-сервер Apache (cgi, mod_php или fast-cgi не важно) Запрещается использование любых CRUD-фрэймворков или прочих ORM (Object-relational mapping) библиотек для отображения БД в объектах.
1. Таблица пользователей 2. Таблица групп 3. Таблица связей пользователей Nested 4. Таблица связей пользователей и групп. Так как про подгруппы ни слова можно обычную ид пользователя и ид группы 5. Не забываем про индексы для полей таблиц Берем MySQL Workbench рисуем и создаем базу с нашими таблицами а дальше дописываешь код, думаю если один код покажешь то возьмут сразу, только как-же потом будешь отдуваться, или думаешь научишься? PHP: <?php # Author - Fedor Vlasenko, vlasenkofedor@mail.ru php 7 define('METHOD', $_SERVER['REQUEST_METHOD']); define('URI', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)); /** * @param $sql * @param array $binds * @param string $method * @param array $params * * @return bool|mixed|PDOStatement */ function query($sql, array $binds = [], $method = '', array $params = []) { static $pdo; if (null === $pdo) { $pdo = new \PDO('mysql:host=localhost;dbname=micro', 'root', '', //pass empty [ \PDO::ATTR_EMULATE_PREPARES => false, \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC ]); } try { $sql = str_replace('__', 'cms_', $sql); if ([] === $binds) { $query = $pdo->query($sql); } else { $query = $pdo->prepare($sql); $query->execute($binds); } $method && $query = call_user_func_array([$query, $method], $params); } catch (\Exception $e) { $query = false; } return $query; } /** * @param string $url * @param array ...$args */ function router($url, ...$args) { (empty($args[1]) || false !== strpos(METHOD, $args[0])) && (URI === $url || preg_match('#^' . $url . '$#iu', URI, $match)) && die(call_user_func_array(end($args), $match ?? [])); } router('/', function () { $result = query('SELECT * FROM __users LIMIT 10', [], 'fetchAll'); printf('<pre>%s</pre>', print_r($result, true)); echo 'Main Micro'; }); router('/user/(.*[^/])', 'GET', function (...$args) { echo 'User: ', $args[1]; }); header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found'); echo '404';
Собеседовали выпускницу одного московского вуза по специальности. Диплом - непосредственно пыхыпе-проект. Отличие абстрактных классов от интерфейсов - не знаю, left join тоже. ЗП хочу 70 000, но для начала, "пока втягиваюсь" согласна на 40
@Zuldek взяли? Надо таким предлагать, чтобы они вам платили 40.000 рублей пока она втягивает новые знания