Настраиваемая CMS как создавать категории для сообщений с помощью базы данных PHP/MySQL
Я ищу по всему Интернету, но, похоже, не могу найти простой учебник, который мог бы помочь мне с моей пользовательской CMS, которую я создаю.
Я хотел бы добавить несколько категорий в свои сообщения.
Например:
Title: post 1
Content: content goes here
Categories: Technology, Computers, Science, Internet
Title: post 2
Content: content goes here
Categories: Music, Jazz, Classic
Итак, вот что я должен опубликовать в своих статьях
Структура моей базы данных
postID | postTitle | postDesc | postCont | postDate
1 Post 1 info1 content1 date1
2 Post 2 info2 content2 date2
3 Post 3 info2 content3 date3
ФОРМА
<form action='' method='post'>
<p><label>Title</label><br />
<input type='text' name='postTitle' value='<?php if(isset($error)){ echo $_POST['postTitle'];}?>'></p>
<p><label>Description</label><br />
<textarea name='postDesc' cols='60' rows='10'><?php if(isset($error)){ echo $_POST['postDesc'];}?></textarea></p>
<p><label>Content</label><br />
<textarea name='postCont' cols='60' rows='10'><?php if(isset($error)){ echo $_POST['postCont'];}?></textarea></p>
<p><input type='submit' name='submit' value='Submit'></p>
</form>
PHP-код для размещения его в базе данных
//insert into database
$stmt = $db->prepare('INSERT INTO blog_posts (postTitle,postDesc,postCont,postDate) VALUES (:postImage, :postTitle, :postDesc, :postCont, :postDate)') ;
$stmt->execute(array(
':postTitle' => $postTitle,
':postDesc' => $postDesc,
':postCont' => $postCont,
':postDate' => date('Y-m-d H:i:s')
));
//redirect to index page
header('Location: index.php?action=added');
exit;
1 answers
Вот пример основного принципа Отношений "Многие ко многим", который подходит для этой задачи. Связь "многие ко многим" - это шаблон проектирования между двумя таблицами, когда одна или несколько строк в одной таблице могут быть связаны с несколькими строками в другой таблице. Связь между двумя таблицами хранится в третьей таблице, в которой хранятся первичные ключи каждой связи (столбцы postID
и categoryID
).
Примеры базы данных таблицы:
post postID | postTitle | postDesc | postCont | postDate 1 Post 1 info1 content1 date1 2 Post 2 info2 content2 date2 3 Post 3 info2 content3 date3 post_category postID | categoryID 1 1 2 5 3 1 2 6 3 3 2 7 1 2 1 3 1 4 category categoryID | categoryTitle 1 Technology 2 Computers 3 Science 4 Internet 5 Music 6 Jazz 7 Classic
Примеры запросов MySQL:
MySQL query to get all categories related to post SELECT * FROM `category` NATURAL JOIN `post_category` WHERE postID=1 categoryID | categoryTitle | postID 1 Technology 1 2 Computers 1 3 Science 1 4 Internet 1 MySQL query for all posts of the category SELECT * FROM `post` NATURAL JOIN `post_category` WHERE categoryID=1 postID | postTitle | postDesc | postCont | postDate | categoryID 1 Post 1 info1 content1 date1 1 3 Post 3 info2 content3 date3 1