webForumDet fria alternativet

Bättre uppbyggnad

ASP

15 svar · 263 visningar · startad av erka

Medlem sedan dec. 19996 522 inlägg
Frågan#1

Jag sitter å ska göra ett kort nyhetsnotis system och har kommit på ett par funderingar.

Det är tänkt att först ska man visa senaste månadens nyheter sen ska det stå länkar till de andra månadernas nyheter. typ så här

Nyhet 1 (denna månad)
Nyhet 2 (denna månad)
Nyhet 3 (denna månad)
osv.

Äldre Nyheter
2001 | Jan | Feb | Mars | Apr | Maj | Juni | Juli | Aug
2000 | Jan | Feb | Mars | Apr | Maj | Juni | Juli | Aug | Sept | Okt | Nov | Dec

Där tex 2001 jan ska länka till shownotice.asp?Show=Month&Year=2001&Month=01

Som nu är databasen uppbyggd på följande sätt

NewsID (räknare)
NewsInsertDate (kort datum)
NewsRemoveDate (kort datum)
NewsInsertName (text)
NewsHeader (text)
NewsContent (pm)

frågan är om man ska göra en till tabell med tex åren eller om man kan plocka ut det enklare genom att kolla vilka olika variatoner på 200 det finns i tex NewsInsertDate kolummen. Om man enkelt kan loopa igenom de olika variatonerna på datumen och få fram den här biten

Äldre Nyheter
2001 | Jan | Feb | Mars | Apr | Maj | Juni | Juli | Aug
2000 | Jan | Feb | Mars | Apr | Maj | Juni | Juli | Aug | Sept | Okt | Nov | Dec

Någon som har några tankar om detta innan jag sätter igång

------------------
Real mad hiphop flavaz kickin' it right from tha street without no FEAR, Yo !

Medlem sedan dec. 200012 464 inlägg
#2

Du behöver inte en extra tabell.

För att få fram år och månad så

select distinct year(NewsInsertDate) as y,
       monthname(month(InsertDate)) as m
  from news
 order by 1 desc,2 asc

sen är det bara att loopa igenom detta och hålla reda på när man får ett nytt år.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 19996 522 inlägg
#3

tack darling !

------------------
Real mad hiphop flavaz kickin' it right from tha street without no FEAR, Yo !

Medlem sedan dec. 19996 522 inlägg
#4

Det är en access db, kan det var därför jag får felmeddelandet

select distinct year(NewsInsertDate) as y, monthname(month(NewsInsertDate)) as m from ShortNews order by 1 desc,2 asc 

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 

[Microsoft][ODBC Microsoft Access Driver] Undefined function 'monthname' in expression. 

/test/notice.asp, line 16

------------------
Real mad hiphop flavaz kickin' it right from tha street without no FEAR, Yo !

[Redigerat av erka den 29 aug 2001]

Medlem sedan dec. 19998 577 inlägg
#5

Testa att ta bort monthname-funktionen och använd den när du ta ur posten istället i ASP.

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

Medlem sedan dec. 200012 464 inlägg
#6

Hmm, hade för att den finns i Access (jag såg att du hade det.)

select distinct year(NewsInsertDate) as y,
month(InsertDate) as m
from news
order by 1 desc,2 asc

så får du sköta översättningen till månadsnamn med VB-script i stället. Monthname finns i VB-script i alla fall.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 19996 522 inlägg
#7

hur använder jag den direkt i aspn då ? hmmm tack

------------------
Real mad hiphop flavaz kickin' it right from tha street without no FEAR, Yo !

Medlem sedan dec. 200012 464 inlägg
#8
session.lcid = 1053
'connect
sql = "select distinct year(NewsInsertDate) as y,month(InsertDate) as m from news order by 1 desc,2 asc "
set rs = connect.execute(sql)

while not rs.eof
response.write monthname(rs("m"),true)
rs.movenext
wend

Om du har med true som andra argument till monthname så får du en förkortad version av namnet om du utelämnar den så får du ut hela.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 19996 522 inlägg
#9

Ok tack för allt...Men dock ett problem

Option Explicit
Session.LCID = 1053 

Dim Cn, SQLStmt, ArrRS, y

Set cn = Server.CreateObject("ADODB.Connection")
	cn.Connectionstring ="DSN=shortnews" 
 	cn.Open

SQLStmt ="select distinct year(NewsInsertDate) as y, month(NewsInsertDate) as m from ShortNews order by 1 desc,2 asc"

Response.Write(SQLStmt)

Response.Write"<br>"
ArrRS = Cn.Execute(SQLStmt).getrows()
For y = 0 to ubound(ArrRS,2)
Response.Write""& ArrRS(0,y) &" - "& monthname(month(arrRS(1,y))) &"<br>"
Next
Erase ArrRS

ger mig

