order by datum är helt knäppt.. får göra så här:
<%IF NOT RS_datum.eof THEN%>
<%=RS_datum("datum")%> <br>
<%else%>
<%=RS2("datum")%><br>
<%end if%>
först:
då tar den inte med order med rs2("datum") och för det andra om någon posta det : 2002-05-28 11:11:11 och någon annan
2002-06-22 11:11:10 så kommer 2002-05-28 11:11:11 före ändå..
jag behöver någon outer join sats för det här tror jag... sen är jag nog färdig med den "svåta" biten... vill någon hjälpa mej?
här är databasen
ID - ID använding för svar_ID
forum_ID - Forumets ID asp = ID 2 tex
skrivbent - Vem som skrev inlägget
datum - Datum när den skrevs in
meddelande - mess från användaren
svar_ID - Vilket ID har man svarat på?
var är killen som är fet med outer och inner joins?
@nders eller någon???? behöver verkligen hjälp här...
@ndersMedlem sedan juni 200032 967 inläggVi vill ju att du ska försöka själv först! :)
Hur ser gällande SQL-fråga ut (den du vill vi ska ändra på)?
det är det felet är.. har inte riktigt koll på vilken som gör det... men jag tror det är denna:
<%
SQL = "select * from topics where forum_id="&Request.Querystring("id")
SQL = SQL & " AND svar_id = 0 order by Datum Desc"
Set RS2 = Databas.Execute(SQL)
%>
men har även:
<%
SQL = "select * from topics where forum_id="&Request.Querystring("id")&" order by datum desc"
Set RS_inlagg = Databas.Execute(SQL)
SQL = "select count(\*) AS count_svar from topics where svar_id="&RS2("id")
Set RS_count_svar = Databas.Execute(SQL)
SQL = "select count(\*) AS datum_check from topics where svar_id="&RS2("id")
Set RS_datum_check = Databas.Execute(SQL)
SQL = "select datum from topics where svar_id="&RS2("id")
SQL = SQL & " order by datum desc"
Set RS_datum = Databas.Execute(SQL)
SQL = "select skribent from topics WHERE forum_id=" & RS("id") &" and svar_id=" & RS2("id")
SQL = SQL & " order by datum and ID desc"
Set RS_skribent = Databas.Execute(SQL)
SQL = "SELECT \* FROM topics WHERE id=" & RS("id") &" OR svar_id=" & RS2("id") & " ORDER BY svar_id DESC"
Set RS_senastetest = Databas.Execute(SQL)
%>
P.S Har ju ingen koll på Inner Join och sånt så det är rätt svårt att försöka själv =) D.S
@ndersMedlem sedan juni 200032 967 inläggNu famlar jag lite i mörkret igen, för jag förstår inte hur din kod fungerar.
SQL = "SELECT iif(isnull(t2.datum), t.datum, t2.datum), t.* from topics t " & _
"left outer join topics t2 on t.forum_id = t2.svar_id where t.forum_id = " & Request.Querystring("id") & " order by 1 desc"
Fast som sagt, ordentlig gissning...
mvh,
Hur ska koden ser ut?
<%
if Request.QueryString("style") <> "" then
stile = "SELECT * FROM style WHERE id=" & Request.QueryString("style")
Set style = Server.CreateObject("ADODB.Recordset")
style.Open stile,Session("dbasepath") ,3 ,3
'on error resume next
%>
<link rel="stylesheet" href="<%=style("css")%>.css" type="text/css">
<%else%>
<link rel="stylesheet" href="voigt.css" type="text/css">
<%end if
Session.LCID = 1053
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("db/forum.mdb")
Session("dbasepath") = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
Databas.Open Session("dbasepath")
SQL = "select * from forums where id="&Request.Querystring("id")
Set RS = Databas.Execute(SQL)
SQL = "select * from topics where forum_id="&Request.Querystring("id")
SQL = SQL & " AND svar_id = 0 order by Datum Desc"
Set RS2 = Databas.Execute(SQL)
%><html>
<head>
<title>Untitled Document</title>
</head>
<body>
<table width="700" border="0" cellspacing="0" cellpadding="0" align="center" bordercolor="#000000">
<tr>
<td width="50" class="mess2"> </td>
<td width="340" class="mess2">Inlägg</td>
<td width="65" class="mess2" bgcolor="#1B1411" align="center">Startad av</td>
<td width="45" class="mess2" align="center">Svar</td>
<td width="200" class="mess2">Senaste Inlägget</td>
</tr>
<%
if rs2.eof then%>
<tr>
<td colspan="5" align="center" class="topic">
Ingen Tråd har startats i <%=RS("namn")%> ännu.
</td>
</tr>
</td>
<%else
Do While NOT RS2.EOF
SQL = "select * from topics where forum_id="&Request.Querystring("id")&" order by datum desc"
Set RS_inlagg = Databas.Execute(SQL)
SQL = "select count(*) AS count_svar from topics where svar_id="&RS2("id")
Set RS_count_svar = Databas.Execute(SQL)
SQL = "select count(*) AS datum_check from topics where svar_id="&RS2("id")
Set RS_datum_check = Databas.Execute(SQL)
SQL = "select datum from topics where svar_id="&RS2("id")
SQL = SQL & " order by datum desc"
Set RS_datum = Databas.Execute(SQL)
SQL = "select skribent from topics WHERE forum_id=" & RS("id") &" and svar_id=" & RS2("id")
SQL = SQL & " order by datum and ID desc"
Set RS_skribent = Databas.Execute(SQL)
SQL = "SELECT * FROM topics WHERE id=" & RS("id") &" OR svar_id=" & RS2("id") & " ORDER BY svar_id DESC"
Set RS_senastetest = Databas.Execute(SQL)
%>
<tr class="mess4">
<td class="mess3" align="center"> (•) </td>
<td><a href=readpost.asp?forum_id=<%=Request.Querystring("id")%>&inlagg_id=<%=RS2("id")%>><%=RS2("amne")%>
</td>
<td class="mess3" align="center"> <a href="archive.asp?member=<%=RS2("skribent")%>"><%=RS2("skribent")%></td>
<td class="mess3" align="center"> <%=RS_count_svar("count_svar")%></td>
<td>
<%IF NOT RS_datum.eof THEN%>
<%=Free(RS_datum("datum"))%> <br>
<%else%>
<%=Free(RS2("datum"))%><br>
<%end if%>
<b>Senaste svar av:</b>
<%IF NOT rs_skribent.eof THEN%>
<%=RS_skribent("skribent")%>
<%else%>
<%=RS2("skribent")%>
<%end if%>
<br></td>
</tr>
<%
Set RS_count_svar = nothing
Set RS_datum_check = nothing
Set RS_datum = Nothing
Set RS_inlagg = Nothing
RS2.MoveNext
Loop
end if
Set RS2 = nothing
%>
</table>
</body>
</html>
@ndersMedlem sedan juni 200032 967 inläggDet var alltså den översta SQL-frågan jag skrev om (eller försökte skriva om i alla fall).
Provade det du sa @nders:
<%
Function Free(f2)
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
f2 = Server.HTMLEncode(f2)
objRegExp.Pattern = date()
f2 = objRegExp.Replace(f2,"Idag")
objRegExp.Pattern = date()-1
f2 = objRegExp.Replace(f2,"Igår")
for i = 1 to 12
objRegExp.Pattern = "(....)\-(" & right("0" & i,2) & ")\-(..)"
f2 = objRegExp.Replace(f2,"$3 " & lcase(monthname(i, True)) & " $1")
next
objRegExp.Pattern = "(..:..)(:..)"
f2 = objRegExp.Replace(f2,"<font class=""time""><i>kl:$1</i></font>")
free = f2
End Function
%>
<%
if Request.QueryString("style") <> "" then
stile = "SELECT * FROM style WHERE id=" & Request.QueryString("style")
Set style = Server.CreateObject("ADODB.Recordset")
style.Open stile,Session("dbasepath") ,3 ,3
'on error resume next
%>
<link rel="stylesheet" href="<%=style("css")%>.css" type="text/css">
<%else%>
<link rel="stylesheet" href="voigt.css" type="text/css">
<%end if
Session.LCID = 1053
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("db/forum.mdb")
Session("dbasepath") = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
Databas.Open Session("dbasepath")
'SQL = "select * from forums where id="&Request.Querystring("id")
SQL = "SELECT iif(isnull(t2.datum), t.datum, t2.datum), t.* from topics t " & _
"left outer join topics t2 on t.forum_id = t2.svar_id where t.forum_id = " & Request.Querystring("id") & " order by 1 desc"
Set RS = Databas.Execute(SQL)
SQL = "select * from topics where forum_id="&Request.Querystring("id")
SQL = SQL & " AND svar_id = 0 order by Datum"
Set RS2 = Databas.Execute(SQL)
%><html>
<head>
<title>Untitled Document</title>
</head>
<body>
<table width="700" border="0" cellspacing="0" cellpadding="0" align="center" bordercolor="#000000">
<tr>
<td width="50" class="mess2"> </td>
<td width="340" class="mess2">Inlägg</td>
<td width="65" class="mess2" bgcolor="#1B1411" align="center">Startad av</td>
<td width="45" class="mess2" align="center">Svar</td>
<td width="200" class="mess2">Senaste Inlägget</td>
</tr>
<%
if rs2.eof then%>
<tr>
<td colspan="5" align="center" class="topic">
Ingen Tråd har startats i <%=RS("namn")%> ännu.
</td>
</tr>
</td>
<%else
Do While NOT RS2.EOF
SQL = "select * from topics where forum_id="&Request.Querystring("id")&" order by datum desc"
Set RS_inlagg = Databas.Execute(SQL)
SQL = "select count(*) AS count_svar from topics where svar_id="&RS2("id")
Set RS_count_svar = Databas.Execute(SQL)
SQL = "select count(*) AS datum_check from topics where svar_id="&RS2("id")
Set RS_datum_check = Databas.Execute(SQL)
SQL = "select datum from topics where svar_id="&RS2("id")
SQL = SQL & " order by datum desc"
Set RS_datum = Databas.Execute(SQL)
SQL = "select skribent from topics WHERE forum_id=" & RS("id") &" and svar_id=" & RS2("id")
SQL = SQL & " order by datum and ID desc"
Set RS_skribent = Databas.Execute(SQL)
SQL = "SELECT * FROM topics WHERE id=" & RS("id") &" OR svar_id=" & RS2("id") & " ORDER BY svar_id DESC"
Set RS_senastetest = Databas.Execute(SQL)
%>
<tr class="mess4">
<td class="mess3" align="center"> (•) </td>
<td><a href=readpost.asp?forum_id=<%=Request.Querystring("id")%>&inlagg_id=<%=RS2("id")%>><%=RS2("amne")%>
</td>
<td class="mess3" align="center"> <a href="archive.asp?member=<%=RS2("skribent")%>"><%=RS2("skribent")%></td>
<td class="mess3" align="center"> <%=RS_count_svar("count_svar")%></td>
<td>
<%IF NOT RS_datum.eof THEN%>
<%=Free(RS_datum("datum"))%> <br>
<%else%>
<%=Free(RS2("datum"))%><br>
<%end if%>
<b>Senaste svar av:</b>
<%IF NOT rs_skribent.eof THEN%>
<%=RS_skribent("skribent")%>
<%else%>
<%=RS2("skribent")%>
<%end if%>
<br></td>
</tr>
<%
Set RS_count_svar = nothing
Set RS_datum_check = nothing
Set RS_datum = Nothing
Set RS_inlagg = Nothing
RS2.MoveNext
Loop
end if
Set RS2 = nothing
%>
</table>
</body>
</html>
Fungera dock inte :(
@ndersMedlem sedan juni 200032 967 inläggPå vilket sätt fungerade det inte?
Fick du något felmeddelande?
inget fel meddelande... men sidan ser lika dan som den gjorde innan jag ändrade SQL satsen..
@ndersMedlem sedan juni 200032 967 inläggDu loopar ju aldrig igenom recordsetet RS, ska du inte det?
<%
Function Free(f2)
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
f2 = Server.HTMLEncode(f2)
objRegExp.Pattern = date()
f2 = objRegExp.Replace(f2,"Idag")
objRegExp.Pattern = date()-1
f2 = objRegExp.Replace(f2,"Igår")
for i = 1 to 12
objRegExp.Pattern = "(....)\-(" & right("0" & i,2) & ")\-(..)"
f2 = objRegExp.Replace(f2,"$3 " & lcase(monthname(i, True)) & " $1")
next
objRegExp.Pattern = "(..:..)(:..)"
f2 = objRegExp.Replace(f2,"<font class=""time""><i>kl:$1</i></font>")
free = f2
End Function
%>
<%
if Request.QueryString("style") <> "" then
stile = "SELECT * FROM style WHERE id=" & Request.QueryString("style")
Set style = Server.CreateObject("ADODB.Recordset")
style.Open stile,Session("dbasepath") ,3 ,3
'on error resume next
%>
<link rel="stylesheet" href="<%=style("css")%>.css" type="text/css">
<%else%>
<link rel="stylesheet" href="voigt.css" type="text/css">
<%end if
Session.LCID = 1053
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("db/forum.mdb")
Session("dbasepath") = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
Databas.Open Session("dbasepath")
'SQL = "select * from forums where id="&Request.Querystring("id")
SQL = "select * from topics where forum_id="&Request.Querystring("id")
SQL = SQL & " AND svar_id = 0 order by Datum"
Set RS2 = Databas.Execute(SQL)
%><html>
<head>
<title>VOiGtAN Forum - </title>
</head>
<body>
<table width="700" border="0" cellspacing="0" cellpadding="0" align="center" bordercolor="#000000">
<tr>
<td width="50" class="mess2"> </td>
<td width="340" class="mess2">Inlägg</td>
<td width="65" class="mess2" bgcolor="#1B1411" align="center">Startad av</td>
<td width="45" class="mess2" align="center">Svar</td>
<td width="200" class="mess2">Senaste Inlägget</td>
</tr>
<%
if rs2.eof then%>
<tr>
<td colspan="5" align="center" class="topic">
Ingen Tråd har startats i <%=RS("namn")%> ännu.
</td>
</tr>
</td>
<%else
Do While NOT RS2.EOF
SQL = "SELECT iif(isnull(t2.datum), t.datum, t2.datum), t.* from topics t " & _
"left outer join topics t2 on t.forum_id = t2.svar_id where t.forum_id = " & Request.Querystring("id") & " order by 1 desc"
Set RS = Databas.Execute(SQL)
SQL = "select * from topics where forum_id="&Request.Querystring("id")&" order by datum desc"
Set RS_inlagg = Databas.Execute(SQL)
SQL = "select count(*) AS count_svar from topics where svar_id="&RS2("id")
Set RS_count_svar = Databas.Execute(SQL)
SQL = "select count(*) AS datum_check from topics where svar_id="&RS2("id")
Set RS_datum_check = Databas.Execute(SQL)
SQL = "select datum from topics where svar_id="&RS2("id")
SQL = SQL & " order by datum desc"
Set RS_datum = Databas.Execute(SQL)
SQL = "select skribent from topics WHERE forum_id=" & RS("id") &" and svar_id=" & RS2("id")
SQL = SQL & " order by datum and ID desc"
Set RS_skribent = Databas.Execute(SQL)
SQL = "SELECT * FROM topics WHERE id=" & RS("id") &" OR svar_id=" & RS2("id") & " ORDER BY svar_id DESC"
Set RS_senastetest = Databas.Execute(SQL)
%>
<tr class="mess4">
<td class="mess3" align="center"> (•) </td>
<td><a href=readpost.asp?forum_id=<%=Request.Querystring("id")%>&inlagg_id=<%=RS2("id")%>><%=RS2("amne")%>
</td>
<td class="mess3" align="center"> <a href="archive.asp?member=<%=RS2("skribent")%>"><%=RS2("skribent")%></td>
<td class="mess3" align="center"> <%=RS_count_svar("count_svar")%></td>
<td>
<%IF NOT RS_datum.eof THEN%>
<%=Free(RS_datum("datum"))%> <br>
<%else%>
<%=Free(RS2("datum"))%><br>
<%end if%>
<b>Senaste svar av:</b>
<%IF NOT rs_skribent.eof THEN%>
<%=RS_skribent("skribent")%>
<%else%>
<%=RS2("skribent")%>
<%end if%>
<br></td>
</tr>
<%
Set RS_count_svar = nothing
Set RS_datum_check = nothing
Set RS_datum = Nothing
Set RS_inlagg = Nothing
RS2.MoveNext
Loop
end if
Set RS2 = nothing
%>
</table>
</body>
</html>
ingen skillnad
har en fråga... vad är det egentilgen jag ska få ut??? hur ska den ungefär ser ut???
Är det detta jag vill få fram?
OM det finns ett svar_ID som har det ID topicen har så ska den skriva ut det datumet annars så ska datumet sorteras efter Topicens datum.. eller? det borde ju inte vara så svårt...
SsolbulleMedlem sedan mars 20015 287 inlägg Inte för att klanka ner eller så, men nog lär det vara svårt för oss andra att veta vad Du vill få fram, om inte ens du själv vet?
Själv fattar jag inte mycket av det som din kod gör eller skall göra. :(
får lösa det på detta sättet:
göra en ny databas med "answers" så får man göra någon join på det sättet... ska försöka fixa det själv men jag återkommer om jag får problem...