05. december 2002 - 10:09Der er
5 kommentarer og 3 løsninger
Dato i ASP & ACCESS
Jeg har lavet noget kode der indsætter dato i dette format i databasen (05-12-2002) Mit problem er nu at jeg gerne vil have udskrevet det som Torsdag d. 5. december
Som koden ser ud nu uskrives en overskrift med dato og en tekst, hvor tid er datofeltet. Ud over at datoen skal skrives som "Torsdag d. 5 december", vil jeg også gerne have så det kun er datoer efter den pågældende dato der vises.
Der skal altså ikke vises ældre datoer end den aktuelle, men alle fremtidige skal vises.
Det skal laves med ASP & Javascript
Håber i kan hjælpe
/simon
Her er koden som den ser ud lige nu ___________________________________
<table width="373" border="0" align="center"> <% rs = conn.Execute("SELECT * FROM aarsplan WHERE vist>0 ORDER BY vist ASC"); tid = rs.Fields("tid") while (!rs.EOF) { %> <tr align="left" valign="top"> <td width="73" align="left" class="Brodtekst"><%=tid%></td> <td width="300" class="overskriftudflugt"><%=rs.Fields("overskrift")%> <div align="left"></div></td> </tr> <% if (tid != "") { %> <tr align="left" valign="top"> <td colspan="2" align="left" class="bundkant"><span class="almtekst"><%=rs.Fields("tekst")%><img src="../images/spacer.gif" width="1" height="1"></span></td> </tr> <% } %> <% rs.MoveNext(); } %> </table>
Så skal du lave din SQL så den hendter datoer som er frem i tiden.. SQL skal havde dato formaet yyyy-mm-dd eller mm-dd-yyyy så din SQL kommer til at se sådan her ud.:
Vi har fået den til at vise efter sorteret dato nu, og det virker med at der ikke vises tidligere datoer. Men der er stadig et problem som er at den aktuelle dato ikke udskrives. Den udskriver altså fra imorgen den 6 december !
Hvordan løses dette
Her er koden
<table width="373" border="0" align="center"> <% var d = new Date() day = d.getDate() month = d.getMonth() +1 year = d.getYear() if (month < 10) { month = "0" + month } if (day < 10) { day = "0" + day }
rs = conn.Execute("SELECT * FROM aarsplan ORDER BY tid ASC"); tid = rs.Fields("tid")
while (!rs.EOF) { var t = new Date(tid) if (t >= d) { %> <tr align="left" valign="top"> <td width="73" align="left" class="Brodtekst"><%=tid%></td> <td width="300" class="overskriftudflugt"><%=rs.Fields("overskrift")%> <div align="left"></div></td> </tr> <% if (tid != "") { %> <tr align="left" valign="top"> <td colspan="2" align="left" class="bundkant"><span class="almtekst"><%=rs.Fields("tekst")%><img src="../images/spacer.gif" width="1" height="1"></span></td> </tr> <% } %> <% } rs.MoveNext(); } %> </table>
<% var d = new Date() day = d.getDate() -1 month = d.getMonth() +1 year = d.getYear() if (month < 10) { month = "0" + month } if (day < 10) { day = "0" + day -1 }
Lav det som sikre at gamle datoer ikke bliver vist via SQL som jeg har vist, hvor den kun hendter de records som skal vises. Det er spilt af tid / resurser at hendte hele databasen og så loop gemmen flere 100/10000 record for at udskrive de 10/20 aktuelle...
var testDate = new Date(RS("MinDato").Value); Response.write(dayArr[testDate.getDay()]+" d. "+testDate.getDate()+". "+monthArr[testDate.getMonth()]+" "+testDate.getYear())
Synes godt om
Ny brugerNybegynder
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.