Я что-то царапаю себе над чем-то, и для жизни меня не может понять это?Php PDO MySQL Table join
Я создаю небольшое приложение на работе, которое напоминает мини-CMS. Вот как это работает.
ситуация пользователя:
журналы пользователей в системе и может видеть список категорий, которым они имеют доступ к (выпуск № 1) они щелкают в эту категорию и там будет список документации, которые связаны с этой категорией (выпуск № 2), они нажимают на этот документ, и они могут видеть информацию о доке (документы doc/docs, на которые я имею в виду, являются только магазинами строк в базе данных и прекрасно работают).
выпуск № 1 - Я не уверен, как ограничить доступ пользователей к определенным категориям или контролировать доступ к этим категориям.
выпуск № 2 - Я разработал, как назначить «doc» для категории, но только 1, и мне нужно, чтобы «doc» имел возможность быть частью нескольких групп, если это необходимо.
Вот как я установил все это вверх:
На странице категории просмотра я захватить данные, чтобы показать категории, как так:
"SELECT * FROM cat_list ORDER BY cat_title ASC"
- Мне нужно ограничить, какие категории пользователей см.
При нажатии на категорию это как я запрос к БД:
"SELECT * FROM cat_list WHERE cat_id = ?"
Я получаю кота идентификатор из URL, так что я знаю, что я нахожусь в этой категории.
Ниже этого я делаю еще один запрос, чтобы показать только документы, относящиеся к этой категории (который работает)
"SELECT doc_list.doc_title, doc_list.cat_no, doc_id FROM doc_list WHERE cat_no = ?"
- Но вопрос в таблице doc_list У меня есть колонки под названием cat_no, который является идентификатором кошка и я можем хранить только 1 за один раз, когда документы могут быть aprt из нескольких категорий.
Надеюсь, это имеет смысл?
Вот моя установка базы данных:
категоризации: Таблица:
CREATE TABLE `cat_list` (
`cat_id` int(11) NOT NULL,
`cat_title` varchar(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf16 AUTO_INCREMENT=5 ;
Таблица документа:
CREATE TABLE `doc_list` (
`doc_id` int(11) NOT NULL,
`doc_title` varchar(50) NOT NULL,
`doc_content` text NOT NULL,
`doc_created` datetime NOT NULL,
`doc_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`user_id` int(11) NOT NULL,
`cat_no` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf16 AUTO_INCREMENT=122 ;
Пользователь таблица:
CREATE TABLE `user_login` (
`id` int(11) NOT NULL,
`username` text NOT NULL,
`firstname` varchar(30) NOT NULL,
`lastname` varchar(50) NOT NULL,
`password` varchar(64) NOT NULL,
`psalt` text NOT NULL,
`role` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
UPDATE
<?php require_once '../db_con.php';
if(!empty($_GET['cat_id'])){
$cat = intval($_GET['cat_id']);
try{
$results = $dbh->prepare("SELECT * FROM doc_list WHERE FIND_IN_SET(4, cat_no)"); // I need that number in the FIND_IN_SET to refelct the category I am in
$results->bindParam(1, $cat);
$results->execute();
} catch(Exception $e) {
echo $e->getMessage();
die();
}
$doc = $results->fetchAll(PDO::FETCH_ASSOC);
if($doc == FALSE){
echo '<div class="container">';
echo "<img src='../img/404.jpg' style='margin: 40px auto; display: block;' />";
echo "<h1 style='margin: 40px auto; display: block; text-align: center;' />Oh Crumbs! You upset the bubba!</h1>";
echo '<a href="userList.php" style="margin: 40px auto; display: block; text-align: center;">Get me outta here!</a>';
echo'</div>';
die();
}
}
?>
Как вы можете выше можно вернуть значение документации в тех категориях, но мне нужно, чтобы взять идентификатор категории Я нахожусь и показать результаты, как в данный момент он работает, только назначая статическое число, как показано выше (4, cat_no) «Мне нужно, чтобы он указывал номер для ссылки на cat_id страницы, на которой я нахожусь
Пожалуйста, смотрите комментарии к вопросу от @prembaranwal, который помог мне ответить на мой собственный вопрос –