Gå til innhold

Hente spillejobber fra database


Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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