webForumDet fria alternativet

Forumet - vill ej fungera

ASP

37 svar · 850 visningar · startad av voigtann1 · sida 2 av 2

Frågan, av voigtann1

om ni kollar: <http://voigt.voigtan.cjb.net/forum/> så håller jag på med ett hobby forum som liknar detta och dom flesta "bra" forumen Problemet är om man ska kolla i ett forum så lista sej alla topics som är i just det forumet och så står det vem som svarade sist MEN! den markera inte den som svarade sist utan den som gjorde den senaste topicen i forumet :( Behöver lite hjälp så att jag slipper

Läs frågan i sin helhet →
Medlem sedan juni 20019 519 inlägg
#21

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å..

Medlem sedan juni 20019 519 inlägg
#22

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å?

Medlem sedan juni 20019 519 inlägg
#23

var är killen som är fet med outer och inner joins?

Medlem sedan juni 20019 519 inlägg
#24

@nders eller någon???? behöver verkligen hjälp här...

Medlem sedan juni 200032 967 inlägg
#25

Vi 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å)?

Medlem sedan juni 20019 519 inlägg
#26

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

Medlem sedan juni 200032 967 inlägg
#27

Nu 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,

Medlem sedan juni 20019 519 inlägg
#28

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">&nbsp;</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"> (&#149;) </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>
Medlem sedan juni 200032 967 inlägg
#29

Det var alltså den översta SQL-frågan jag skrev om (eller försökte skriva om i alla fall).

Medlem sedan juni 20019 519 inlägg
#30

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">&nbsp;</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"> (&#149;) </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 :(

Medlem sedan juni 200032 967 inlägg
#31

På vilket sätt fungerade det inte?
Fick du något felmeddelande?

Medlem sedan juni 20019 519 inlägg
#32

inget fel meddelande... men sidan ser lika dan som den gjorde innan jag ändrade SQL satsen..

Medlem sedan juni 200032 967 inlägg
#33

Du loopar ju aldrig igenom recordsetet RS, ska du inte det?

Medlem sedan juni 20019 519 inlägg
#34
<%
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">&nbsp;</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"> (&#149;) </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

Medlem sedan juni 20019 519 inlägg
#35

har en fråga... vad är det egentilgen jag ska få ut??? hur ska den ungefär ser ut???

Medlem sedan juni 20019 519 inlägg
#36

Ä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...

Medlem sedan mars 20015 287 inlägg
#37

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. :(

Medlem sedan juni 20019 519 inlägg
#38

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...

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