-Dan Skrevet 4. mai 2008 Del Skrevet 4. mai 2008 (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 6. mai 2008 av -Dan Lenke til kommentar
Ernie Skrevet 5. mai 2008 Del Skrevet 5. mai 2008 Det spørs jo litt ut fra hvordan du har lagret artiklene det da. Lenke til kommentar
-Dan Skrevet 5. mai 2008 Forfatter Del Skrevet 5. mai 2008 Jeg har de i en database der jeg tabellen heter date_added og jeg bruker time() når jeg skal lagre tidspunktet. Lenke til kommentar
Lokaltog Skrevet 5. mai 2008 Del Skrevet 5. mai 2008 (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 5. mai 2008 av Lokaltog Lenke til kommentar
Runar0 Skrevet 5. mai 2008 Del Skrevet 5. mai 2008 (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 5. mai 2008 av Runar0 Lenke til kommentar
Lokaltog Skrevet 5. mai 2008 Del Skrevet 5. mai 2008 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 Lenke til kommentar
-Dan Skrevet 5. mai 2008 Forfatter Del Skrevet 5. mai 2008 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! Lenke til kommentar
Runar0 Skrevet 6. mai 2008 Del Skrevet 6. mai 2008 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
Runar Skrevet 6. mai 2008 Del Skrevet 6. mai 2008 Litt offtopic: Er det noe forskjell på $rec->m og $rec['m']? Jeg har alltid brukt sistnevnte, men ser Lokaltog bruker den første. Lenke til kommentar
Runar0 Skrevet 6. mai 2008 Del Skrevet 6. mai 2008 $rec->m er m variabelen i $rec objektet, $rec['m'] er verdien med nøkken 'm' i array-et $rec. Var det forstålig ? Lenke til kommentar
Runar Skrevet 6. mai 2008 Del Skrevet 6. mai 2008 Ah, så ikke at han brukte mysql_fetch_object før nå. Jeg vet jo egentlig forskjellen Da kommer det et nytt spørsmål: Hvorfor bruke mysql_fetch_object fremfor mysql_fetch_array eller lignende? Lenke til kommentar
Runar0 Skrevet 6. mai 2008 Del Skrevet 6. mai 2008 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 Lenke til kommentar
-Dan Skrevet 6. mai 2008 Forfatter Del Skrevet 6. mai 2008 (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! 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 6. mai 2008 av -Dan 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å