webForumDet fria alternativet

Svars-funktion.

ASP

61 svar · 962 visningar · startad av AboO · sida 3 av 4

Frågan, av AboO

Jag håller på med en gästboks liknande grej och jag tänkte fixa en svars-funktion så vem som helst kan svara/kommentera inläggen. Ungefär som ett forum. Nån som har en idé på hur man gör det på lättast sätt? Jag är ganska ny med ASP och jag kommer inte på nåt bra sätt att göra det på. Jag tänkte att de fyller i svar å så genom ett formulär så de sparas i databasen, men hur ska man länka de så m

Läs frågan i sin helhet →
Medlem sedan juni 2002191 inlägg
#41

Nu är det bara en liten grej.
T.ex. om man har 3 st inlägg. och man inte kommenterar inlägg nr 2 utan bara 1-3. Så hamnar kommentar nr 2 under inlägg nr 2, fast den egentligen ska hamna under inlägg nr 3.

Och om jag raderar inlägg nr 1. förvinner kommentaren till inlägg nr 1 också då? (radera funktionen har slutat funka nu när jag har gjort om massa)

Medlem sedan mars 20015 287 inlägg
#42

Nej, du. Det tror jag inte alls på. :)
Inte om du använder den kod jag postade sist.
Däremot så skrivs ju fortfarande detta ut:
Namn:
Kommentar:

För att komma runt det kan du skriva:

<% 
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("idelada.mdb") 

strSQL = "SELECT kommentar.svarnamn, kommentar.kid, kommentar.svar, Results.id, Results.foretag, Results.inlagg, Results.namn, Results.time"&_
" FROM Results Left outer JOIN kommentar ON Results.id = kommentar.kid order by Results.id" 

Set objRS = Connect.Execute(strSQL)
do until objRS.EOF  

If checkid <> objRS("id") then %>  
Namn: <%Response.Write(objRS("namn"))%><br>  
Företag: <%Response.Write(objRS("foretag"))%> <br>
Inlägg: <%Response.Write(objRS("inlagg"))%> <br>
<a href="answer.asp?id=<%=Response.Write(objRS("ID"))%>" target="_blank">Kommentera</A> <br>
<a href="tabort.asp?delID=<%Response.Write(objRS("ID"))%>" onClick="return confirm('Är du säker på att du vill ta bort inlägget??')" target="_self">Radera</a> <br>
<%Response.Write(objRS("time"))%> <br><br>

<% 
End If 

If objRS("svarnamn") <> "" or objRS("svar")<> "" then
%>

Namn:</B> <%Response.Write(objRS("svarnamn"))%>  <br>
Kommentar:</B>  <%Response.Write(objRS("svar"))%>  <br>
<a href="anwdel.asp?delID=<%Response.Write(objRS("Kid"))%>" onClick="return confirm('Är du säker på att du vill ta bort kommentaren?')" target="_self">Radera</a> 
<%Response.Write(objRS("namn"))%> <br><br><br>

<%
End If 
checkid = objRS("id")

objRS.MoveNext

Loop 
Set objRS = Nothing
%>
Medlem sedan juni 2002191 inlägg
#43

Men kolla på http://user.domaindlx.com/aboox/db/ så ser du att det blir fel.

Men å andra sidan är det nog inte hela världen, bara jag säger till dom att skriva kommentar på alla inläggen.

Medlem sedan mars 20015 287 inlägg
#44

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

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/aboox/db/list.asp, line 56

Får jag där...

Visa den kod du kör där nu.

Medlem sedan mars 20015 287 inlägg
#45

Du får inte med dig något id i länken till kommentarssidan.

Medlem sedan juni 2002191 inlägg
#46

hm. va konstigt. de funkar för mig. men så här ser koden ut iaf:
nu tar jag med html å hela rubbet.

<!-- #include file="adovbs.inc" --> 
<% Session.lcid = 1053 %>
<% 
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("idelada.mdb") 
strSQL = "SELECT kommentar.svarnamn, kommentar.kid, kommentar.svar, Results.id, Results.foretag, Results.inlagg, Results.namn, Results.time"&_
" FROM Results Left outer JOIN kommentar ON Results.id = kommentar.kid order by Results.id desc"
Set objRS = Connect.Execute(strSQL)

do until objRS.EOF
If checkid <> objRS("id") then
 %>
<html>

<head>
<style type="text/css">
<!-- 
BODY
{
    scrollbar-arrow-color:#FFCC33;
    scrollbar-base-color:#FFCC33;
	scrollbar-darkshadow-color:#FFFFFF;
	scrollbar-face-color:#FFFFFF;
	scrollbar-highlight-color:#FFFFFF;
	scrollbar-shadow-color:#FFCC33
}
-->
<style type="text/css">
<!--
body { overflow-X: hidden;}
-->
</style>
</style>
<meta http-equiv="Content-Language" content="sv">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Idelåda</title>
<base target="huvud">
</head>

<body leftmargin="20">
<table width="652" border="0" cellpadding="0" cellspacing="0" height="108">
<tr valign="top"> 
<td width="452" height="108">

