Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
denis-skripnik
5 лет назад

Пояснительная записка к электронному журналу с использованием технологии Блокчейн, практическая часть: часть 5

Продолжаем.

2.2.3 PHP, часть 3

Теперь функция dataTable: выводит таблицы с данными в зависимости от значения
GET запроса page.

Передаются ей значения page, роль пользователя ($role) и его логин
($user).

function dataTable($page = '', $role = 0, $user = '') {
require_once 'db.php';
$db = dbConnect();
$table = ''; // Создаётся переменная строки с таблицей.

switch ($page) // Условие с проверкой значения $page.

{

case 'lactors': // Если lactors (преподаватели)

$res = $db->query('select * from \lactors'); // Получение данных из
таблицы учителей.

$table = '<table border="1" style="border:1px solid #000;">'; //
Начало таблицы

foreach ($res as $key 😕> $value) // Перебор элементов таблицы.

{

$delete_button = ($role) ? '<td style="border:1px solid #000;"><a
href="/index.php?page=lactors&action=droplactor&lactor=' .
$value["login"] . '">Удалить</a></td>' : false; // Переменная, в
которую добавляется ссылка удаления, если пользователь имеет право на
это действие.

$table .= '<tr><td style="border:1px solid #000;">' .
$value['login'] . '</td>' . $delete_button . '</tr>'; // Вся
остальная строка таблицы: логин преподавателя.

}

$table .= '</table>'; // Завершение таблицы.

break;

case 'disciples': // Если учеников страница

$res = $db->query('select * from \disciples'); // Выбор данных.

$table = '<table border="1" style="border:1px solid #000;">';

foreach ($res as $key 😕> $value)

{

$delete_button = ($role) ? '<td style="border:1px solid #000;"><a
href="/index.php?page=disciples&action=dropdisciple&disciple=' .
$value["login"] . '">Удалить</a></td>' : false; // Также ссылка
удаления.

$table .= '<tr><td style="border:1px solid #000;">' .
$value['login'] . '</td>' . $delete_button . '</tr>'; // Также
строка таблицы с логином и переменной удаления.

}

$table .= '</table>';

break;

case 'lessons': // Предметы

$res = $db->query('select * from \lessons'); // Получение данных из
таблицы в БД.

$delete_button = ($role) ? '<td style="border:1px solid #000;"><a
href="#">Удалить</a></td>' : false;

$table = '<table border="1" style="border:1px solid #000;">';

foreach ($res as $key 😕> $value)

{

$delete_button = ($role) ? '<td style="border:1px solid #000;"><a
onClick="return confirm(\'Удалить урок и все его разделы?\')"
href="/index.php?page=lessons&action=droplesson&lesson=' .
$value["name"] . '">Удалить</a></td>' : false;

$table .= '<tr><td style="border:1px solid #000;">' .
$value['name'] . '</td><td style="border:1px solid #000;">' .
$value['lactors'] . '</td>' . $delete_button . '</tr>'; // Строка
таблицы: название, список преподавателей (2 столбца), а также, если
пользователь имеет доступ, ссылка удалить.

}

$table .= '</table>';

break;

case 'assessments': // Оценки

$res = $db->query('select * from \assessments');

$table = '<table border="1" style="border:1px solid #000;">';

foreach ($res as $key 😕> $value)

{

$table .= '<tr><td style="border:1px solid #000;">' .
$value['date'] . '</td><td style="border:1px solid #000;">' .
$value['lesson'] . '</td><td style="border:1px solid #000;">' .
$value['disciple'] . '</td><td style="border:1px solid #000;">' .
$value['assessment'] . '</td></tr>'; // Строка с датой, предметом,
учеником и оценкой.

}

$table .= '</table>';

break;

case 'lesson_topics': // темы предметов.

$res = $db->query('select * from \lesson_topics');

$table = '<table border="1" style="border:1px solid #000;">';

foreach ($res as $key 😕> $value)

{

$table .= '<tr><td style="border:1px solid #000;">' .
$value['date'] . '</td><td style="border:1px solid #000;">' .
$value['lesson'] . '</td><td style="border:1px solid #000;">' .
$value['topics'] . '</td></tr>'; // Дата, предмет и тема.

}

$table .= '</table>';

break;

default:

}

return $table; // Возвращает строку с таблицей.

}

функция checkRole: выясняет роль пользователя.

function checkRole($login = false, $role = 0) {
// 0 – учен

ик
// 1 – преподаватель
$json_conf = file_get_contents( '../config.json' ); // Подключение
данных JSON файла конфига.
$config = json_decode($json_conf, JSON_OBJECT_AS_ARRAY); //
Преобразование в массив.
require_once 'db.php';
$db = dbConnect();
$sql = 'select * from \lactors\ where \login\ = "' . $login . '"';
// SQL запрос к таблице преподавателей с поиском текущего логина.
$res = $db→query($sql); // // Получение результата.
if (isset($res->rowCount) || trim($login) == $config["metodist"])
$role = 1; // Если найден логин в таблице преподавателей или логин есть
в конфиге в опции metodist, $role равен 1.
return $role; // Возвращает номер роли.
}

6. index.php

Только отличия.

1. Подключение файла functions с передачей в переменную возвращаемого
значения функции homePage:
<?php require 'functions.php';
$page = homePage();
?>

В тайтле и h1 не $pagename, а $page:
<title><?= $page; ?> | Электронный журнал с использованием
технологии Блокчейн</title>

Контентный блок main с классом content пустой, т. к. в него приходят
данные по ajax:
<main class="content">
</main><!-- .content -->

4. js код в этом файле отличается. Добавляется функция отправки ajax в
первых двух условиях (Когда есть данные в localStorage или в
sessionStorage):
ajaxSend(viz_login); // Вызываем функцию отправки Ajax и передаём
ей логин.

Всё

Благодарю за внимание. С вами был незрячий автор, программист и делегат @denis-skripnik. До встречи в новых постах.

2
568.842 GOLOS
На Golos с November 2017
Комментарии (13)
Сортировать по:
Сначала старые