Gå til innhold

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


Anbefalte innlegg

Skrevet (endret)

Heisann!

 

Jeg holder på å lage arkiv av artiklene mine, og da vil jeg sortere dem for hver måned de ble skrevet.

 

Jeg er helt blank, og vil ha noe slikt som http://bza.no/arkiv/

 

Noen som kan hjelpe meg?

 

Tusen takk på forhånd!

Endret av -Dan
Videoannonse
Annonse
Skrevet

Jeg har de i en database der jeg tabellen heter date_added og jeg bruker time() når jeg skal lagre tidspunktet.

Skrevet (endret)

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
Skrevet (endret)

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
Skrevet

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

Skrevet

Hehe! Takk for hjelpen.

Jeg prøvde det du skrev Runar0, men hvordan skal jeg printe det ut slik at det blir under hver måned? Jeg prøvde meg fram, men kom ikke lenger. hehe!

Skrevet

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.

Skrevet

Litt offtopic: Er det noe forskjell på $rec->m og $rec['m']? Jeg har alltid brukt sistnevnte, men ser Lokaltog bruker den første.

Skrevet

$rec->m er m variabelen i $rec objektet, $rec['m'] er verdien med nøkken 'm' i array-et $rec.

 

Var det forstålig ?:p

Skrevet

Ah, så ikke at han brukte mysql_fetch_object før nå. Jeg vet jo egentlig forskjellen :p

 

Da kommer det et nytt spørsmål: Hvorfor bruke mysql_fetch_object fremfor mysql_fetch_array eller lignende?

Skrevet

Personlig bruker eg alltid *_fetch_object, men det er ein vanesak. Bruker du fetch_array så har du og mulighet til å bruke alle array_* funksjonene noe som ikkje går med objektene

Skrevet (endret)
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

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...