Avatar billede Slettet bruger
13. december 2003 - 13:14 Der er 14 kommentarer og
2 løsninger

Kommentar script i asp

Jeg sidder og "leger" med et artikel script jeg har forsøgt at lave selv, hvor brugerne har mulighed for at kommenter artikler. Jeg kan fint få hentet kommentar fra databasen, men hvordan får jeg gemt det som brugerne har skrevet i dben?
jeg har fundet denne form som brugerne skal skrive deres kommentar i:
<form method="POST" action="save.asp">
<input type="hidden" name="Mode" value="Comment">
<input type="hidden" name="fldAuto" value="197">
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" width="">
<tr>
<td width="81"><a name="Navn"><FONT FACE="VERDANA" SIZE="2">Navn:</FONT></a></td>
<td width="465">
<input type="text" name="Name" size="44" maxlength=""></td>
</tr>
<tr>
<td width="81"><FONT FACE="VERDANA" SIZE="2">E-Mail:</FONT></td>
<td width="465">
<input type="text" name="Email" size="44" maxlength="255" value=" "></td>
</tr>
<tr>
<td width="81" valign="top"><FONT FACE="VERDANA" SIZE="2">Kommentar:</FONT></td>
<td width="465"><textarea class="area" rows="4" name="answer" cols="55"></textarea></td>
</tr>
</table>
</center>
</div>
<p align="center"><input type="submit" value="Gem Kommentar" name="Send" class="button"></p>
<p align="center"><font face="Verdana" size="1"><a href='java script:history.back(-1)'>&lt;&lt; Tilbage</a></font></p>
</form>
</body>
</html>

Ideen er at når det som brugerne har skrevet er gemt i dben skal jeg godkende det før det vises på siden.
Avatar billede eagleeye Praktikant
13. december 2003 - 13:23 #1
På din Side save.asp kan du lave som dette, dog skal du lige tilpasse tabel og kolonne navne til dit script.


if Request.ServerVariables("REQUEST_METHOD") = "POST" AND Request.Form("mode") = "Comment" then

  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open "DIN CONECTION STRENG""

  nyhedsid = Request.Form("fldAuto")
  navn = Replace(Request.Form("Name"),"'","''")
  Email = Replace(Request.Form("Email"),"'","''")
  answer = Replace(Request.Form("answer"),"'","''")

  SQL = "INSERT INTO tabelNavn (nyhedsID, navn, email, besked) VALUES ("
  SQL = SQL & nyhedsid & ", "
  SQL = SQL & "'" & navn & "', "
  SQL = SQL & "'" & email & "', "
  SQL = SQL & "'" & answer & "')"

  Conn.Execute(SQL)
end if
Avatar billede ellebaek Nybegynder
13. december 2003 - 14:29 #2
Hej Stumpi...

Du kan sende filerne til mig, hvis du vil have mig til at kigge på det...!
jens@mail.zix.dk
Avatar billede Slettet bruger
13. december 2003 - 14:30 #3
Er sendt ellebaek :o)
Avatar billede ellebaek Nybegynder
13. december 2003 - 14:31 #4
oki...

Jeg kigger på det..!
Du kan evt. kontakte mig på messenger: jens_ellebaek@hotmail.com
Avatar billede eagleeye Praktikant
13. december 2003 - 14:43 #5
2.1.13: Det er ikke tilladt at tildele point for en opgave løst uden om Eksperten (feks. opgaver løst via mail, icq eller telefon).
Avatar billede ellebaek Nybegynder
13. december 2003 - 14:48 #6
Eagle -> Havde ikke forstået denne regel sådan...
Jeg troede det betød at man måtte lave fx. et system som dette og derefter offentliggøre det på exp. så det var tilgængeligt for alle brugere, og derved ikke blive ramt af denne regel.

Troede kun det galdt hvis det var i tilfælde hvor en person havde spurgt uden om exp. og så den vej bare blev tildelt points her på exp, for noget der ikke var tilgængeligt for alle brugere (både spg. og svar)

Men kan se at det er regel 2.1.12 der dækker dette...