select distinct year(NewsInsertDate) as y, month(NewsInsertDate) as m from ShortNews order by 1 desc,2 asc
2001 - december
2001 - januari
2001 - januari
2001 - januari
2001 - januari
2001 - januari
2001 - januari
2001 - januari
2000 - december
2000 - januari
2000 - januari
2000 - januari
2000 - januari

Det skulle det ju inte bli.. :(

------------------
Real mad hiphop flavaz kickin' it right from tha street without no FEAR, Yo !

Medlem sedan dec. 19996 522 inlägg
#10

Anävnder din larsg å då fungerar det, om man ska hålla koll på vilet år det är och skriva ut den en gång enbart då borde man typ skapa en räknare och om den ändrar sig bryter man till ny rad, men hur fean gör man det smidigast..

Tack än en gång

------------------
Real mad hiphop flavaz kickin' it right from tha street without no FEAR, Yo !

Medlem sedan dec. 19996 522 inlägg
#11

glöm det kom på det!

------------------
Real mad hiphop flavaz kickin' it right from tha street without no FEAR, Yo !

Medlem sedan dec. 19996 522 inlägg
#12

Hmm stött på problem, den vill inte skriva ut 2001 som år, vad är fel på min fulkod mån tro ?

dim sql, rs, year
sql = "select distinct year(NewsInsertDate) as y,month(NewsInsertDate) as m from ShortNews order by 1 desc,2 asc "
set rs = cn.execute(sql)

while not rs.eof

	If RS("Y") < Year Then 
		Response.write"<br><br><b>"& Rs("y")&"</b><br>"
	End If

Year = Rs("y")
Response.Write"<a href=""ShowNotice.asp?Action=ShowMonth&Month="& RS("m") &"&Year="& RS("y") &""">"
Response.write monthname(rs("m"),true)
Response.Write"</a>"
Response.Write" &#0124; "
rs.movenext
wend

Nu skriver den ut

jan &#0124; feb &#0124; mar &#0124; apr &#0124; maj &#0124; jun &#0124; jul &#0124; aug &#0124; 

2000
jan &#0124; feb &#0124; mar &#0124; apr &#0124; maj &#0124;

ja la nu till
year = 4444 innan jag loopar, är det en smart lösning för att få fram 2001 som år ?
kom på att year inte var ett bra var namn :)

------------------
Real mad hiphop flavaz kickin' it right from tha street without no FEAR, Yo !

[Redigerat av erka den 29 aug 2001]

[Redigerat av erka den 29 aug 2001]

Medlem sedan dec. 200012 464 inlägg
#13

Tja, den fungerar nog några år till så.

dim sql, rs, year
sql = "select distinct year(NewsInsertDate) as y,month(NewsInsertDate) as m from ShortNews order by 1 desc,2 asc "
set rs = cn.execute(sql)
year = 0
while not rs.eof

If clng(RS("Y") <> clng(Year) Then 
Response.write"<br><br><b>"& Rs("y")&"</b><br>"
year = rs("y")
End If

Response.Write"<a href=""ShowNotice.asp?Action=ShowMonth&Month="& RS("m") &"&Year="& RS("y") &""">"
Response.write monthname(rs("m"),true)
Response.Write"</a>"
Response.Write" &#0124; "
rs.movenext
wend

men det går väl på ett ut. Huvudsaket att det fungerar.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 19996 522 inlägg
#14

tack larsg å ni andra..

ett problem till som jag inte kan förstå, jag använder denna kod

SQLStmt = "SELECT * FROM ShortNews Where NewsInsertDate BETWEEN "&DATEADD("d", -day(date)+1, date)&" AND "&date&"" 

Response.Write(SQLStmt)

Response.Write"<br>"
set rs = cn.execute(SQLStmt)
If RS.EOF Then
Response.Write"-Inga notiser"
Else
ArrRS = Cn.Execute(SQLStmt).getrows()
For y = 0 to ubound(ArrRS,2)
Response.Write""& ArrRS(0,y) &""
Next
Erase ArrRS
End If

Jag har 3 poster i db som har newsinsertdate 2001-08-12 men han hittar inte dem, han skriver ut
-inga notiser

om jag skriver ut sql sattsen blir det

SELECT * FROM ShortNews Where NewsInsertDate BETWEEN 2001-08-01 AND 2001-08-29

Det ser ju helt riktigt ut... Vad kan vara fel ?

tack

------------------
Real mad hiphop flavaz kickin' it right from tha street without no FEAR, Yo !

Medlem sedan dec. 200012 464 inlägg
#15
SQLStmt = "SELECT * FROM ShortNews Where NewsInsertDate BETWEEN #"&DATEADD("d", -day(date)+1, date)&"#  AND #"&date&"#"

du jämför med ett numeriskt värde och inte ett datum. (2001-08-1 = 1992)

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 19996 522 inlägg
#16

åhhhhhhh dumma dumma mig, snälla snälla du ! det var ju riktigt klantigt av mig

------------------
Real mad hiphop flavaz kickin' it right from tha street without no FEAR, Yo !

267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)