Я хотел бы сгруппировать мои форумы по категориям, как показано здесь:
В настоящее время у меня есть таблица базы данных под названием 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
таблица, так что каждый форум будет иметь свою категорию, упомянутую там в значении идентификатора ..!
И тогда вы можете перечислить ваши форумы по категориям, например, как:
Замечания : Этот код будет проверять каждую категорию форумов и сортирует список всех форумов в каждой категории ..!
<?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 2Current Affairs
Title :Current Afairs 1
Title :Current Afairs 2Politics
Title :Politics 1
Title :Politics 2
Других решений пока нет …