webForumDet fria alternativet

Svars-funktion.

ASP

61 svar · 962 visningar · startad av AboO

Medlem sedan juni 2002191 inlägg
Frågan#1

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å man svarar på rätt inlägg och så? :q

Hoppas ni förstår.

Medlem sedan dec. 20003 563 inlägg
#2

I din tabell med inläggen/nyheterna så har du en kolumn med ID.

I din tabell så har du en kolumn som reffererar till detta ID.

ID | RefID | Kommentar

Sen plockar du bara ut alla rader för varje nyhet som har samma RefID som ID för nyheten.

Medlem sedan juni 2002191 inlägg
#3

Jag tror jag förstår, men inte hur jag kodar det :)

Medlem sedan dec. 20003 563 inlägg
#4
-- Div kopplingar för databas och för att hämta fram nyheten i ett RecordSet --

NyhetsID = Rs("ID")

-- Kopplingar till databsen igen --
SQL = "SELECT * FROM kommentarer WHERE RefID = " & NyhetsID
Set Rs2 = conn.execute(SQL)
do until R2s.eof
response.write(Rs2("kommentar") & "<br>")
Rs2.movenext
loop
Medlem sedan juni 2002191 inlägg
#5

Nu förstår jag ingenting :D
man ska inte hålla på med sånt här när man är trött.

Medlem sedan aug. 20003 575 inlägg
#6

Använd Join.

strSQL = "Select * From Comments,Guestbook where guestbook_id = comments_id order by guestbook_date"

Sedan skriv ut det :D

Medlem sedan mars 20015 287 inlägg
#7

För att svara på den ursprungliga frågan.

Gör tex en länk vid varje nyhet till en sida med ett formulär, popup kanske?

Typ:

<a href="kommentar.asp?id="<% =rs("id") %>">Kommentera</A>

Sen på sidan kommentar sätter ett formulär typ:

<form name="kommentar" method="post" action="kommentar.asp">
<input type="hidden> value="<% =request.querystring("id") %>">
<textarea rows="10" name="kommentaren" cols="85"></textarea>
<input type="text" name="kommentator">
</form>

Slutligen gör du en sida som uppdaterar databasen och sätter id som därmed blir samma som artikeln som kommenterades.
Bra förslag är väl att baka in allt i så få sidor som möjligt och tex med querystring kolla vad som ska ske på sidan.

Medlem sedan juni 2002191 inlägg
#8

Jag tror jag förstår nu. ska pröva mig fram.

Medlem sedan juni 2002191 inlägg
#9

Hur ska jag länka det när jag läser ut det från databasen då? så rätt svar hamnar vid rätt inlägg?

Ett till problem, jag har så att inläggen listas och sorteras efter ID. så när någon skriver en kommentar så listas det som ett inlägg sen. Alltså måste jag ha svaren i en egen databas?

Medlem sedan mars 20015 287 inlägg
#10

http://www.webforum.nu/showthread.php?s=&postid=562625#post562625

Du har det i två tabeller, som Cyprus skriver högt upp i tråden, plockar ut det som ha nvisar eller bättre, som Nickemannen visar.

Medlem sedan juni 2002191 inlägg
#11

Kommentarerna hamnar på fel ställe, annars funkar allting bra.

Kanske är lättast att förstå om ni tittar själva.
Länk

Medlem sedan mars 20015 287 inlägg
#12

Du kanske har fixat det nu, för det ser väl bra ut?

En liten tanke bara, ska sidan vara offentlig? Bör du inte ha någon spärr på dels vem som kan radera meddelanden/kommentarer samt kanske att man hur som helst måste klicka "Ja" el. dyl. innan själva raderingen sker.

Medlem sedan juni 2002191 inlägg
#13

De är inte riktigt klart än, för kommentarerna kommer under varanda och inläggen kommer under varandra. så de hamnar lite fel.

Sidan ska inte vara offentlig, den är bara till för ett litet intranät.

Sån där "ja" ruta, är det bara att koppla länken till en vanliga javascript ruta?

Medlem sedan mars 20015 287 inlägg
#14

Ah, ok. Då är jag med. Det fanns bara ett inlägg o en kommentar när jag följde din länk så det var inte lätt att se. :)

