golovan Skrevet 8. oktober 2006 Del Skrevet 8. oktober 2006 Hei Jeg driver og lager en database (mySQL) hvor jeg skal legge inn alle spillejobber til et band. Databasen har jeg laget slik: CREATE TABLE `gigs` ( `id` int(10) unsigned NOT NULL auto_increment, `venue` varchar(255) NOT NULL default '', `when` int(8) NOT NULL default '0', `info` varchar(255) default NULL, PRIMARY KEY (`id`) ) Meget mulig dette ikke er en god løsning, så hvis noen har kommentarer til selve DB'en, er de most welcome. Uansett, greia er at jeg trenger en måte å hente ut spillejobbene på, og sortere disse. Jeg har tenkt slik at 'when' skal være på formen YYYYMMDD (feks 20060102). Når jeg henter ut til skjerm skal datoene sorteres slik at først får man "Upcoming gigs" og deretter i en egen liste "Previous gigs". "Upcoming" må sorteres slik at neste konsert kommer først, og blir liggende helt til datoen for konserten har vært, og kommende konserter fortløpende etter denne. "Previous" skal sorteres med siste konsert først. Ser for meg at trikset da er å sortere etter 'when'. Forøvrig skal datoene for spillejobbene skrives ut på formen "October 21 2006". Har noen en enkel måte å gjøre dette på? Jeg skal bruke PHP til å kjøre spørringene. Lenke til kommentar
Peter Skrevet 8. oktober 2006 Del Skrevet 8. oktober 2006 Dette er et rent databasespørsmål, at spørringene kjøres fra php har lite med saken å gjøre. Personlig skjønner jeg ikke hvorfor du ikke bruker TIMESTAMP som format på when, men det er jo så. Kommende arrangementer SELECT * FROM gigs WHERE when > NOW() ORDER BY when ASC Arrangementer som har vært SELECT * FROM gigs WHERE when < NOW() ORDER BY when DESC En liten titt i dokumentasjonen skader sikkert ikke: http://dev.mysql.com/doc/refman/4.1/en/dat...time-types.html Lenke til kommentar
golovan Skrevet 8. oktober 2006 Forfatter Del Skrevet 8. oktober 2006 Fikk det til på et vis: <?php $hentText = 'SELECT * FROM gigs ORDER BY id'; $resultHentText = mysql_query($hentText) or die ('Query failed: ' .mysql_error()); echo '<h1 class="th">Upcoming gigs</h1><ul>'; while ($row = mysql_fetch_assoc($resultHentText)) { if($row["when"]>=date('Ymd')){ $datoen = $row["when"]; $year = substr($datoen, 0, 4); //hent de fire første siffer $month = substr($datoen, 4,2); //hent ut de 2 neste siffer $day = substr($datoen, 6, 2); //hent ut de to siste siffer $timestamp = mktime (0,0,0, $month, $day, $year); $formated_date = ucwords(strftime("%A %d %B %Y", $timestamp)); echo '<li>'.$row["venue"].' '.$formated_date.'.<br>'.$row["info"].'</li>'; } } echo'</ul>'; $resultHentText = mysql_query($hentText) or die ('Query failed: ' .mysql_error()); echo'<h1 class="th">Previous gigs</h1><ul>'; while ($row = mysql_fetch_assoc($resultHentText)) { if($row["when"]<date('Ymd')){ $datoen = $row["when"]; $year = substr($datoen, 0, 4); //hent de fire første siffer $month = substr($datoen, 4,2); //hent ut de 2 neste siffer $day = substr($datoen, 6, 2); //hent ut de to siste siffer $timestamp = mktime (0,0,0, $month, $day, $year); $formated_date = ucwords(strftime("%A %d %B %Y", $timestamp)); echo '<li>'.$row["venue"].' '.$formated_date.'.<br>'.$row["info"].'</li>'; } } echo'</ul>'; mysql_free_result($resultHentText); ?> Men syns det ser litt heavy ut? Går det an å løse det på en enklere måte? Lenke til kommentar
Peter Skrevet 8. oktober 2006 Del Skrevet 8. oktober 2006 Ved å spare på resultatene kunne du ihvertfall sluppet unna å kjøre to spørringer, og ettersom du bruker nøyaktig samme format på begge utskriftstypene (før og etter), så ville jeg heller lagt dette i en funksjon som tok inn arrayet (resultatet), og skrev dette ut formatert. Lenke til kommentar
golovan Skrevet 8. oktober 2006 Forfatter Del Skrevet 8. oktober 2006 (endret) Ved å spare på resultatene kunne du ihvertfall sluppet unna å kjøre to spørringer, og ettersom du bruker nøyaktig samme format på begge utskriftstypene (før og etter), så ville jeg heller lagt dette i en funksjon som tok inn arrayet (resultatet), og skrev dette ut formatert. 7026888[/snapback] Det høres lurere ut ja. Men hvordan gjør jeg det? Er ikke stø i hverken arrays eller funksjoner dessverre... EDIT: Så plutselig at jeg selvfølgelig ikke kan sortere etter id i spørringa. Må bruke when som sorteringssak, og da får jeg vel to spørringer? En med ORDER BY when ASC og en med ORDER BY when DESC slik du skisserte over? Endret 8. oktober 2006 av golovan 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å