Har stött på patrull. Jag har en databas med posterna:
newDatumpubliceras, datum (ex: 2004-04-04 20:20:20)
newDatumUtgar, datum (ex: 2004-04-05- 20:20:20)
newVisaPaSida, text (ex: default, nyheter)
Nu vill jag gå igenom alla posterna och skriva ut dom som är relevanta enligt t.ex denna filtreringsmetod: skriv ut om värdet i fältet newDatumPubliceras INTE är större än newDatumUtgar plus om "default" finns i värdet från fältet newVisaPasida. Så här ser koden ut nu men jag är rädd att den skriver ut alla poster som har "default" i fältet newVisaPaSida men bryr sig inte om att filtrera enligt datum:
<%
'#-- Hämta alla fält i nyhetstabellen
sql = "select * from nyheter order by newId asc"
set rs = conndb1.execute(sql)
'#-- Leta igenom alla poster och sortera ut alla texter/nyheter som skall visas på förstasidan
do until rs.eof
if cdate(rs("newDatumPubliceras")) < cdate(rs("newDatumUtgar")) then
'##-- Finns det något som skall skrivas ut på förstasidan?
newVisaPaSida = rs("newVisaPaSida")
arrVisa = Split(newVisaPaSida, "," )
for i = 0 to Ubound(arrVisa)
if arrVisa(i) = "default" then %>
<h3><%response.write rs("newRubrik")%></h3>
<p><h5><% response.write rs("newIngress1")%></h5></p>
<% response.write textSomSkallSkrivasUt
else
'#-- Finns det ej något att skriva ut på första sidan.
response.write "inget att skriva ut"
end if
next
else
'##-- Har bäst föredatumet gått ut så skriv inte ut någon artikel
response.write "inget att skriva ut"
end if
rs.movenext
loop%>
Känns som en kass lösning.
Skapa en tabell som talar om vilka nyheter som skall visas på respektive sida i stället.
Och sedan så ställer du en lite mer nyanserad sql-fråga.
Vad är det för MSDB?
Visst, måste du ha den där modellen så skulle du kunna göra något såndant hära i sql-satsen:
page = "default"
sql = "SELECT * FROM nyheter WHERE now() BETWEEN COALESCE(newDatumPubliceras, now()) AND COALESCE(newDatumUtgar, now()) AND newVisaPaSida LIKE '%"& page &"%' ORDER BY newId"
Annars så är det bästa att du skapar en tabell som heter ex. nyheter_sidor
osv.
Sedan så skapar du en fråga som ser ut ungefär så här:
SELECT * FROM nyheter n
INNER JOIN nyheter_sidor ns ON n.id=ns.nyhetsid
WHERE ns.sida = 'default'
AND now() BETWEEN COALESCE(n.newDatumPubliceras, now())
AND COALESCE(n.newDatumUtgar, now())
ORDER BY n.newId
Nej, nej. Jag måste inte alls ha min modell. Den är nog som du säger rätt så kass för ändamålet.
Jag skall expoerimentera lite med din variant... //tack, för hjälpen (så länge :) )
Jag får inte frågan att fungera... Med frågan enlgt JesperT´s förslag får jag
Feltyp:
(0x80004005)
Odefinierat fel
/Default.asp, line 16
Skriver jag ut SQLen ser det ut såhär:
SELECT * FROM nyheter n INNER JOIN nyheter_sida ns ON n.id=ns.visId WHERE ns.visSida= 'default' AND now() BETWEEN COALESCE(n.newDatumPubliceras, now()) AND COALESCE(n.newDatumUtgar, now()) ORDER BY n.newId
SELECT * FROM nyheter n INNER JOIN nyheter_sida ns ON n.id=ns.visId WHERE ns.visSida= 'default' AND now() BETWEEN n.newDatumPubliceras AND n.newDatumUtgar ORDER BY n.newId
Det där felet beror på att du försöker lista poster som inte finns.
sql="Din sql-fråga..."
set rs = conndb1.execute(sql)
Do until Not rs.eof
Response.write rs(0) &" | "& rs(1) &"<br>" 'Dina poster som skall visas
rs.movenext
Loop
rs.close
269 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849