<font face="Arial">    
<b>Namn:</B> <%Response.Write(objRS("namn"))%>  <br>
<b>Företag:</b> <%Response.Write(objRS("foretag"))%> <br>
<b>Inlägg:</B> <%Response.Write(objRS("inlagg"))%><br><br>  <font size="2"><a href="answer.asp?id="<%=Response.Write(objRS("ID"))%>" target="_blank">Kommentera</A>
| <a href="tabort.asp?delID=<%Response.Write(objRS("ID"))%>" onClick="return confirm('Är du säker på att du vill ta bort inlägget??')" target="_self">Radera</a> 
| <%Response.Write(objRS("time"))%> <br></font><br>
<% End If %>
<b>Namn:</B>&nbsp;<%Response.Write(objRS("svarnamn"))%>  <br>
<b>Kommentar:</B>&nbsp; <%Response.Write(objRS("svar"))%>  <br>
<font size="2">
<a href="anwdel.asp?delID=<%Response.Write(objRS("Kid"))%>" onClick="return confirm('Är du säker på att du vill ta bort kommentaren?')" target="_self">Radera</a> 
|  <%Response.Write(objRS("time"))%> </font>
<hr noshade color="#000000">
<%
checkid = objRS("id")

objRS.MoveNext

Loop 
Set objRS = Nothing%>

<%
nextPage = TRIM( Request( "nextPage" ) )
IF nextPage = "" THEN nextPage = 1

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("idelada.mdb") 

Set RecSet = Server.CreateObject("ADODB.Recordset")
RecSet.CursorLocation = 3

SQL = "SELECT * FROM results ORDER BY ID desc"
RecSet.Open SQL, Connect

RecSet.PageSize = 10 
RecSet.AbsolutePage = nextPage

Do until RecSet.EOF OR rowCount > RecSet.PageSize
rowCount = rowCount + 1

RecSet.MoveNext
Loop 

IF RecSet.PageCount > 1 THEN 

FOR a = 1 to RecSet.PageCount
IF a <> cINT( nextPage ) THEN 
Response.Write ("<a href='list.asp?nextPage="& a &"' target='list'>"& a &"</a>") 
ELSE 
Response.Write "&nbsp;"& a

END IF 
NEXT 
END IF %> 
<p></font>
</td>

 
</table>

 
</body>

(det där sista asp-grejjen är pageing)

Medlem sedan juni 2002191 inlägg
#47

solbulle skrev:

Du får inte med dig något id i länken till kommentarssidan.

Hur fixat jag det då? :)

Medlem sedan mars 20015 287 inlägg
#48
<a href="answer.asp?id=<%Response.write(objRS("ID"))%>" target="_blank">Kommentera</A>

Du är medveten om att din paging knappast lär fungera i sin nuvarande form?

Sen kan du ta bort denna:
<!-- #include file="adovbs.inc" -->

= Runt 300 rader onödig kod.

Medlem sedan juni 2002191 inlägg
#49

Så har jag ju redan?

Medlem sedan mars 20015 287 inlägg
#50

AboO skrev:

Så har jag ju redan?

Åfan? Inte vad jag kan se. ;)
r/ Ändra din rad som är nästan likadan till den jag postade.

Medlem sedan juni 2002191 inlägg
#51

det blir fortfarande likadant :|

men som sagt så tror jag inte de spelar så stor roll.

Medlem sedan mars 20015 287 inlägg
#52

Nej du, jag är attans påstridig nu, men jag undrar om du inte lägger in dina kommentarer fel eller något. Jag testar din kod och den fungerar för mig.
Kolla i din db om id sam kid stämmer överens med det som du tänkt dig. (=som du anser dig lagt in dom.)

Medlem sedan juni 2002191 inlägg
#53

Så här ser databasen ut:

http://user.domaindlx.com/aboox/db/db.jpg

och så här ser sidan ut som sparar kommentarerna ut:

<% Session.lcid = 1053 %> 
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("idelada.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera= "Select * From kommentar"
RecSet.Open Addera, Connect, 3, 3

RecSet.Addnew
RecSet("svarnamn")=Request.Form("svarnamn") 
RecSet("svar")=Request.Form("svar")
RecSet("time") = Date
RecSet.Update 
RecSet.Close
Connect.Close 
Set RecSet = nothing
Set Connect = nothing

Response.redirect "saved.htm" 
%>
Medlem sedan feb. 200112 078 inlägg
Medlem sedan juni 2002191 inlägg
#55

Jpg ska det vara :)

Medlem sedan mars 20015 287 inlägg
#56

Och var lägger du då in det viktigaste av allt? Referensen till den andra tabellen?
Fältet kid?
Det ska ju inte vara autonummer på den!
Den ska ju få samma nummer som orginalinlägget den ommenterar, annars kan det ju aldrig fungera...

Såja, nu fixar du det. :)

Medlem sedan juni 2002191 inlägg
#57

Det är just det där med referensen jag inte riktigt förstått.
Vad ska det vara på kid då?

Medlem sedan mars 20015 287 inlägg
#58

kid ska vara ett nummerfält, ej autonummer/räknare.

I det fältet ska id-numret från artikeln hamna. Så att man vet att alla kommentarer med samma id som kid i kommentarstabellen hör ihop.
Din kod på den sida du visade kod på nyss ska se ut så här:

<% Session.lcid = 1053 %> 
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath ("idelada.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera= "Select * From kommentar"
RecSet.Open Addera, Connect, 3, 3

RecSet.Addnew
RecSet("kid")=Request.Querystring("id")
RecSet("svarnamn")=Request.Form("svarnamn") 
RecSet("svar")=Request.Form("svar")
RecSet("time") = Date
RecSet.Update 
RecSet.Close
Connect.Close 
Set RecSet = nothing
Set Connect = nothing

Response.redirect "saved.htm" 
%>
Medlem sedan juni 2002191 inlägg
#59

Så om jag ändrar till nummer istället för autonummer sen lägger till den där koden är allt fint sen? :)

Medlem sedan nov. 20017 144 inlägg
#60

Du kan ju prova ;)

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