Havde ikke tænkt i de baner..
Avatar billede eagleeye Praktikant
13. december 2003 - 16:17 #7
Det går nok ;) engang i mellem er det nødvendig for at løse en opgave et det forgår via mail. Problemet er nogle ting kan ikke kommes i en kommentar, eksvis en grafik fil, database fil, 10ASP filer. Derfor tager jeg personligt den regel med et gram salt. Og fordi alle ikke har en hjemme-side de kan ligge løsningen på har den regel også været til debat blandt coadmins. Selvom der ikke er noget karma system endnu kan man godt se hvem der bryder reglen for at snyde og hvem der "bryder" den for at hjælpe.
Avatar billede Slettet bruger
14. december 2003 - 05:23 #8
Jeg har forføgt mig frem og har nu fået min form til at gemme daterne i DBen men der er to problemer der driller mig. Det ene er at jeg kan ikke få datoen med i DB. Det andet problem er hvordan får kommentarene til vises under den rigtige artikel?
min form kan ses øverst og min save.asp ser således ud:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
</head>
<body>
<%
  ' Declaring variables
  Dim kommentar,navn,email, 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
  kommentar = ChkString(Request.Form("kommentar"))
  navn = ChkString(Request.Form("navn"))
  email = ChkString(Request.Form("email"))

  data_source = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
            Server.MapPath("database.mdb")
  sql_insert = "insert into kommentar (kommentar, navn, email) values ('" & _
            kommentar & "', '" & navn & "','" & email & "')"
           
  ' 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."
%>
</body>
</html>
Avatar billede ellebaek Nybegynder
14. december 2003 - 12:09 #9
du skal i din kommentartabel have et felt der er numerisk der hedder noget i stilen af artikID. derudover skal du have et felt der hedder id, der er autonummerering..

så skal du rette din sql til:
sql_insert = "insert into kommentar (kommentar, navn, email, artikID, dato) values ('" & _
            kommentar & "', '" & navn & "','" & email & "', " & request.form("fldAuto") & ", '"&date()&"')"

Når du sætter din fldAuto i formen skal den have dette med: value="<%=request.querystring("id")%> for at du sikre det er præcis det id du retter for..

hvis du skal have den mulighed med at du skal kunne fortælle om kommentarene skal vises eller ej, skal du også have et felt i databasen der hedder vises. Det skal have typen Ja/Nej og så skal du benytte denne sql...

sql_insert = "insert into kommentar (kommentar, navn, email, artikID, dato, vises) values ('" & _
            kommentar & "', '" & navn & "','" & email & "', " & request.form("fldAuto") & ", '"&date()&"', False)"
Avatar billede eagleeye Praktikant
14. december 2003 - 12:14 #10
Når det Access så brug den interne Date funktion :

sql_insert = "insert into kommentar (kommentar, navn, email, artikID, dato) values ('" & _
            kommentar & "', '" & navn & "','" & email & "', " & request.form("fldAuto") & ", date())"


I det jeg har vist antog jeg du faktisk har et id nemlig den som hedder fldAuto da der står 197 som value, så lyd det som ID på artiklen.

<input type="hidden" name="fldAuto" value="197">
Avatar billede Slettet bruger
14. december 2003 - 14:18 #11
jeg opgav, da jeg ikke kunne få slidtet til at virke som jeg vil :o(
hvis i lige smider et svar får i hver 100 point :o)
Avatar billede eagleeye Praktikant
14. december 2003 - 14:26 #12
Ok, fik du ikke ID'et med eller??

Når du udskriver nyheden og viser formen neden under, laver man normalt et hidden felt som indeholder ID på den artikel/nyhed som kommentarern er til.


Eks, hvor rs er dit recordset som du uskriver nyheden fra:

<input type="hidden" name="ID" value="<%=rs("nyhedsID")%>">

På  den side som gemmer kommentaren kan du så hendte ID som de andre form felter:

id = Request.Form("id")
Avatar billede eagleeye Praktikant
14. december 2003 - 14:28 #13
Så kan det tages med i din SQL sætning, her også med dato..:

SQL = "INSERT INTO tabelNavn (nyhedsID, navn, email, besked, dato) VALUES ("
SQL = SQL & id & ", '" & navn & "', '" & email & "', '" & answer & "', date())"
Avatar billede eagleeye Praktikant
14. december 2003 - 15:57 #14
Du får et svar fra mig så :)
Avatar billede ellebaek Nybegynder
14. december 2003 - 18:20 #15
og svar fra mig...
Avatar billede ellebaek Nybegynder
14. december 2003 - 18:22 #16
Men det jeg så i din database var at det felt der hedder artikelID ikke er numerisk men autonummerering. Det skal være Nummerisk, og så et andet felt der er autonumm...

grunden til dette er at hvis du har artikelID til at være autonummerering kan du ikke den vej tjekke om en bestemt kommentar hører til en bvestemt artikel-...
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