Hur ser din kod ut nu? sql-fråga samt utskriftsloop?

Länken till radering skulle du kunna lösa så här:

<a href="tabort.asp?delID=27" onClick="return confirm('Vill du verkligen radera?')" target="_self">Radera</a>
Medlem sedan juni 2002191 inlägg
#15

Koden ser förjävlig ut :D

<% do until recset.EOF %>    
Namn:<%=recset("namn")%>   
Företag:<%=recset("foretag")%> 
Inlägg: <%=recset("inlagg")%>
<a href="answer.asp?id="<% =RecSet("ID") %>" target="_blank">Kommentera</A>
<a href="tabort.asp?delID=<%=recset("ID") %>" target="_self">Radera</a> 
<%=recset("time")%> 

<%
RecSet.MoveNext   
Loop
%>
<% 
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 order by id desc"      
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

%> 
<% do until recset.EOF %>    
Namn:<%=recset("svarnamn")%>  
Kommentar:<%=recset("svar")%>  
<a href="anwdel.asp?delID=<%=recset("ID") %>" target="_self">Radera</a> 
<%=recset("time")%> 

<%
RecSet.MoveNext   
Loop
%>
<% 
RecSet.Close
Connect.Close 
Set RecSet = nothing
Set Connect = nothing
%>
Medlem sedan mars 20015 287 inlägg
#16

Hm, med den koden är det ganska självklart att först kommer inläggen och sen kommentarerna.

Fösök få till det med en join, typ som Nickemannen visar högre upp, det borde fungera tycker jag. Då plockar du ut allt på samma gång och kan därmed loopa det direkt.

Något typ detta, dock kommer inte det här att fungera :( :

<% 
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,artiklar where  id = id order by id desc"
RecSet.Open Addera, Connect, 3, 3

do until recset.EOF %>    
Namn:<%=recset("namn")%>   
Företag:<%=recset("foretag")%> 
Inlägg: <%=recset("inlagg")%>
<a href="answer.asp?id="<% =RecSet("ID") %>" target="_blank">Kommentera</A>
<a href="tabort.asp?delID=<%=recset("ID") %>" target="_self">Radera</a> 
<%=recset("time")%> 

Namn:<%=recset("svarnamn")%>  
Kommentar:<%=recset("svar")%>  
<a href="anwdel.asp?delID=<%=recset("ID") %>" target="_self">Radera</a> 
<%=recset("time")%> 

<%
RecSet.MoveNext   
Loop

RecSet.Close
Connect.Close 
Set RecSet = nothing
Set Connect = nothing
%>

Jag tror att du måste byta namn på de fält i dina tabeller som heter lika, så att det inte krockar när du skriver ut dom, ändra sen motsvarande i koden här.
Även namnet på tabellen med inläggen måste ändras i sql-satsen här ovan.

Sen lämnar jag över bollen till de som behärskar detta bättre. :)

/r Just ja, fimpa adobvs.inc och skriv konstanterna direkt i koden.

Medlem sedan juni 2002191 inlägg
#17

Jag får:

Object required: ''

/aboox/db/list_copy.asp, line 37

När jag testar med:

<% 
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 results order by id desc"      
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
strSQL = "Select * From Results,Kommentar where ID = kid order by ID" 
%> 

<%
Set objRS = idelada.Execute(strSQL)     [I]<-- rad 37[/I] 
Do Until objRS.EOF

Response.Write(objRS("namn")) & "<br>"
Response.Write(objRS("inlagg")) & "<br>"
Response.Write(objRS("time")) & "<br>"
Response.Write(objRS("svarnamn")) & "<br>"
Response.Write(objRS("svar")) & "<br>"
objRS.MoveNext

Loop 
Set objRS = Nothing
%>
Medlem sedan jan. 20032 285 inlägg
#18
Set objRS = [b]Connect[/b].Execute(strSQL)

Eller du kanske bara skrev "idelada" här i forumet? :q

Medlem sedan juni 2002191 inlägg
#19

hehe, nä. du har rätt. jag är nyvaken så idelada hamna på fel ställe :)

Medlem sedan jan. 20032 285 inlägg
#20

Så det fungerar nu? :)

260 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)