Я хотел бы сгруппировать свои форумы по категориям, как показано здесь:
В настоящее время у меня есть таблица базы данных, называемая forum_categories
которая принимает заголовок и создает идентификатор для всех созданных категорий. У меня также есть столбец в таблице базы данных с именем forum_forums
(все разные форумы, которые я хочу классифицировать), который принимает значение с именем category_apart_of
.
Как я могу перечислить форумы в их правильном идентификаторе категории?
Спасибо огромное!
Если вы хотите увидеть какой-либо из моего кода или хотите, чтобы я объяснил что-то более подробное, скажите мне.
Мой текущий код для перечисления форумов (обратите внимание: SQL-запрос, чтобы получить все форумы выше):
<thead> <tr> <th style="width: 50%;">Forum</th> <th style="width: 10%;">Threads</th> <th style="width: 10%;">Posts</th> <th style="width: 30%;">Latest Posts</th> </tr> </thead> <tbody> <?php while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $forumID = $row['forumID']; $forum_title[] = $row['forum_title']; $forum_description[] = $row['forum_description']; $forum_total_threads[] = $row['forum_total_threads']; $forum_total_posts[] = $row['forum_total_posts']; $forum_latest_thread[] = $row['forum_latest_thread']; $stmt2 = $db->prepare("SELECT * FROM forum_threads WHERE forum_thread_belongs_to = '$forumID'"); $stmt2->execute(); $count = $stmt2->rowCount(); echo ' <tr><td><h4 style="margin-bottom: 0px;"><a style="margin-bottom: 0px;" href="forum.php?id=' . $row['forumID'] . ' ">'.$row['forum_title'] . '</a></h4><br /><h6 style="margin-bottom: 0px; margin-top: 0px;">' .$row['forum_description'].'</h6></td><td style="text-align: center;><span">'.$count .'</span></td><td style="text-align: center;><span">'.$row['forum_total_posts'] .'</span></td><td>'.$row['forum_latest_thread'].'</td></tr> '; } ?> </tbody>
DDL для обеих таблиц:
CREATE TABLE IF NOT EXISTS `forum_forums` ( `forumID` int(11) NOT NULL AUTO_INCREMENT, `forum_title` varchar(255) NOT NULL, `forum_description` varchar(255) NOT NULL DEFAULT 'This forum does not have a description', `forum_total_threads` int(255) NOT NULL DEFAULT '0', `forum_total_posts` int(255) NOT NULL DEFAULT '0', `forum_latest_thread` varchar(255) NOT NULL DEFAULT 'There are no new threads', `forum_apart_of` int(11) NOT NULL, `category_apart_of` int(11) NOT NULL, PRIMARY KEY (`forumID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `forum_categories` ( `catID` int(11) NOT NULL AUTO_INCREMENT, `cat_title` varchar(255) NOT NULL, PRIMARY KEY (`catID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Ваш вопрос: как мне перейти список форумов в их правильный идентификатор категории?
Решение. Поскольку у вас уже есть структура базы данных и как вы уже и, вероятно, знаете, для того, чтобы связать таблицу categories
с вашей таблицей forums
вам нужно иметь по крайней мере один столбец в обоих аналогичных, который является category_id
из таблицы categories
автоматически увеличивающийся столбец а именно как id
поэтому для категоризации вашего форума в конкретной категории вам нужно будет добавить id
категории в дополнительный столбец как category_id
в вашей таблице forums
чтобы каждый форум имел свою категорию, указанную там, где значение id.!
И тогда вы можете перечислить свои форумы по таким категориям, как:
Примечание. Этот код будет проверять каждую категорию форума, и он будет сортировать список всех этих форумов под каждой категорией.!
<?php //Assuming you have fetched whole data from forums table in $forums //And whole data from categories in $categories //So moving forward with the code foreach ($categories as $category) { echo "<h1>".$category['category_title']."</h1>"; $category_id = $category['category_id']; $query = mysqli_query($mysqli,"SELECT * FROM forums WHERE category_id='$category_id'"); $forums = array(); while ($rows = mysqli_fetch_array($query)) { $forums[] = $rows; } foreach ($forums as $forum) { echo "Title :".$forum['forum_title']."</br>"; echo "Descripton :".$forum['forum_description']."</br></br></br>"; } echo "</br></br></br></br>"; } ?>
ПРИМЕР РАБОЧИХ КОДОВ:
<?php $categories = array( array('id' => "04",'category_title' => "News & Support"), array('id' => "23",'category_title' => "Current Affairs"), array('id' => "12",'category_title' => "Politics")); $forums = array( array('forum_title' => "News 1",'category_id' => "04"), array('forum_title' => "News 2",'category_id' => "04"), array('forum_title' => "Current Afairs 1",'category_id' => "23"), array('forum_title' => "Current Afairs 2",'category_id' => "23"), array('forum_title' => "Politics 1",'category_id' => "12"), array('forum_title' => "Politics 2",'category_id' => "12")); foreach ($categories as $category) { echo "<h1>".$category['category_title']."</h1>"; $category_id = $category['id']; $output = array(); for ($i=0;$i<=count($forums);$i++) { if ($category_id == $forums[$i]['category_id']) { $add_forum = array('forum_title' => $forums[$i]['forum_title'],'category_id' => $forums[$i]['category_id']); array_push($output, $add_forum); } } for ($i=0;$i<=count($output);$i++) { echo "Title :".$output[$i]['forum_title']."</br>"; } echo "</br></br></br></br>"; } ?>
ВЫВОД :
News & Support Title :News 1 Title :News 2 Current Affairs Title :Current Afairs 1 Title :Current Afairs 2 Politics Title :Politics 1 Title :Politics 2