Avatar billede djsteiner Nybegynder
25. februar 2013 - 17:28 Der er 12 kommentarer og
1 løsning

Søge på fra og til dato i database tabel

Hej

Jeg har brug for til hjælp til en function.

jeg har en tabel med sæson priser. der er 3 forskellige sæsoner.

Sæson 1:

ID
1   
pris
3000 dk   

sæson-start
01012013
   
sæson-slut.
01042013

Fra font-end skal det så være muligt for kunden med brug af to dato-vægler at kunne søge på til og fra dato.

Her har jeg brug for hjælp til hvordan man søger på disse datoer i den database tabel sådan det er den rigtige sæson-pris der bliver udskrevet  ?

Håber dette giver mening! :)
Avatar billede erikjacobsen Ekspert
25. februar 2013 - 17:34 #1
Det vil være ret smart at bruge databasens indbyggede dato-format, og ikke 01012013. Du bruger PHP, og derfor er det måske MySql - der vil det sådan ud 2013-01-01, og det format kan man søge på.
Avatar billede djsteiner Nybegynder
25. februar 2013 - 19:49 #2
ja det er rigtigt det var også bare et eksempel.

Men spørgsmålet er så hvordan jeg laver en søgning i databasen?
Avatar billede erikjacobsen Ekspert
25. februar 2013 - 20:46 #3
Hvis det er lavet som et DATE-felt kan du:

  SELECT * FROM dintabel WHERE `sæson-start` >='2013-01-01' AND `sæson-start`<'2013-05-01'
25. februar 2013 - 20:53 #4
Der synes at være flere forskellige spørgsmål 'rullet op' i dette spørgsmål.

Et spørgsmål synes at være, hvordan man fra et php program i en databasetabel søger efter indhold mellem to datoer.  Jeg fortsætter erikjacobsens tankegang og antager, at databasen er mysql og at datoen i tabellen har datotype date.  Så ser tabellen måske således ud:

mytable
id dato pris
1 2013-01-01 3000
2 2013-05-01 4000
3 2013-09-01 5000

Hvis du i mysql vil have prisen i mytable mellem datoen 1 januar 2013 og 31 marts 2013 kan du bruge denne query:

SELECT pris FROM mytable WHERE dato BETWEEN '2013-01-01' AND '2013-04-30'

Fra PHP definerer du to variabler, for eksempel $start = '2013-01-01' og $slut = '2013-03-31', og dit databasekald kan så være, for eksempel:

$sql = "SELECT pris FROM mytable WHERE dato BETWEEN '$start' AND '$slut'";

Men hvis du nummererer sæsonerne og du har en pris for hver sæson, så skal du ikke lade kunderne søge efter prisen mellem to datoer.  Hvad hvis en kunde søger efter prisen mellem 1 februar og 1 oktober?  Så går der rav i den.  Det ville være bedre at lade kunden søge efter prisen for en sæson, for eksempel sæson 1.  Du kan så i databasen lave en tabel `sæson` således:

sæson
id startdato pris
1 2013-01-01 3000
2 2013-05-01 4000
3 2013-09-01 5000

Så giver du kunden muligheden for at vælge en sæson, for eksempel i en rulleliste, og du indfanger det valgte sæsonnummer i en variabel $sæson, og din query bliver:

$sql = "SELECT pris FROM sæson WHERE id = $sæsoN";
25. februar 2013 - 20:54 #5
Hovsa, jeg var så længe om at formulere mit indlæg #2, at ericjacobsen i mellemtiden indsendte indlæg #3, som jeg forøvrigt ikke er uenig i.
Avatar billede djsteiner Nybegynder
25. februar 2013 - 21:49 #6
Okay det vil sige at det er den sellect sætning i #3 som kan bruges til dette formål?
26. februar 2013 - 07:29 #7
Ja, select sætningen i #3 er en af mulighederne.  Jeg kommer så i #4 med andre muligheder.
Avatar billede olebole Juniormester
26. februar 2013 - 16:56 #8
<ole>

Du skal nok være opmærksom på, at de viste eksempler er forældede og ikke kan forventes at virke i kommende versioner af PHP.

Overvej i stedet at anvende MySQLI, som afløser det gamle MySQL-API. Du kan evt. begynde med denne guide

/mvh
</bole>
Avatar billede djsteiner Nybegynder
27. februar 2013 - 18:51 #9
Hej alle Mange tak for jeres hjælp! :)

Jeg har fået det til at virke :)

Olebole Jeg har læst din gode artikel mange tak.

Kan man give point til to?
Avatar billede olebole Juniormester
27. februar 2013 - 19:06 #10
Selvtak  =)

Hverken Erik eller jeg samler point, så Chistian og du må spille om dem  =)
27. februar 2013 - 20:35 #11
djsteiner, hvilken kode endte du så med at bruge?

Jeg opretter dette som svar, ifald du skønner, at mit indlæg har hjulpet.  I modsat fald må du så selv oprette et svar og acceptere det.
Avatar billede djsteiner Nybegynder
27. februar 2013 - 22:00 #12
Chistian jeg kunne godt bruge din og erikjacobsen  løsning. så smid et svar ? :)
27. februar 2013 - 22:08 #13
Meningen var, at #11 skulle have været et svar, men her kommer det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester