Avatar billede elkay Nybegynder
20. juli 2009 - 09:23 Der er 10 kommentarer

Indsætte dato i DB

Har en side med et dato felt. man kan vælge dato i en pop-up kalender, og den bliver så sat ind i feltet.

Jeg har nu brug for også at kunne vælge en periode fra -> til dato, og det skal sættes ind i databasen som enkelte datoer.
Ved ikke hvordan jeg skal gribe det an.

Databasen er mysql
Avatar billede mrgumble Nybegynder
20. juli 2009 - 09:42 #1
Prøv lige at uddybe det lidt mere.

Hvad er det, du forsøger at gemme i din database?
Avatar billede elkay Nybegynder
20. juli 2009 - 12:03 #2
hvis jeg angiver 14-07-2009 - 17-07-2009 som dato range
vil jeg have disse datoer sat ind i DB:

14-07-2009
15-07-2009
16-07-2009
17-07-2009

Altså start og slut datoer, samt dem der ligger imellem.
Avatar billede mrgumble Nybegynder
20. juli 2009 - 12:21 #3
Hvis vi ser bort fra problemer vedr. oprettelse af datoerne i php (pga. sproglige ting) og muligvis forkert SQL-syntax, kan du nok gøre det her:

$start = strtotime("07/14-2009");
$end = strtotime("07/17-2009");
$dates = Array();
for($d=$start; $d<=$end; $d=$d+3600*24)    {
  $dates[] = '('.date('m/d-Y', $d).')';
}
$sql = 'INSERT INTO tabel (dato) VALUES '.implode(', ',$dates).';';
echo $sql; // INSERT INTO tabel (dato) VALUES (07/14-2009), (07/15-2009), (07/16-2009), (07/17-2009)
Avatar billede showsource Seniormester
20. juli 2009 - 12:27 #4
Lyder umiddelbart ikke fornuftigt at ville gemme datoer som ligger mellem to datoer. ?

Hvorfor vil du gerne gemme de datoer i db ?

Og brug ALTID gerne standardformatet YYYY-MM-DD når du vil gemme i db.
Og feltet skal selvf. så være et DATE felt
Avatar billede elkay Nybegynder
20. juli 2009 - 13:40 #5
Jeg er ikke verdensmester i php eller mysql, grunden til at jeg vil gemme det på denne måde er såre simpel, findes der andre metoder??

Det skal bruges til et tidsregistreringssytem, og det skal være muligt at søge på en enkelt dato, og dermed se hvad der er sket denne dag.

gemmer selvfølgelig dato i std. format i DAATE felt
Avatar billede showsource Seniormester
21. juli 2009 - 07:58 #6
Nåhh, på den måde.
Men behøver du at gemme en dato førend der sker noget den pågældende dag ?

Men ellers skulle mrgumble forslag da vist virke.
Avatar billede mrgumble Nybegynder
21. juli 2009 - 08:51 #7
Det er måske muligt blot at gemme start- og slutdatoen pr. hændelse? Når du så vil se hvad der sker en bestemt dato kan du bruge:
  WHERE (startdate <= mydate AND enddate <= mydate)
med forbehold for åbne og lukkede intervaller og hvordan MySQL sammenligner datoer.
Avatar billede showsource Seniormester
21. juli 2009 - 09:23 #8
Eller
WHERE searchdate BETWEEN startfelt AND slutfelt

Eller, hvis kun start og slut gemmes i hvert row, og har et id som reference, og en anden tabel med timer m.m.

SELECT * FROM haendelser AS t1
INNER JOIN timetabel as t2
ON t2.ref_id = t1.id

( utestet ! )
Avatar billede showsource Seniormester
21. juli 2009 - 09:24 #9
Nåh, navne er lidt misvisvisende i sidste ex. men princippet er der vist :O)
Avatar billede elkay Nybegynder
21. juli 2009 - 21:57 #10
Tror jeg prøver med Mrgumbles forslag en af dagene, melder lige tilbage om det virker.
Tak for hjælpen indtil videre
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