Runar Skrevet 26. november 2006 Del Skrevet 26. november 2006 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! Lenke til kommentar
ZoRaC Skrevet 26. november 2006 Del Skrevet 26. november 2006 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... Lenke til kommentar
Runar Skrevet 26. november 2006 Forfatter Del Skrevet 26. november 2006 Tenkte det samme, men da må jeg vel ha en kode for hver måned? Lenke til kommentar
ZoRaC Skrevet 26. november 2006 Del Skrevet 26. november 2006 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?) Lenke til kommentar
Runar Skrevet 26. november 2006 Forfatter Del Skrevet 26. november 2006 (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 20. januar 2010 av Runar Lenke til kommentar
ZoRaC Skrevet 26. november 2006 Del Skrevet 26. november 2006 Du skal ikke trenge å kopiere koden når du har for-løkken? Men, så lenge det virker Lenke til kommentar
Runar Skrevet 26. november 2006 Forfatter Del Skrevet 26. november 2006 Den lager ikke avstand og lignende mellom gruppene, som er noe jeg vil ha. Ellers var koden fin Lenke til kommentar
ZoRaC Skrevet 26. november 2006 Del Skrevet 26. november 2006 function showNews($maned) { // Koden her } echo "Januar:"; echo showNews(1); echo "<br>Februar:"; //lag avstand og whatever echo showNews(2); Lenke til kommentar
endrebjo Skrevet 26. november 2006 Del Skrevet 26. november 2006 Går an å gjøre det litt finere hvis vi bruker MySQLs innebygde funksjoner (og datoene er lagret med en dato-datatype). PHP <?phpfor ($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 } } ?> Lenke til kommentar
Runar Skrevet 26. november 2006 Forfatter Del Skrevet 26. november 2006 (endret) Kan jeg ikke kjøre funksjoner inne i en ny funksjon? Edit: Løste problemet med en global $_lang; Endret 26. november 2006 av Runar Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå