Nieuwsberichten groeperen per jaartal
ik ben bezig met een nieuwsberichten pagina: http://beta.bellewaerdefun.be/nieuws. Zoals je kunt zien heb ik een 100-tal persberichten in de database waardoor het nogal onoverzichtelijk oogt.
Ik had deze nieuwsberichten graag automatisch geordend op jaartal. Dit wil zeggen: een titel "Persberichten 2011" met daaronder alle persberichten van het jaar 2011. Idem voor alle andere persberichten voor de jaren 2010, 2009, 2008, 2007 en 2006.
De vraag is nu: hoe bouw je een query & script op dat alles mooi ordent zoals ik wens én dat zorgt dat er een nieuwe titel "Persberichten 2012" te voorschijn komt wanneer er in 2012 een persbericht toegevoegd wordt?
Dit is de structuur van mijn database:
news_id (id)
news_date (datum)
news_title (titel)
news_intro (intro tekstje)
news_text (volledig tekstbericht met XHTML inclusief)
En dit is wat ik tot nu toe al bedacht heb:
<h2>Persberichten Bellewaerde Park</h2>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
$news = new mysqli(MYSQL_SERVER,MYSQL_USER,MYSQL_PASS,MYSQL_DB);
if(mysqli_connect_errno()){
trigger_error('Fout bij verbinding: ' . $news->error);
}
$sql = "SELECT * FROM news";
if(!$result = $news->query($sql)){
trigger_error('Fout in query: ' . $news->error);
}else{
$totalRecords = $result->num_rows;
}
$sql = "SELECT news_id, DATE_FORMAT(news_date, '%d/%m/%y') AS date, DATE_FORMAT(news_date, '%Y') AS year, news_title, news_intro FROM news ORDER BY news_id DESC";
if(!$result = $news->query($sql)){
trigger_error('Fout in query: ' . $news->error);
}else{
echo '<ul>';
while($row = $result->fetch_assoc()){
echo '<li>' . $row['date'] . ' - <a href="/nieuws/' . $row['year'] . '/' . $row['news_id'] . '" title="' . $row['news_title'] . '">' . substr_replace($row['news_title'], '...', 80) . '</a></li>';
}
echo '<ul>';
}
$news->close();
?>
$news = new mysqli(MYSQL_SERVER,MYSQL_USER,MYSQL_PASS,MYSQL_DB);
if(mysqli_connect_errno()){
trigger_error('Fout bij verbinding: ' . $news->error);
}
$sql = "SELECT * FROM news";
if(!$result = $news->query($sql)){
trigger_error('Fout in query: ' . $news->error);
}else{
$totalRecords = $result->num_rows;
}
$sql = "SELECT news_id, DATE_FORMAT(news_date, '%d/%m/%y') AS date, DATE_FORMAT(news_date, '%Y') AS year, news_title, news_intro FROM news ORDER BY news_id DESC";
if(!$result = $news->query($sql)){
trigger_error('Fout in query: ' . $news->error);
}else{
echo '<ul>';
while($row = $result->fetch_assoc()){
echo '<li>' . $row['date'] . ' - <a href="/nieuws/' . $row['year'] . '/' . $row['news_id'] . '" title="' . $row['news_title'] . '">' . substr_replace($row['news_title'], '...', 80) . '</a></li>';
}
echo '<ul>';
}
$news->close();
?>
Iemand een ideetje? ;)