Я пытаюсь понять Xcrud - https://codecanyon.net/item/xcrud-data-management-system-php-crud/3215400
У меня есть 2 таблицы - обе почти идентичны по структуре с сотнями тысяч строк в одной из них (punli c стол). первая таблица является «общедоступной» таблицей, к которой имеют доступ все зарегистрированные пользователи, и она имеет дополнительную строку, называемую assigend user, которая, как правило, должна ограничивать возможность редактирования той строки / записи, которой назначен пользователь, но назначенный пользователь - он по-прежнему должен оставаться publi c в таблице publi c, но его нельзя редактировать другим пользователям, если только этот пользователь не удалит его из этой записи.
Вторая таблица представляет собой пользовательскую таблицу c, которая содержит только записи, добавленные текущим пользователем или отредактированные этим пользователем из таблицы publi c. для упрощения - первая таблица генерируется с использованием синтаксиса xcrud:
echo Xcrud::get_instance()->table('public_table');
и размещается на странице php с именем publi c. php
, а вторая одна и та же, только что указанная в другой таблице -
echo Xcrud::get_instance()->table('private_table');
, которая находится на другой странице, называемой приватной. php
, пока каждая таблица использует один файл php - и должен быть либо publi c, либо private - private означает, что только назначенные записи видны по идентификатору пользователя. проблемы, с которыми я столкнулся, - когда я пытался использовать совместные строки таблицы между двумя таблицами - assign_user и user_id в обеих, чтобы ограничить представления в соответствии с пользователем и указать назначенного пользователя, он просто не работает с закрытой таблицей. я полагаю, что я должен ссылаться на текущего вошедшего в систему пользователя в верхней части php файлов, чтобы я мог ограничить просмотры в соответствии с текущим пользователем, но я не могу найти переменную, которую я должен использовать для этого, не прерывая вывод всей страницы. возможно, я пытаюсь все это сделать неправильно и должен просто использовать систему на основе pribilage, как это делает xavier, и создать третью таблицу - роли и использовать ее, чтобы указать, какая таблица отображается в данный момент.
Полагаю, есть более простой способ сделать это. это - но я просто не могу туда добраться - когда пользователь в настоящее время редактирует какую-либо запись в таблице publi c, он должен предоставлять разрешения на редактирование только этому пользователю, но вместо этого он все равно показывает ее только в таблице publi c и не показывает его в таблице пользователей, и все еще доступен для редактирования всем другим пользователям - также в mysql он не добавляет эту запись в таблицу пользователей с назначенным идентификатором пользователя. похожее решение, которое я видел, состоит в том, чтобы каким-то образом разрешить пользователям импортировать все записи, которые они хотят, используя select statemnt в свою пользовательскую таблицу c, а затем ссылаться на записи по идентификатору пользователя в пользовательской таблице c, но опять же не имеют идея, как отредактировать исходный код, чтобы разрешить импорт, выбрав statemnt, оставив эту запись в обеих таблицах. любая помощь будет оценена ...
я подумал, что id может создать mysql таблицы как таковые -
CREATE TABLE `records` (
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_email` varchar(100) NOT NULL DEFAULT '',
`record_item1` varchar(144) NOT NULL DEFAULT '',
`user_role` ENUM('admin', 'not_registered', registered_user ) NOT NULL DEFAULT `not_registered`,
`assigned_user_id` bigint(400) unsigned NOT NULL,
PRIMARY KEY (`ID`),
KEY `assigned_user_id` (`user_ID`)
);
CREATE TABLE `users` (
`user_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_email` varchar(100) NOT NULL DEFAULT '',
`user_pass` varchar(255) NOT NULL DEFAULT '',
`user_role` ENUM('admin', 'not_registered', registered_user) NOT NULL DEFAULT `not_registered`,
`user_registration` datetime NULL DEFAULT NULL,
`user_status` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `user_email` (`user_email`)
);
И после этого попытаться использовать php для показа записей по id но я что-то упустил - это то, что я пытался
<tr>
<td><?php echo $res['id']; ?></td>
<td><?php echo $res['Username']; ?></td>
<td><?php echo $res['Email']; ?></td>
<td><?php echo $res['Assigned_Records']; ?></td>
<td>
<?php if($_SESSION['user']['role'] == 'admin', 'registered_user' ): ?>
<button class="w3-btn w3-green"><a href="clone.php?id=<?php echo $res['user_ID']; ?>">Clone / Import Record</a></button>
<button class="w3-btn w3-red"><a href="update.php?id=<?php echo $res['user_ID']; ?>">Update Record</a></button>
<?php elseif($_SESSION['user']['role'] == 'not_registered'): ?>
...
<?php endif; ?>
</td>
</tr>
Моя проблема начинается с того, как написать клон. php, чтобы разрешить импорт в другую таблицу для указанной записи c вместе с идентификатором пользователя, который импортировал и то же самое для обновления. php - без удаления записи из таблицы publi c.