Błąd wyświetlania jednego posta kilka razy

0

Witam,
zacząłem pisać bloga od początku. Mam problem, a mianowicie chciałbym obok postu mieć wypisane kategorię z bazy. Jednak jak informację pobieram za pomocą pętli foreach to dla każdej kategorii dodawany jest nowy post. Więcej w załącznikach. Jeden post ma dwie kategorię.

Z bloga:

	<?php foreach ($jokes as $joke): ?>
		<article class="article"> 
			<div class="article-information">
			<p class="article-date">
			<?php
			$date = strtotime($joke['date']);
			$newdate = date('d m Y', $date); 
			echo $newdate; ?>
			</p>
			<p class="article-category"><?php echo $joke['category'];  ?></p></div>		
			<div class="article-text">
			<h3 class="article-title"><?php echo $joke['title']; ?></h3>
			<p><?php echo $joke['text']; ?></p>
			</div>
			<hr class="articlehr">
		</article>
	
		<?php endforeach; ?>

Z kontrolera:

try {
	$sql = "SELECT title, text, date, category FROM article
	INNER JOIN articlecategory 
	ON article.id = articleid
	INNER JOIN category 
	ON categoryid = category.id
	WHERE articleid=article.id";
	$result = $pdo->query($sql);
}

catch (PDOException $e)  {
	include './error.html.php';
	exit();
}

foreach ($result as $row) {
	$jokes[] = array(
	'title' => $row['title'],
	'text' => $row['text'],
	'date' => $row['date'],
	'category' => $row['category']
	);	
}

include './section.html.php';
1

Najprościej?

SELECT title, text, date, group_concat(category separator ',') categories FROM article
    INNER JOIN articlecategory 
    ON article.id = articleid
    INNER JOIN category 
    ON categoryid = category.id
    WHERE articleid=article.id
    GROUP BY title, text, date

1 użytkowników online, w tym zalogowanych: 0, gości: 1