Avatar billede webbygger Nybegynder
02. januar 2005 - 12:36 Der er 30 kommentarer og
1 løsning

Tagwall eller ?

Har I nogen ide om hvordan man tilføjer en tagwall eller en anden form for en kommentar system under hver forespørgelse som denne http://www.web-byggeren.dk/eksperten/form1.asp?id=109 ???

mv
Web-byggeren
Avatar billede mortvader Nybegynder
02. januar 2005 - 14:32 #1
Jah, du kan lave noget i PHP, ASP eller lignende. Eller man kan vist også finde nogle gratis-ting, som bare sættes ind med et javascript.

Men siden du har postet spørgsmålet i ASP kategorien går jeg udfra du vil lave det i ASP? :)

En simpel en kan laves med en access tabel ala:
1 autonummerering
2 navn (string 50) <-eller en anden længde.. husk at rette i formen nedenfor også.
3 kommentar (notat)

så laver du en html form med 2 felter:
<input type=text name=navn maxlength=50>
<textarea name=body></textarea>

i post-koden kan du lave en replace for at fjerne fejlmuligheder:
navn=replace(request.form("navn"),"'","''")
body=replace(request.form("body"),"'","''")

så indsætter du i db:

conn.execute "insert into tabel (navn,kommentar)values('"&navn&"','"&body&"')"

Derefter mangler du bare visningen.

Skal den fungere som kommentarsystem i stedet for tagwall tilføjer du et felt, f.eks.

4 kategori (string 20)

når du poster kommentaren, vedhæfter du et kategori navn, og i visningen filtrerer du på kategorien for kun at se den aktuelle.

Husk at sætte en sorteringsnøgle på kategori feltet.
Avatar billede webbygger Nybegynder
02. januar 2005 - 14:42 #2
Hej mortvader !

Det jeg er lidt usikker på er, at den kommentar man giv en bestemt forespørgelse/post kun vist på den og ingen andre....

Når mit system kommer op at kører, vil der være adskillig poster - som ser sådan ud fra start http://www.web-byggeren.dk/eksperten/form2.asp
Avatar billede mortvader Nybegynder
02. januar 2005 - 15:39 #3
Okay, jeg kan se at hvert link har sit ID. Så bruger du ID'et som kategori.

Det kode der viser kommentarerne filtrerer på ID'et.
Og når du poster nye kommentarer, sørger du for at få det rigtige ID med.
Avatar billede webbygger Nybegynder
02. januar 2005 - 20:44 #4
Hej mortvader og andre !


Så langt så godt, men hvordan hulens skal se filtrerer ud...
Jeg er en grønskoldning til ASP - som det skal skræves ud i pap for mig!!!



<a href="default.asp"><b>Klik her</b></a> for at se tagwallen.<br><br>

<form action="skriv.asp?mode=new" method="post">
<b>Navn:</b><br><input type='text' name='navn' size='25'><br>
<b>Besked:</b><br><textarea cols="37" rows="6" name="besked"></textarea><br><br>
<input type="submit" value="Tilføj"></form>

