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.
61 svar · 962 visningar · startad 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å man svarar på rätt inlägg och så? :q
Hoppas ni förstår.
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.
Jag tror jag förstår, men inte hur jag kodar det :)
-- 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
Nu förstår jag ingenting :D
man ska inte hålla på med sånt här när man är trött.
Använd Join.
strSQL = "Select * From Comments,Guestbook where guestbook_id = comments_id order by guestbook_date"
Sedan skriv ut det :D
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.
Jag tror jag förstår nu. ska pröva mig fram.
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?
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.
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.
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?
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>
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
%>
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.
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
%>
Set objRS = [b]Connect[/b].Execute(strSQL)
Eller du kanske bara skrev "idelada" här i forumet? :q
hehe, nä. du har rätt. jag är nyvaken så idelada hamna på fel ställe :)
Så det fungerar nu? :)