내 스크립트의 하위 카테고리 '포럼'이 해당 카테고리에 속하지 않는 이유에 대한 단서가 없습니다. 대신 하위 카테고리는 스크립트로 하여금 카테고리 코드를 반복하도록합니다.PHP + MySQL 카테고리가 표시되지 않아야 함
아래 이미지에서와 같이 카테고리 Test는 해당 카테고리의 테스트 및 버그입니다. 그러나 Bugs는 두 번째 테이블에 들어가야합니다. 두 가지 테스트 카테고리가 하나가 아니어야하며 대신 Test라는 데이터베이스에 두 개의 카테고리가있는 것처럼 보입니다. 내 코드에서 Bugs가 Test - Just a simple test forum이 아닌 copy-Category "Test"로 푸시되고 있다는 것은 무엇입니까? 여기
그리고
는 코드입니다.<?php
include 'connect.php';
include 'header.php';
$sql = "SELECT
categories.cat_id,
categories.cat_name,
forums.forum_id,
forums.forum_cat,
forums.forum_name,
forums.forum_desc,
COUNT(forums.forum_id) AS forums
FROM
categories
LEFT JOIN
forums
ON
forums.forum_cat = categories.cat_id
GROUP BY
forums.forum_name, forums.forum_desc, forums.forum_id
ORDER BY
categories.cat_id ASC
";
$result = mysql_query($sql);
if(!$result)
{
echo 'The categories could not be displayed, please try again later.';
}
else
{
if(mysql_num_rows($result) == 0)
{
echo 'No categories defined yet.';
}
else
{
//prepare the table
while($row = mysql_fetch_assoc($result))
{
echo '<table border="1">
<tr>
<th>' . $row['cat_name'] . '</th><th></th>
</tr>';
echo '<tr>';
echo '<td class="leftpart">';
echo '<h3><a href="viewforum.php?id=' . $row['forum_id'] . '">' . $row['forum_name'] . '</a></h3>' . $row['forum_desc'];
echo '</td>';
echo '<td class="rightpart">';
//fetch last topic for each cat
$topicsql = "SELECT
topic_id,
topic_subject,
topic_date,
topic_cat
FROM
topics
WHERE
topic_cat = " . $row['forum_id'] . "
ORDER BY
topic_date
DESC
LIMIT
1";
$topicsresult = mysql_query($topicsql);
if(!$topicsresult)
{
echo 'Last topic could not be displayed.';
}
else
{
if(mysql_num_rows($topicsresult) == 0)
{
echo 'no topics';
}
else
{
while($topicrow = mysql_fetch_array($topicsresult))
echo '<a href="viewtopic.php?id=' . $topicrow['topic_id'] . '">' . $topicrow['topic_subject'] . '</a> at ' . date('d-m-Y', strtotime($topicrow['topic_date']));
}
}
echo '</td>';
echo '</tr>';
echo '</br>';
}
}
}
include 'footer.php';
?>
테이블 구조
카테고리
cat_id | int(8) | primary | auto incr
cat_name | var(255)
|2|Damm
|3|Hmm
|1|Test
포럼
forum_id | int(8) | primary | auto_incr
forum_cat | int(8) <-- forum cat "category" is just ID of category it belongs to
forum_name | var(255)
forum_desc | var(255)
|1|1|Test|Just a simple forum test
|2|3|Lol
|3|1|Bugs|Bugs and related go here
항목
topic_id | int(8) | primary | auto_incr
topic_subject | var(255)
topic_date | datetime
topic_cat | int(8)
topic_by | int(8)
|1|Test|2012-07-31 23:12:47|1|1
저는 개인적으로 다른 시도를했지만 여전히 이런 일이 발생하는 이유를 알 수 없습니다.
관련 테이블의 구조를 게시 할 수 있습니까? – David
나는 그 질문을 아주 잘 따르지 않는다. 카테고리 테이블에 비정규 화 된 "마지막 토픽"을 추가하는 것이 좋습니다 (여러 개의 쿼리를 저장하고 중요하지 않은 것은 두 개의 항목으로 두 번 업데이트됩니다). 그렇지 않으면 질문을 따를 수 없습니다. – Robbie
@Robbie 엉덩이처럼 들리고 싶지 않지만 이미지를 넣은 이유는 무엇입니까? 설명했듯이 Bugs는 복사해서는 안되는 "Test"라는 복사본 카테고리를 만들고 대신 테스트 아래에 있어야합니다 - 단순한 테스트 포럼이지만 이미지에서 볼 수 있듯이 실제 카테고리 대신 사본 카테고리에로드됩니다. 하나 있어야했습니다. –