Avatar billede mibu Nybegynder
08. august 2007 - 20:34 Der er 21 kommentarer og
1 løsning

Brug af valgt datoindtastning på flere måder

Jeg har en form side der finder oplysninger i min db, ud fra et dato intervalg. Her bruger jeg en datepicker, mit datoformat er Y-m_d

Så langt så godt, hvis jeg nu søger på en oplysning mellem - $dato1 og $dato2, hvordan kan jeg lave min søgning også finder den samme information, i det samme intervalg - bare et år tidligerer.

jeg har også brug for samtidig, at finde oplysninger i en anden tabel, ikke i det datointervalget, men bare i året.

Eks. jeg søger i tabel1 i intervalget 2007-01-01 til 2007-12-31
men vil samtidig har samme indformation fra 2006-01-01 til 2007-12-31
Derudover information fra tabel2 i 2007

Og det hele skal ske bare ved at bruger vælger fra:2007-01-01 til 2007-12-31

Er der nogen forslag
Avatar billede jakobdo Ekspert
08. august 2007 - 20:37 #1
Du kan bruge mysql funktionen: DATE_ADD()
Der kan du lave:

DATE_ADD('2007-08-08', INTERVAL +1 YEAR) giver: 2008-08-08
DATE_ADD('2007-08-08', INTERVAL -1 YEAR) giver: 2006-08-08
Avatar billede jakobdo Ekspert
08. august 2007 - 20:39 #2
Du kan også lave det med php's funktion: strtotime()

echo date('Y-m-d',strtotime("+1 year")); //giver 2008-08-08
echo date('Y-m-d',strtotime("-1 year")); //giver 2006-08-08
Avatar billede mibu Nybegynder
08. august 2007 - 20:45 #3
Tak skal du ha´ !
Det skulle ikke hedde Eksperten - men Ekspressen :-)
Er du lige så hurtig til at lægge et svar! :-)
Avatar billede mibu Nybegynder
08. august 2007 - 20:49 #4
jeg kan allerede ser at det bliver DATE_ADD funktionen jeg skal bruge.
Avatar billede jakobdo Ekspert
08. august 2007 - 21:01 #5
Svar!
Avatar billede jakobdo Ekspert
08. august 2007 - 21:01 #6
Jeg har bare ikke noget liv! :o)
Avatar billede jakobdo Ekspert
08. august 2007 - 21:44 #7
Takker for point.
Avatar billede mibu Nybegynder
13. august 2007 - 10:54 #8
Jeg har prøvet at lave min streng om med DATE_ADD men i følge dokumentatioen kan jeg vist ikke (på min måde i hvert fald)

// Streng der skal hente et år bagud i forhold til indtastning
SELECT SUM(`ind` + `udd`) FROM min tabel WHERE dato BETWEEN('". $dato1 ."' , INTERVAL -1 YEAR) AND ('". $dato2 ."' , INTERVAL -1 YEAR)"), 0);

//og mine forsøg
SELECT DATE_ADD and SUM(`ind` + `ud`) FROM mintabel WHERE dato BETWEEN('". $dato1 ."' , INTERVAL -1 YEAR) AND ('". $dato2 ."' , INTERVAL -1 YEAR)"), 0);

og

SELECT SUM(`ind_b` + `ind_k`) FROM 20_kontingent WHERE dato BETWEEN DATE_ADD ('". $dato1 ."' , INTERVAL -1 YEAR) AND ('". $dato2 ."' , INTERVAL -1 YEAR)"), 0);
Avatar billede mibu Nybegynder
13. august 2007 - 10:55 #9
Er der en metode der virker?
Avatar billede mibu Nybegynder
13. august 2007 - 10:57 #10
UPS! se bort fra de steder hvor jeg har tastet med en af mine 9 tommelfingerer :-)
Avatar billede jakobdo Ekspert
13. august 2007 - 17:28 #11
Vil det sige det virker?
Eller har du stadig problemer?
Avatar billede mibu Nybegynder
14. august 2007 - 14:11 #12
Nej desværre! Jeg kan ikke rigtigt greje hvordan jeg får flettet DATE_ADD sammen med det andet.
//Denne streng henter som den skal.
SELECT SUM(`ind2` + `ind1`) FROM min tabel WHERE dato BETWEEN '". $dato1 ."' AND '". $dato2 ."'"), 0);

Men hvordan får jeg den til at hente det samme, bare et år tidligere. Jeg skal bruge det to resultater i en sammenligning.
Avatar billede mibu Nybegynder
14. august 2007 - 14:16 #13
Og i en anden tabel skal jeg i øvrigt også hente information, men kun ud fra årstalet i f.eks. $dato1.
Avatar billede jakobdo Ekspert
14. august 2007 - 22:18 #14
Det burde være:

SELECT SUM(`ind2` + `ind1`) FROM min tabel WHERE dato BETWEEN DATE_ADD('". $dato1 ."', INTERVAL -1 YEAR) AND DATE_ADD('". $dato2 ."',INTERVAL -1 YEAR)"), 0);
Avatar billede mibu Nybegynder
15. august 2007 - 10:07 #15
Ah! Det var den med DATE_ADD foran begge $dato jeg íkke fik med.

Kan man på samme måde være "kun" at bruge årstallet ?
Måske sådan i den her stil.

SELECT * FROM min_anden_tabel WHERE dato DATE_ADD('". $dato1 ."', brug kun YEAR)"), 0);
Avatar billede jakobdo Ekspert
15. august 2007 - 10:15 #16
Du kan med funktionen YEAR('2007-08-15 10:12:00) trække året 2007 ud.
Avatar billede mibu Nybegynder
15. august 2007 - 10:24 #17
D.v.s.
SELECT * FROM min_anden_tabel WHERE dato YEAR('". $dato1 ."')"), 0);
Avatar billede jakobdo Ekspert
15. august 2007 - 10:40 #18
Nej, for det komme helt an på hvad du vil.
Jeg forstår ikke hvad det efterhånden er du forsøger.
Avatar billede mibu Nybegynder
15. august 2007 - 10:50 #19
Undskyld! jeg prøver at forklare.
Med min oprindelige streng henter jeg information, ud fra mine datokriterier. OK!
Med den modificerede streng (DATE_ADD) bruger jeg så de samme kriterier til at hente de samme informationer, bare et år tidligere. OK! Det virker også!
Spørgsmål! Kan jeg nu bruge en af mine dato kriterier f.eks. $dato1, som søgekriterie i anden tabel hvor jeg "kun" har brug for årstallet i $dato1

Er jeg stadig lidt spasser at hører på :-)
Avatar billede mibu Nybegynder
15. august 2007 - 10:56 #20
Eller det er måske her jeg skal lave en tilføjelse:

$dato1 = $_REQUEST["dato1"];
Avatar billede jakobdo Ekspert
15. august 2007 - 11:05 #21
Du kan via SELECT * FROM tabel WHERE aar = YEAR(".$dato1.")
burde virke.
Avatar billede mibu Nybegynder
15. august 2007 - 11:19 #22
Tusind tak!

Og undskyld mine rodede forklaringer :-)
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