에서 폭발 I 얻을 (다른 파일에있는)이 기능을 사용하여 데이터베이스에서 데이터 :태그 내 인덱스 파일에서 PHP
function get_all_threads($link, $start)
{
$threads = select_Query("SELECT thread.title, thread.id as t_id,
thread.content, author.username, author.id as a_id,
GROUP_CONCAT(DISTINCT tags.name ORDER BY tags.name DESC SEPARATOR ',') AS tags
FROM thread JOIN thread_tags ON thread.id = thread_tags.thread_id
JOIN tags ON thread_tags.tag_id = tags.id
INNER JOIN author on author.id = thread.author_id
GROUP BY thread.id DESC
LIMIT $start, 30", $link);
return $threads;
}
은 다음 내 인덱스 파일의 코드가 될 때를 :
$threads = get_all_threads($link, $start);
include FORUM_ROOT . 'html/main/threads.html.php';
threads.html.php
<?php foreach ($threads as $thread): ?>
<h1><?php echo $thread['title']; ?></h1>
<?php echo $thread['content']; ?>
<?php echo $thread['tags']; ?> <!-- All of these appear as one -->
<?php endforeach; ?>
에서
당신은 내가 스레드, 그 저자와 자신의 태그를 얻을 볼 수 있듯이. 그러나 나는 태그 GROUP_CONCAT를 사용, 그래서 각각의 태그를 같은 threads.html.php에서와 같이 링크를 확인하고자 할 때 :
<a href="?tag=<?php echo $thread['tags']; ?>" >
<?php echo $thread['tags']; ?>
</a>
모든 태그 표시를 예를 들어 태그가 사과한다면 하나 개의 링크 (같은 , 오렌지 바나나 그들은), apple, orange, banana하지 apple, orange로 banana을 나타납니다 :
<?php $tags = array();
$tags = explode(',', $thread['tags']);
?>
(Tagged:
<?php foreach ($tags as $tag): ?>
<a href="/tag?=<?php echo $tag;?>"><?php echo $tag; ?></a>
<?php endforeach; ?>)
을 그러나 나는 다음과 같이
내가 각을 통해 내가 폭발 사용할 수있는 이러한 태그를 분할 한 후 반복 알고 ~한다. 그런 다음 threads.html.php에서이 작업을 수행해야하며 프리젠 테이션 코드를 별도로 보관해야합니다.
index.php에서 더 좋은 방법이 있습니까? 또한 각 스레드를 반복하고 각 태그를 폭발하는 30 개 이상의
편집되어 스레드 너무 오래 걸릴 것
내 테이블 구조는 다음과 같다 :
스레드, author_threads, 저자 , 태그, thread_tags는 회신 author_replies
1 : http://apple, 오렌지, 바나나
db 테이블 구조를 추가 할 수 있습니까? –
가능하면 문제의 단순화를 원합니다. – Kissaki
'GROUP_CONCAT'이 SQL 표준이라고 생각하지 않습니다 ... 어떤 DBS를 사용합니까? – Kissaki