Gå til innhold

Sortere og vise nyheter etter måned


Anbefalte innlegg

Skrevet

Heisann.

 

Jeg har et script som henter og viser en liste over nyheter fra en database, men listen er bare sortert etter dato. Jeg har sett flere steder at lista blir delt opp i grupper med hver måned, noe lignende dette:

Januar:

  - Nyhet

  - En annen nyhet

 

Februar:

  - En ny nyhet

Er det noen som kan hjelpe med med å få til dette?

Her er koden jeg bruker nå (ikke noe spesielt med den):

 

PHP
echo "<ul style=\"list-style-type: square;color: #900\">";

 

$query = "SELECT * FROM sys_news ORDER BY date DESC ";

$result = mysql_query($query) or die('Error, query failed');

 

while( $news = mysql_fetch_array( $result ) ) {

 

echo "<li style=\"font: 12px Verdana;\"><a href=\"/news/{$news['id']}/\">

" . $_lang->fetch_dynamic_token( "news_" . $news['id'] . "_headline" ) . "</a> 

(<small style=\"color:#900\">" . date( 'd/m/y', $news['date'] ) . "</small>)</li>";

 

}

 

echo "</ul>";

 

 

Takker for alle svar!

Videoannonse
Annonse
Skrevet

Du kan kjøre spørringer som henter alle nyheter hvor "date" er større enn 01.01.2006 00:00:01 og mindre enn 01.02.2006 00:00:01, osv... da får du nyhetene pr mnd...

Skrevet

echo "<ul style=\"list-style-type: square;color: #900\">";
   
for ($i = 1; $i < 13; $i++) {
$startDate = mktime(0, 0, 1, $i, 1, 2006);
$endDate = mktime(0, 0, 1, $i+1, 1, 2006);
$query  = "SELECT * FROM sys_news 
WHERE date>$startDate 
AND date<$endDate
ORDER BY date DESC ";
$result = mysql_query($query) or die('Error, query failed');

while( $news = mysql_fetch_array( $result ) ) {

echo "<li style=\"font: 12px Verdana;\"><a href=\"/news/{$news['id']}/\">
" . $_lang->fetch_dynamic_token( "news_" .  $news['id'] . "_headline" ) . "</a> 
(<small style=\"color:#900\">" . date( 'd/m/y', $news['date'] ) . "</small>)</li>";

}
}
echo "</ul>";

 

Ikke testet, men må vel bli noe sånt? (om date er unix-timestamp da?) ;)

Skrevet (endret)

Ser ut til å funke, men jeg må fortsatt kopiere koden for hver gang jeg vil ha en ny måned ;)

 

Fjerna for() og skriver inn første og siste dag i hver måned manuelt.

 

(hvis du vil se det live)

Endret av Runar
Skrevet

function showNews($maned) {
// Koden her
}

echo "Januar:";
echo showNews(1);
echo "<br>Februar:"; //lag avstand og whatever
echo showNews(2);

 

;)

Skrevet

Går an å gjøre det litt finere hvis vi bruker MySQLs innebygde funksjoner (og datoene er lagret med en dato-datatype).

PHP
<?php

for ($i 1$i 13$i++) {

$get_news mysql_query("SELECT * FROM sys_news WHERE MONTH(date) = $i ORDER BY date DESC");

while ($news mysql_fetch_assoc($get_news)) {

// bla bla bla

}

}

?>

Skrevet (endret)

Kan jeg ikke kjøre funksjoner inne i en ny funksjon?

 

Edit: Løste problemet med en global $_lang;

Endret av Runar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...