webForumDet fria alternativet

Nyhetsmodul - Visa senaste 30 dagarna

ASP

3 svar · 312 visningar · startad av Meng

Medlem sedan feb. 2003549 inlägg
Frågan#1

Hej nu har jag problem igen, mycket beroende på att jag faktiskt
inte kan något om asp, men jag vill ju lära mig så det är därför
jag fortsätter att försöka. Jag har en säkert enkel fråga för
er "guru:s" men jag vet inte var jag ska leta ens så därför är det
svårt för mig.

Jag har en nyhetsmodul som jag har moddat lite efter mina
behov. Den skriver Skribent, Rubrik, Nyhet och datum till
databasen. Just nu fungerar den så att den visar alla poster med
det nyaste först såklart. Jag vill dela upp detta i två sidor. En
med "alla" minus de som är en månad gammla och en med bara
de som är en månad gammla. Alltså den visar de nyaste med en
månad tillbaka.

Jag har provat att söka här i forumet och hittat en massa svar
men jag vet inte hur jag applicerar dessa till min nyhetsmodul.

Min kod är denna:

<%
'##############ÄNDRA DETTA#############################
NyhetPerSida = 5                                   ' Antal nyhetsrubriker per sida
URL                 = "index2.asp"                    ' Sidan du inkluderar news2.asp i
db = Server.MapPath("db/news.mdb")   ' Databasens sökväg
Width              = "200"                              ' Bredd på bilden
'#####################################################'
%>

<!--
##########################################
Gruvsjo Nyheter v3
Åsa Gruvsjö ©
[url]www.gruvsjo.com[/url]  
[email]Asa@gruvsjo.com[/email]
	
Fri att använda om ni låter copyrightkoden stå kvar!
##########################################
-->

<table cellpadding="1" cellspacing="0" width="100%" border="0">

<%Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db

If Request.QueryString("ID") = "" Then

Set RecSet = Server.CreateObject("ADODB.Recordset")
Sidan = Request.QueryString("sida")
If Sidan = "" then 
     sida = 1 
Else 
     sida = Sidan 
End If 

With RecSet
    .CursorLocation = 3
    .CacheSize = NyhetPerSida
End With

SQL = "SELECT * FROM news Order By id desc"
RecSet.Open SQL, Conn

If RecSet.EOF Then%>
     <tr>
        <td>Ingen nyheder lagt in!</td>
     </tr>
<%Else

With RecSet
  .MoveFirst 
  .PageSize = NyhetPerSida
  .AbsolutePage = sida
End With

Sidor =  RecSet.PageCount
x = 0 
Do While Not RecSet.EOF And x < RecSet.PageSize%>
   <tr>
      <td width="20" align="left"><img src="bilder/news.gif" border="0" valign="middle"></td><td align="left"><font size="2"><b><%=RecSet("rubrik")%></b></font> | <%=FormatDateTime(RecSet("datum"),2)%> (<%=FormatDateTime(RecSet("datum"),4)%>)</td>
   </tr>
   <tr>
      <td height="5" align="left" colspan="2"></td>
   </tr>
   <tr>
      <td colspan="2" style="filter:alpha(opacity=50); " onMouseover="this.style.filter='alpha(opacity=100)';" onMouseout="this.style.filter='alpha(opacity=50)';"><b><a href="<%=URL%>?ID=<%=RecSet("ID")%>"><img src="../images/ico_down.gif" border="0" height="15" hspace=3 vspace=0 align=absmiddle>Læs mer</a></b></td>
   </tr>
   <tr height="20">
       <td colspan="2">&nbsp;</td>
   </tr>
<%x=x+1 
RecSet.MoveNext
Loop
RecSet.Close
If Sidor > 1 Then%>
  <tr>
     <td valign="top" colspan="2">
       <%For Sid = 1 To Sidor
               If (Int(Sid)) = (Int(sida)) Then%><b><%=Sid%></b><%Else%> <a href="<%=URL%>?sida=<%=Sid%>"><%=Sid%></a> <%End If
         Next%> 
    </td>
  </tr>
<%End If
  End If
End If
If Request.QueryString("ID") <> "" Then
Set RS=Conn.Execute("Select * From news Where id=" & Request.QueryString("ID"))%>
     <tr>
<%If RS("bild") <> "" Then%>
        <td rowspan="3" valign="top"><img src="<%=RS("bild")%>" border="1" width="<%=Width%>"></td>
        <td rowspan="3" width="5">&nbsp;</td>
     </tr>
     <tr>
<%End If%>
      <td width="20" align="left"><img src="bilder/news.gif" width="14" border="0" valign="middle"></td><td width="97%" align="left"><font size="2"><b><%=RS("rubrik")%></b></font> | <%=FormatDateTime(RS("datum"),2)%> (<%=FormatDateTime(RS("datum"),4)%>)</td>
     </tr>
     <tr>
        <td colspan="2"><br><%=Replace(RS("nyhet"),vbCrLf,"<br>")%><br><br>// <%=RS("namn")%></td>
     </tr>
     <tr>
        <td colspan="2" style="filter:alpha(opacity=50); " onMouseover="this.style.filter='alpha(opacity=100)';" onMouseout="this.style.filter='alpha(opacity=50)';"><br><a href="<%=URL%>"><img src="../images/ico_tilbage.gif" border="0" hspace=0 vspace=0 align=absmiddle alt="« Gå tilbage">Tilbage</a></td>
     </tr>
<%End If%>
</table>
Medlem sedan jan. 200412 inlägg
#2

Hejsan!

För att få dom 30 sista dagarna skriver du SQL-satsen på följande vis.

SQL = "SELECT * FROM news where fldDate > #" & DateAdd("m",-1,Date()) & "# Order By id desc"
Allt som hänt denna månaden. Men det bästa sättet är nog om du visar dom 30 eller 31 sista dagarna. Det gör du följande vis:

SQL = "SELECT * FROM news where fldDate >= #" & DateAdd("d",-31,Date()) & "# Order By id desc"

Hoppas att detta fungerar :-)

Mvh
Granqvist

Medlem sedan feb. 2003549 inlägg
#3

jo det fungerade utmärkt, nu förstår jag bara inte hur jag visar Allting minus den senaste månaden?

Medlem sedan apr. 20031 660 inlägg
#4

HEJ!

Det är väl endast att vända på frågan?

Hämta allt som är äldre än dagens datum-30 dagar
...WHERE datum<now()-30

Dateadd går också att använda här också:
http://www.devguru.com/Technologies/vbscript/quickref/dateadd.html

254 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)