<%
DBPATH = "DBQ=" & Server.MapPath("db1.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open DBPATH

If Request.QueryString("mode") = "new" Then
    navn = Request.Form("navn")
    besked1 = Request.Form("besked")
    besked1 = Replace(besked1, "'", "''")
    besked1 = Replace(besked1, vbCrLf, "xbr")
    besked = besked1

    If navn="" Or besked="" then
        Response.Write "<b>Du skal udfylde alle felter!</b>"
    Else
        strSQL="INSERT INTO tagwall (navn,besked) VALUES('" & navn & "','" & besked & "')"
        Conn.Execute(strSQL)

    Response.Redirect "default.asp"
    End If
End If

Set Conn = Nothing
%>
Avatar billede mortvader Nybegynder
02. januar 2005 - 20:47 #5
Lad os kalde feltet kategori, og være et heltal.

Så skal din sql se sådan her ud:
strSQL="INSERT INTO tagwall (navn,besked,kategori) VALUES('" & navn & "','" & besked & "'," & kategori & ")"
Avatar billede mortvader Nybegynder
02. januar 2005 - 20:48 #6
..og når du skal vise den:

"Select * from tagwall where kategori="&kategori
Avatar billede webbygger Nybegynder
02. januar 2005 - 21:05 #7
HMmm der er en Syntax error


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

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'kategori='.

/eksperten/default.asp, line 7



<title></title>
<a href="skriv.asp"><b>Klik her</b></a> for at kommenter anmeldelsen .<br><br>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("db1.mdb")
strSQL = "Select * from tagwall where kategori="&kategori
set rs = Conn.execute(strSQL)

if rs.EOF then
Response.write "Der er ingen tags i tagwallen."
else
Do Until rs.EOF
%>
<b>Besked nummer:</b> <%=RS("id")%><br>
<b>Skrevet af:</b> <%=RS("navn")%><br>
<b>Besked:</b> <%=RS("besked")%><br><br><%RS.MoveNext
Loop
end if

Conn.Close
Set Conn = Nothing%>
Avatar billede webbygger Nybegynder
02. januar 2005 - 22:09 #8
Jeg har forhøjet indsatsen, da jeg gerne vil ha´ løst mit problem  i aften !!!
Avatar billede mortvader Nybegynder
03. januar 2005 - 09:47 #9
Okay, i denne linie er din kategori variabel tom

strSQL = "Select * from tagwall where kategori="&kategori

Den skal indeholde nummeret på den kommentar-tråd (eller anmeldelse?) som du er i gang med.

Prøv at ændre den til sådan her:

strSQL = "Select * from tagwall where kategori="&request.querystring("id")

-eller kopiere ID'et til kategori variablen først.
Avatar billede webbygger Nybegynder
03. januar 2005 - 16:25 #10
Det skal åbenbart bare drille....
Får denne fejl:

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

[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.

/eksperten/skriv.asp, line 25

linen 25 = Conn.Execute(strSQL)


<title></title>
<a href="java script: history.go(-2)"><b>Klik her</b></a> for at se kommentaren.<br><br>

<form action="skriv.asp?mode=new" method="post">
<b>Navn:</b><br><input type='text' name='navn' size='25'><br>
<b>Besked:</b><br><textarea cols="37" rows="6" name="besked"></textarea><br><br>
<input type="submit" value="Tilføj"></form>

<%
DBPATH = "DBQ=" & Server.MapPath("db1.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open DBPATH

If Request.QueryString("mode") = "new" Then
    navn = Request.Form("navn")
    besked1 = Request.Form("besked")
    besked1 = Replace(besked1, "'", "''")
    besked1 = Replace(besked1, vbCrLf, "xbr")
    besked = besked1

    If navn="" Or besked="" then
        Response.Write "<b>Du skal udfylde alle felter!</b>"
    Else
        strSQL="INSERT INTO tagwall (navn,besked,kategori) VALUES('" & navn & "','" & besked & "'," & kategori & ")"
        Conn.Execute(strSQL)

   
    End If
End If

Set Conn = Nothing
%>
Avatar billede mortvader Nybegynder
03. januar 2005 - 22:38 #11
Har du lavet et felt i tabellen tagwall som hedder kategori, og som er et heltal?
Avatar billede mortvader Nybegynder
03. januar 2005 - 22:42 #12
Nåh, jammen vent du bruger stadig en variabel som hedder kategori, men som ikke er defineret nogen steder..

        kategori=request.querystring("id")
        strSQL="INSERT INTO tagwall (navn,besked,kategori) VALUES('" & navn & "','" & besked & "'," & kategori & ")"
        Conn.Execute(strSQL)

du skal have sat variablen "kategori" til at være det du bruger som kategori. Det skal være det samme felt du filtrerer på, når du vil vise kommentarene for samme kategori.
Avatar billede webbygger Nybegynder
03. januar 2005 - 22:50 #13
Har lavet et felt med navnet kategori med heltal

<%
DBPATH = "DBQ=" & Server.MapPath("db1.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open DBPATH

If Request.QueryString("mode") = "new" Then
    navn = Request.Form("navn")
    besked1 = Request.Form("besked")
    besked1 = Replace(besked1, "'", "''")
    besked1 = Replace(besked1, vbCrLf, "xbr")
    besked = besked1
    kategori=request.querystring("id")
    If navn="" Or besked="" then
        Response.Write "<b>Du skal udfylde alle felter!</b>"
    Else
       
        strSQL="INSERT INTO tagwall (navn,besked,kategori) VALUES('" & navn & "','" & besked & "'," & kategori & ")"
        Conn.Execute(strSQL)


   
    End If
End If

Set Conn = Nothing
%>

Er det korrekt ?
Avatar billede webbygger Nybegynder
03. januar 2005 - 22:52 #14
Du kan se hvilken fejl jeg får her http://www.web-byggeren.dk/eksperten/skriv.asp !!!
Avatar billede webbygger Nybegynder
03. januar 2005 - 23:02 #15
mortvader !

Jeg sidder lige og læser hele spørgsmålet igenmen.....

Skal tagwell/kommentarmodullet være i sammen database og tabel som den siden den skal flettes sammen med ?????????????????

For det er den ikke
Avatar billede mortvader Nybegynder
03. januar 2005 - 23:09 #16
ikke nødvendigvis. Du skal dog oprette en ny connection til den anden database så.
Avatar billede webbygger Nybegynder
03. januar 2005 - 23:11 #17
Her ser du siden :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<title>Formular !</title>
<head>
</head>
<body>
<dl>
  <dt>&nbsp;</dt>
  <dd>
    <table width="50%" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td> <%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("10.mdb")
Conn.Open DSN

' Hent fra databasen afhængig af værdien id fra URL
strSQL = "Select * From dittabelnavn Where Id = " & Request.Querystring("id")
Set rs = Conn.Execute(strSQL)

' Skriv personens data
Response.Write "<b>" & "<dt>Produkt : </dt>" & "</b>" & rs("produkt") 
Response.Write "<b>" & "<dt>Indsendt af : </dt>" & "</b>" & rs("navn") & " " & rs("dato")
Response.Write "<b>" & "<dt>Karakter : </dt>" & "</b>"
for i = 1 to CInt(rs("karakter"))
response.write "<img src=""orange.gif"">"
next
Response.Write "<b>" & "<dt>Bedømmelse:</dt><dd>" & "</b>" & rs("beskrivelse") & "</dd>"
Response.Write "<b>" & "<dt>Pris : </dt>" & "</b>" & rs("pris")
billed_url = rs("url")
if billed_url<>"" then
  Response.write "<tr><td colspan='2'><img src='" & billed_url & "'></a></td></tr>"
end if

Conn.Close
Set Conn = Nothing
%> </td>
      </tr>
      <tr>
        <td><div align="left"><a href="java script: history.go(-1)">Retur til listen</a>
          </div></td>
      </tr>
      <tr>
        <td><div align="right">
            <!--#include virtual="/eksperten/default.asp" -->
          </div></td>
      </tr>
    </table>
  </dd>
  <dt>&nbsp; </dt>
</dl>
<br>

</body>
</html>
Avatar billede mortvader Nybegynder
03. januar 2005 - 23:12 #18
Jamen, på den side du linker til, er der ikke noget ID i request querystring'en.
Jeg gik ud fra at du ville have kommentarene på den her side f.eks.:
http://www.web-byggeren.dk/eksperten/form1.asp?id=108

hvor id i dette tilfælde er 108.
Men sådan som du har lavet det nu, skal du ændre linket til skriv.asp således at id føres med over:

response.write "<a href='skriv.asp?id="&request.querystring("id")&"'>"
Avatar billede webbygger Nybegynder
03. januar 2005 - 23:17 #19
Jeg er lidt klatøjet ;o((

Jo det er sådan jeg godt kunne tænke mig det, men hvor hulens skal response.write "<a href='skriv.asp?id="&request.querystring("id")&"'>"

indsættes ?
Avatar billede mortvader Nybegynder
03. januar 2005 - 23:36 #20
Hmm, nu kan jeg se du har formen på "Mary Magdalene" siden. Udemærket.

1. Fjern teksten "Klik her for at kommenter anmeldelsen".
2. Følgene linie i den side ændres:
fra: <form action="skriv.asp?mode=new" method="post">
til: <form action="skriv.asp?mode=new&id=<id'et fra URL>" method="post">

Herefter burde insert virke
Avatar billede webbygger Nybegynder
04. januar 2005 - 16:28 #21
Mortvader jeg håber du holder ud endnu ... for jeg kan stadig ikke får det til at virke, nu har jeg tilføjet begge sider "Mary Magdalene" siden

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<title>Formular !</title>
<head>
</head>
<body>
<dl>
  <dt>&nbsp;</dt>
  <dd>
    <table width="50%" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td> <%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("10.mdb")
Conn.Open DSN

' Hent fra databasen afhængig af værdien id fra URL
strSQL = "Select * From dittabelnavn Where Id = " & Request.Querystring("id")
Set rs = Conn.Execute(strSQL)

' Skriv personens data
Response.Write "<b>" & "<dt>Produkt : </dt>" & "</b>" & rs("produkt") 
Response.Write "<b>" & "<dt>Indsendt af : </dt>" & "</b>" & rs("navn") & " " & rs("dato")
Response.Write "<b>" & "<dt>Karakter : </dt>" & "</b>"
for i = 1 to CInt(rs("karakter"))
response.write "<img src=""orange.gif"">"
next
Response.Write "<b>" & "<dt>Bedømmelse:</dt><dd>" & "</b>" & rs("beskrivelse") & "</dd>"
Response.Write "<b>" & "<dt>Pris : </dt>" & "</b>" & rs("pris")
billed_url = rs("url")
if billed_url<>"" then
  Response.write "<tr><td colspan='2'><img src='" & billed_url & "'></a></td></tr>"
end if

Conn.Close
Set Conn = Nothing
%> </td>
  </tr>
  <tr>
  <td><div align="left"><a href="java script: history.go(-1)">Retur til listen</a>
  </div></td>
  </tr>
  <tr>
  <td><div align="right">
       
       
         
<%' HER ER VISNING SIDEN
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("db1.mdb")
strSQL = "Select * from tagwall where kategori="&request.querystring("id")

set rs = Conn.execute(strSQL)

if rs.EOF then
Response.write "Der er ingen kommentar til anmeldelsen !"
else
Do Until rs.EOF
%>
<b>Besked nummer:</b> <%=RS("id")%><br>
<b>Skrevet af:</b> <%=RS("navn")%><br>
<b>Besked:</b> <%=RS("besked")%><br><br><%RS.MoveNext
Loop
end if

Conn.Close
Set Conn = Nothing%>
      </div></td>
      </tr>
      <tr>
     

      <td>
<form action="skriv.asp?mode=new&id=<id'et fra URL>" method="post">

       
    <b>Navn:</b><br><input type='text' name='navn' size='25'><br>
    <b>Besked:</b><br>
<textarea cols="37" rows="6" name="besked"></textarea>
            <br>
            <br>
<input type="submit" value="Tilføj"></form>



<%' HER ER FORMSIDEN
DBPATH = "DBQ=" & Server.MapPath("db1.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open DBPATH

If Request.QueryString("mode") = "new" Then
    navn = Request.Form("navn")
    besked1 = Request.Form("besked")
    besked1 = Replace(besked1, "'", "''")
    besked1 = Replace(besked1, vbCrLf, "xbr")
    besked = besked1
    kategori=request.querystring("id")
    If navn="" Or besked="" then
        Response.Write "<b>Du skal udfylde alle felter!</b>"
    Else
       
        strSQL="INSERT INTO tagwall (navn,besked,kategori) VALUES('" & navn & "','" & besked & "'," & kategori & ")"
        Conn.Execute(strSQL)


   
    End If
End If

Set Conn = Nothing
%>

        </td>
      </tr>
      <tr>
        <td> </td>
      </tr>
    </table>
  </dd>
  <dt>&nbsp; </dt>
</dl>
<br>

</body>
</html>
Avatar billede mortvader Nybegynder
04. januar 2005 - 22:26 #22
Jojo, jeg holder ud :)

Du skal ændre linien:

<form action="skriv.asp?mode=new&id=<id'et fra URL>" method="post">

til:

<form action="skriv.asp?mode=new&id=<%=request.querystring("id")%>" method="post">
Avatar billede webbygger Nybegynder
05. januar 2005 - 18:10 #23
UPS .....
Det virker mortvader ;O))

Jeg har dog skiftede den til
<form action="form1.asp?mode=new&id=<%=request.querystring("id")%>" method="post">

så man bliver på siden efter man har tilføjet en kommentar, det eneste minus er, at den ikke opdater efter tilføjes, jeg ved ikke om man kan lave så den opdater automatisk ???


Lægger du et svar mortvader ?
Avatar billede webbygger Nybegynder
05. januar 2005 - 19:23 #24
Det funker ikke lige som det skal, for hvis opdater to gange lige efter hinanden indsætter den kommentaren 2 gange !!!
Avatar billede mortvader Nybegynder
05. januar 2005 - 21:32 #25
Okay, det vil ikke ske, hvis du efter din insert laver en:

response.redirect "form1.asp"
Avatar billede webbygger Nybegynder
05. januar 2005 - 21:38 #26
Hej

Mener du efter denne linie :

strSQL="INSERT INTO tagwall (navn,besked,kategori) VALUES('" & navn & "','" & besked & "'," & kategori & ")"
        Conn.Execute(strSQL)
Avatar billede mortvader Nybegynder
05. januar 2005 - 21:50 #27
jah... eller:
efter du executer den

strSQL="INSERT INTO tagwall (navn,besked,kategori) VALUES('" & navn & "','" & besked & "'," & kategori & ")"

Conn.Execute(strSQL)

'og så lige lidt orden, måske ;)
conn.close
set conn=nothing

'og SÅ:
response.redirect "form1.asp"
Avatar billede webbygger Nybegynder
05. januar 2005 - 21:53 #28
Hmmm...
Får denne fejl

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

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Id ='.

/eksperten/form1.asp, line 38
Avatar billede mortvader Nybegynder
05. januar 2005 - 21:58 #29
ja okay, dumme mig.

response.redirect "form1.asp?id="&request.querystring("id")
Avatar billede webbygger Nybegynder
05. januar 2005 - 22:06 #30
mortvader >

Dumme..............hvad FA... skal jeg så sige ???????????

TUSIND MANGE TAK FOR HJÆLPEN mortvader
Avatar billede mortvader Nybegynder
05. januar 2005 - 22:07 #31
velbekomme. Og god vind med blomsterne ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester