Avatar billede Slettet bruger
29. februar 2004 - 08:07 Der er 19 kommentarer og
1 løsning

Kan ikke få kommentaren til at vises ud for den rigtige blotekst.

Jeg sidder og er ved at lave lidt om på mit blogscript.
Jeg forsøger at lave et kommentarscript, hvor besøgende kan skrive en kommentar til teksterne i bloggen. Mit problem er at jeg ikke kan få kommentaren til at gemme sig ud for den rigtige dagobstekst.... :o(
******************
save.asp
<form method="POST" action="save.asp">
  <input type="hidden" name="Mode" value="Comments">
  <input type="hidden" name="Id" value="<%= Request("Id") %>">
  <div align="center">
    <center>
    <table border="0" cellpadding="0" cellspacing="0" width="">
      <tr>
        <td width="81">Navn:</td>
        <td width="465"><input type="text" name="name" size="44" maxlength="255"></td>
      </tr>
      <tr>
        <td width="81">E-Mail:</td>
        <td width="465"><input type="text" name="email" size="44" maxlength="255"></td>
      </tr>
      <tr>
        <td width="81" valign="top">Teksten:</td>
        <td width="465"><textarea class="area" rows="4" name="comments" cols="55"></textarea></td>
      </tr>
    </table>
    </center>
  </div>
  <p align="center"><input type="submit" value="Gem Kommentar" name="Send" class="button"></p>
</p>
</form>
************
save.asp
<%
  ' Declaring variables
  Dim name, email, comments, data_source, con, sql_insert

  ' A Function to check if some field entered by user is empty
  Function ChkString(string)
  If string = "" Then string = " "
  ChkString = Replace(string, "'", "''")
  End Function

  ' Receiving values from Form
  name = ChkString(Request.Form("name"))
  email = ChkString(Request.Form("email"))
  comments = ChkString(Request.Form("comments"))

  data_source = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
            Server.MapPath("dagbog.mdb")
  sql_insert = "insert into users (name, email, comments) values ('" & _
            name & "', '" & email & "', '" & comments & "')"
           
  ' Creating Connection Object and opening the database
  Set con = Server.CreateObject("ADODB.Connection")
  con.Open data_source
  con.Execute sql_insert
  ' Done. Close the connection
  con.Close
  Set con = Nothing
  Response.Write "All records were successfully entered into the database."
%>
************
comments:
DID      Comment-ID
Id      ID'en på den tekst kommentaren skal tilknyttes
name    Navnet på den der skriver kommentaren
email    E-Mail adressen på brugeren
comments Selve kommentaren
date    Datoen kommentaren blev oprettet
******
dagbog:
Id          blog-ID
bruger_id  brugerid på ejeren af bloggen
dato
tekst 
overskrift
Avatar billede websam Nybegynder
29. februar 2004 - 08:37 #1
Som jeg ser det så gemmer du ikke noget id nummer der skal referere til den pågældende blok du omtaler. Hvis du ikke har noget der referere til den kan du jo ikke finde ud af hvor disse skal høre til :o)

/Websam
Avatar billede Slettet bruger
29. februar 2004 - 08:41 #2
hvordan får jeg så mit script til at gemme kommentaren under den rigtige tekst? :o(
Avatar billede eagleeye Praktikant
29. februar 2004 - 10:55 #3
Så vidt jeg kan se har du ID'et formen, på den artikel som kommenteres i et hidden input felt:

<input type="hidden" name="Id" value="<%= Request("Id") %>">

Så du mangler at tilføjde det til din SQL sætning faktisk har du en kolonne til det som hedder id:
Id      ID'en på den tekst kommentaren skal tilknyttes

---
Så ført tilføj en linje som hedter id'et fra formen efter denne:
comments = ChkString(Request.Form("comments"))

Sådan her:
comments = ChkString(Request.Form("comments"))
id = Request.Form("id")


Samt at rette sql_insert linjen så den tager id med:

sql_insert = "insert into users (id, name, email, comments) values (" & id & ", '" & _
            name & "', '" & email & "', '" & comments & "')"
Avatar billede Slettet bruger
29. februar 2004 - 11:06 #4
Når jeg forsøger at skrive en kommentar og gem den så får jeg denne fejl:
Microsoft JET Database Engine error '80040e14'

Syntax error in INSERT INTO statement.

/save.asp, line 25

linje 25:  con.Execute sql_insert
Avatar billede eagleeye Praktikant
29. februar 2004 - 11:13 #5
Prøv at udskrive SQL sætningen. Lige efter den er lavet:

sql_insert = "insert ....."
Response.Write sql_insert
Response.End

og tjek den paaser evt. vis den her.
Avatar billede Slettet bruger
29. februar 2004 - 11:19 #6
Det vil sige at min save.asp skal se således ud:

<%
  ' Declaring variables
  Dim name, email, comments, data_source, con, sql_insert

  ' A Function to check if some field entered by user is empty
  Function ChkString(string)
  If string = "" Then string = " "
  ChkString = Replace(string, "'", "''")
  End Function

  ' Receiving values from Form
  name = ChkString(Request.Form("name"))
  email = ChkString(Request.Form("email"))
  comments = ChkString(Request.Form("comments"))
  Id = Request.Form("Id")

  data_source = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
            Server.MapPath("dagbog.mdb")
sql_insert = "insert into comments (Id, name, email, comments) values (" & Id & ", '" & _
            name & "', '" & email & "', '" & comments & "')"
Response.Write sql_insert
Response.End
       
  ' Creating Connection Object and opening the database
  Set con = Server.CreateObject("ADODB.Connection")
  con.Open data_source
  con.Execute sql_insert
  ' Done. Close the connection
  con.Close
  Set con = Nothing
  Response.Write "All records were successfully entered into the database."
%>
Avatar billede eagleeye Praktikant
29. februar 2004 - 11:20 #7
Ja
Avatar billede Slettet bruger
29. februar 2004 - 11:21 #8
når jeg har skrevet min besked til teksten og klikker på gem, så skriver save asp dette:

insert into comments (Id, name, email, comments) values (, 'test', 'test@test.dk', 'tester')
Avatar billede eagleeye Praktikant
29. februar 2004 - 11:24 #9
ok så det fordi ID'et ikke kommer til formen. Så skulle det som gemmer være ok.

Så det denne der skal kigges lidt på:
  <input type="hidden" name="Id" value="<%= Request("Id") %>">

Når du vil kommentere en nyhed/artikel er det via et link?
Umiddelbart skal der overføres et id via querystringen: xx.asp?id=2323
Avatar billede Slettet bruger
29. februar 2004 - 11:25 #10
den gemmer det fint nok i databsen, men den gemmer det bare i dagbog (hvor jeg skriver blog teksterne) og ikke i comments
Avatar billede Slettet bruger
29. februar 2004 - 11:28 #11
Siden som blogteksten vises på har jeg tilføjet her. Det er også her fra brugerne skal klikke hvis de vil skrive en kommentar.
vis.asp
<%@ Language=VBScript %>
<!--#INCLUDE FILE ="adovbs.inc" -->
<!--#INCLUDE FILE ="code_lib.asp" -->
<%

set Conn = Server.createobject("adodb.connection")
conn.Open "DBQ="& Server.MapPath(".") &"/dagbog.mdb; DefaultDir=DBQ="& Server.MapPath(".") &";Driver={Microsoft Access Driver (*.mdb)};"


SQL = "SELECT Id, bruger_id, dato, tekst, overskrift FROM dagbog WHERE Id = "& Request.QueryString("artikel")
Set mailen = conn.ExeCute(SQL)
If mailen.EOF Then
    Response.Write "Der er opstået en fejl..."
Else
%>
<HTML>
<HEAD>
<TITLE> <% = mailen("overskrift") %> </TITLE>
</HEAD>
<link rel="stylesheet" type="text/css" href="css.asp">
<style type="text/css">
a:link { text-decoration: none ; color:#000000 }
a:visited { text-decoration: none ; color:#000000 }
a:active { text-decoration: none ; color: #000000 }
a:hover { text-decoration: underline and overline ; color: #000000 }
</style>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#000000" vlink="#000000" alink="#000000"><br>
<div align="center">
<center>
<table border="1" cellpadding="2" cellspacing="0" style="border-collapse: collapse" bordercolor="#990000" width="500" height="100">
<tr>
<td width="500" height="22"bgcolor="#990000"><FONT FACE="VERDANA" SIZE="2" COLOR="WHITE"><b>Blog:&nbsp;<% = datovis(mailen("dato")) %></b></FONT></td>
</tr>
<tr>
<td width="500" height="100" valign="top"bgcolor="#F3F3F3"><FONT FACE="VERDANA" SIZE="2"><b><% = mailen("overskrift") %></b><p><% = mailen("tekst") %><p><a href="kom.asp">kommentar</a></FONT></td>
</tr>
</table>
</center>
</FONT>
<% End If %>
</CENTER>
</BODY>
</HTML>
Avatar billede Slettet bruger
29. februar 2004 - 11:31 #12
Mit gæt er at det skal se sådan ud på min vis.asp
<a href="kom.asp?Id=<%= Request("Id") %>

eller er jeg helt gal på den :o)
Avatar billede eagleeye Praktikant
29. februar 2004 - 11:31 #13
ok hvis det er kom.asp siden man kommentere mangler der umdiibelbart ID i linket her:

<td width="500" height="100" valign="top"bgcolor="#F3F3F3"><FONT FACE="VERDANA" SIZE="2"><b><% = mailen("overskrift") %></b><p><% = mailen("tekst") %><p><a href="kom.asp">kommentar</a></FONT></td>

Så prøv at rette det til:

<td width="500" height="100" valign="top"bgcolor="#F3F3F3"><FONT FACE="VERDANA" SIZE="2"><b><% = mailen("overskrift") %></b><p><% = mailen("tekst") %><p><a href="kom.asp?id=<%=mailen("id")%>">kommentar</a></FONT></td>
Avatar billede eagleeye Praktikant
29. februar 2004 - 11:33 #14
til 29/02-2004 11:31:08 Ja, dog det skal være artikel og ikke id

<a href="kom.asp?Id=<%= Request("artikel") %>

men ellers skulle det også virke som jeg har vist, hvor man bruger id fra databasen.
Avatar billede eagleeye Praktikant
29. februar 2004 - 11:34 #15
For den igen gemmer i databasen skal du hvade fjernet disse to linjer, som vi satte ind for lidt siden :)
Response.Write sql_insert
Response.End

men det kan du evt. gøre når du kan se den føre det rigtige tal med som ID
Avatar billede Slettet bruger
29. februar 2004 - 11:43 #16
bingo så gemmer den under kommentar, som den skal :o)

Hvis jeg nu vil have dato for hvornår kommentaren er skrevet, hvordan får det med i databasen :)
Avatar billede eagleeye Praktikant
29. februar 2004 - 11:44 #17
Det leteste er at tilføje en kolonne Dato af typen Date/Time

og så udvide din SQL sætning til enten at bruge Date() eller Now() alt efter om der skal tid på også:

sql_insert = "insert into comments (Id, name, email, dato, comments) values (" & Id & ", '" & _
            name & "', '" & email & "', Date(), '" & comments & "')"
Avatar billede Slettet bruger
29. februar 2004 - 11:50 #18
når jeg tilføjer det du skrev oven over får jeg denne fejl:
Microsoft JET Database Engine error '80040e14'

The INSERT INTO statement contains the following unknown field name: 'dato'. Make sure you have typed the name correctly, and try the operation again.

/tester/save.asp, line 25

i databasen har tilføjet dato og sat den til "obligatorisk"
Avatar billede Slettet bruger
29. februar 2004 - 11:56 #19
The INSERT INTO statement contains the following unknown field name: 'dato'. Make sure you have typed the name correctly, and try the operation again.

/tester/save.asp, line 25

Den fejl var at jeg skulle dato til date men nu kommer den med en ny fejl:

Microsoft JET Database Engine error '80040e14'

Syntax error in INSERT INTO statement.

/tester/save.asp, line 25
Avatar billede Slettet bruger
29. februar 2004 - 12:14 #20
jeg dropper det med datoen jeg kan ikke får det til at virke....

takker for hjælpen :)
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