Gå til innhold

Sortering av artikler etter måned[Løst]


Anbefalte innlegg

Videoannonse
Annonse

Kjapt forslag (har testet koden, funker fint):

$res = mysql_query("select day(datecol) d, monthname(datecol) m, year(datecol) y, title from articles order by datecol desc");
$date = array(null, null, null);

while($rec = mysql_fetch_object($res))
{
	 if($date[2] != $rec->y) { echo '<h2>'. $rec->y .'</h2>'; }
	 if($date[1] != $rec->m) { echo '<h3>'. $rec->m .'</h3>'; }
	 echo "<li>$rec->d: $rec->title</li>";
	 $date = array($rec->d, $rec->m, $rec->y);
}

Endret av Lokaltog
Lenke til kommentar

Lokaltog, i den koden så er vel datecol av typen date, ettersom at -Dan bruker time() (tipper på int(11) eg da) så må du bruke FROM_UNIXTIME før du kan bruke noen av dato funksjonene, day(), month() og year(). Sql'en blir slik da:

 

select day(from_unixtime(datecol)) d, monthname(from_unixtime(datecol)) m, year(from_unixtime(datecol)) y, title from articles order by datecol desc

 

-Dan: Enkleste er da selfølgelig å bruke ei kollone av typen date eller datetime når du lagrer artikkler ettersom at dette er ein datatype tilpassa lagring av datoer.

Endret av Runar0
Lenke til kommentar

Han kan jo også ha brukt en date/datetime/timestamp-kolonne, og satt inn dataene med FROM_UNIXTIME('. time() .'), selv om jeg tviler på at det er slik det er gjort. Jeg leste ikke posten hans godt nok, men du har så klart rett. Det definitivt enkleste er om han bruker en tids-datatype i MySQL. :)

 

Men koden min funker fortsatt :p

Lenke til kommentar

Vist du tar min sql spørring inn i lokaltog sin kode så bør du ha dei sortert etter måned og år.

 

Idéen er at når du looper igjennom resultatet så skjekker du om måneden til den forje posten er like den du har nå, vist ikkje printer du ut ein header eller liknande.

Lenke til kommentar
Vist du tar min sql spørring inn i lokaltog sin kode så bør du ha dei sortert etter måned og år.

 

Tusen takk for all hjelpen! :D

Ble ikke helt likt inne i innen for while siden jeg skulle ha dem i arrays for så å printe dem ut foreach i et template.

 

while($rec = $db->fetchObj())
{
$article = array(
	'title' => $rec->title,
	);

if (isset($month[$rec->m])){
		$month[$rec->m]['article'][] = $article;
	}else{
			$month[$rec->m] = array(
			   'm' => $rec->m,
			   'y' => $rec->y,
			   'article' => array($article)
			);
		}
	}

 

Men uansett, takk. Slik ble det: http://danforum.net/arkiv

Endret av -Dan
Lenke til kommentar

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...