Avatar billede starf Nybegynder
20. december 2005 - 00:30 Der er 14 kommentarer og
1 løsning

Lidt problemer med at smide data ind i acces db

Hey

Er ved at bygge lidt om på et gæstebogs script, så der kommer spam kontol på..

derfor besluttede jeg mig for at skrive det script om der lægger data ind i databasen.

har dog et par problemer som jeg håber de rer en der kan hjælpe lidt med.

1: hvordan smider man data ind i databasen, fra en post form, fra forie side?

pt har jeg:

set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select ID, Name, Email, Homepage, Date, Entry, Kommentar From gb"
rs.Open strSQL, Connect, adOpenKeyset, adLockOptimistic
rs.AddNew
rs("Name") = Name
rs("Email") = Email
rs("Homepage") = Homepage
rs("Entry") = Entry
rs("Date") = date()
rs.Update
rs.Close
Set rs = Nothing
Connect.Close
set Connect = Nothing

men mangler vel noget der tager data fra:

<form action="example_process_form.asp" method="post" name="form1" id="form1"> ???
Avatar billede Slettet bruger
20. december 2005 - 00:40 #1
Tjae... Hvad mener du helt præcist?

Du skal vel bare lave Request.Form-metoden...
Som nedenfor:
set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select ID, Name, Email, Homepage, Date, Entry, Kommentar From gb"
rs.Open strSQL, Connect, adOpenKeyset, adLockOptimistic
rs.AddNew
rs("Name") = Request.Form("Name")
rs("Email") = Request.Form("Email")
rs("Homepage") = Request.Form("Homepage")
rs("Entry") = Request.Form("Entry")
rs("Date") = date()
rs.Update
rs.Close
Set rs = Nothing
Connect.Close
set Connect = Nothing

- Dette kræver selvfølgelig at tingene i din form hedder det som står ovenfor...

\Dan
Avatar billede starf Nybegynder
20. december 2005 - 00:47 #2
det jeg har lavet er:

en side med nogle forms
og så en side der smider det ind, så ja jeg skal nok bare bruge RequestForm metoden. men pt med den kode du har skrevet de rfår jeg følgende fejl:

ADODB.Recordset error '800a0e7d'

The connection cannot be used to perform this operation. It is either closed or invalid in this context.

/guestbook/example_process_form.asp, line 55
Avatar billede Slettet bruger
20. december 2005 - 00:51 #3
Prøv så at smide nedenstående kode ind i toppen (ovenover din asp-kode):
<!-- #include file="ADOVBS.inc" -->
- sådan at det så ser således ud:
<!-- #include file="ADOVBS.inc" -->
set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select ID, Name, Email, Homepage, Date, Entry, Kommentar From gb"
rs.Open strSQL, Connect, adOpenKeyset, adLockOptimistic
rs.AddNew
rs("Name") = Request.Form("Name")
rs("Email") = Request.Form("Email")
rs("Homepage") = Request.Form("Homepage")
rs("Entry") = Request.Form("Entry")
rs("Date") = date()
rs.Update
rs.Close
Set rs = Nothing
Connect.Close
set Connect = Nothing

Dette kræver "ADOVBS.inc" i samme mappe som scriptet...
\Dan
Avatar billede starf Nybegynder
20. december 2005 - 00:57 #4
hjælper ikke, sker bare det samme
Avatar billede starf Nybegynder
20. december 2005 - 01:12 #5
nå har fået det løst, viste sig jeg havde glemt en stump kode, der sku med før jeg ku få indput ind i dbén
Avatar billede Slettet bruger
20. december 2005 - 01:15 #6
OK...
Så prøv med nedenstående som jeg lige har lavet fra bunden i stedet...:
<!-- #include file="ADOVBS.inc" -->
    <%
    Dim rs
    Set rs = Server.CreateObject("ADODB.RecordSet")
    strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("DinDatabase.mdb")
    rs.open "gb", strDSN, adOpenDynamic, adLockOptimistic, adCmdTable
    rs.addnew
    rs("Name") = Request.Form("Name")
    rs("Email") = Request.Form("Email")
    rs("Homepage") = Request.Form("Homepage")
    rs("Entry") = Request.Form("Entry")
    rs("Date") = date()
    rs.Update
    rs.Close
    set rs = Nothing
    %>

- Og så skal filen "ADOVBS.inc" ligge i samme mappe som scriptet!

\Dan
Avatar billede starf Nybegynder
20. december 2005 - 01:21 #7
tak det virker... nu er problemet bare at den smider godt nok ind i databasen, men de rhvor jeg skal trække det ud, får jeg følgende fejl:


12/20/2005
Microsoft VBScript runtime error '800a000d'

her er selve koden:

    strTemp = Server.HTMLEncode(strMessage)

Problemet er så hvis jeg fjerner den del af config, så kommer der godt nok ingen fejl, men der kommer heller ikke nogen post.
Type mismatch: 'Server.HTMLEncode'

/guestbook/config.asp, line
Avatar billede Slettet bruger
20. december 2005 - 01:23 #8
Jeg tror ikke du kan html-encode det på den måde...
Må jeg ikke prøve at se dit loop?
Altså den fil som henter posterne i din gæstebog?

\Dan

P.S. For mig at se, så har dette intet med det script som skal gemme i databasen at gøre...
Avatar billede starf Nybegynder
20. december 2005 - 01:27 #9
jeg ved enlig ikke lige hvorfor den del er der.. giver ingen mening, for selve det indput der kommer ind i dbén er jo ren text...

With Response
    .Write "<table border=""0"" width=""" & Table_width & """ bgcolor=""" & Table_Border & """ cellpadding=""1"" cellspacing=""0""><tr><td>" & vbCrLf
    .Write "<table border=""0"" width=""100%"" cellpadding=""3"" cellspacing=""0"" bgcolor=""" & Table_Field & """>" & vbCrLf
    .Write "<tr>" & vbCrLf
    .Write "<td align=""left"" valign=""middle"" bgcolor=""" & Table_HeadBottom & """><span class=""NameStrong"">" & RS("Name") & "</span></td>" & vbCrLf
    .Write "<td align=""right"" valign=""middle"" bgcolor=""" & Table_HeadBottom & """><span class=""small"">" & rs("Date") & "</span></td>" & vbCrLf
    .Write "</tr>" & vbCrLf
    .Write "<tr>" & vbCrLf
    .Write "<td align=""left"" colspan=""2"" valign=""middle"" bgcolor=""" & Table_Field & """>" & Zeilenumbruch(rs("Entry")) & "</td>" & vbCrLf
    .Write "</tr>" & vbCrLf
End With
If Not rs("Kommentar") = "" then
With Response
    .Write "<tr>" & vbCrLf
    .Write "<td align=""left"" colspan=""2"" valign=""middle"" bgcolor=""" & Table_Field & """><span class=""comment"">" & Zeilenumbruch(rs("Kommentar")) & "</span></td>" & vbCrLf
    .Write "</tr>" & vbCrLf
End With
End If
With Response
    .Write "<tr>" & vbCrLf
    .Write "<td align=""left"" valign=""middle"" bgcolor=""" & Table_HeadBottom & """><span class=""small"">" & Lang_Email & " <A HREF=""mailto:" & rs("Email") & """ class=""small"">" & rs("eMail") & "</A></td>" & vbCrLf
    .Write "<td align=""right"" valign=""middle"" bgcolor=""" & Table_HeadBottom & """>" & vbCrLf
End With

Dim HomepageWrite
HomepageWrite = rs("Homepage")
if left(rs("homepage"),7)>< "http://" then
HomepageWrite = "http://" & rs("Homepage")
end if
If rs("Homepage") = "X" then
response.write "<span class=""small"">"&Lang_Error5&"</span>"
Else
response.write "<span class=""small""> <A HREF="""&HomepageWrite&""" TARGET=""_blank"" class=""small"">"&Lang_Homepage&" &raquo;&raquo;</A>"
End If
response.write "</td></tr></table></td></tr></table><br>" & vbCrLf

intRecCount = intRecCount - 1
RS.MoveNext
Loop
end if
if rs.EOF then
response.write "<span class=""small2"">"&Lang_NoMore&"</span>"
end if
ShowPaging()
rs.close
Set rs = Nothing
Connect.Close
Set Connect = Nothing

With Response
    .Write "<table border=""0"" cellpadding=""1"" cellspacing=""0"" width=""" & Table_width & """>" & vbCrLf
    .Write "<tr><td align=""right""><A HREF=""new_entry.asp"" TARGET=""_top"">" & Lang_EntryLink & "</A></td></tr>" & vbCrLf
    .Write "</table>" & vbCrLf
End With
%>
Avatar billede Slettet bruger
20. december 2005 - 01:34 #10
OK... Hvis jeg var dig ville jeg gribe det her an på en helt anden måde...
Her får du lige et simpelt database-udtræk:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("DinDatabase.mdb")
strSQL = "select * from gb ORDER BY Date DESC"
set rs = Conn.execute(strSQL)
if NOT rs.EOF then
do until rs.EOF
name = rs("Name")
email = rs("Email")
homepage = rs("Homepage")
entry = rs("entry")
%>
Så bruger du bare denne her for at udskrive navn for eksempel:
<%="" & name & ""%>
Og det er så også her du skal have alt indholdet og din span-tags for eksempel...
<%
rs.MoveNext
Loop
end if
rs.close
set rs=nothing
Conn.close
set Conn=nothing
%>

\Dan
Avatar billede starf Nybegynder
20. december 2005 - 01:46 #11
Ja burde nok skrive det om fra bunden.. har du et eksempel på hvordan man evt laver paging? så ens post bliver delt op på flere sider? for så skriver jeg bare hele udtrækket om
Avatar billede Slettet bruger
20. december 2005 - 01:50 #12
Nej det har jeg ikke lige...
Men har fundet en artikel om det her:
http://activedeveloper.dk/artikler/default.asp?articleid=31
Her er der noget om paging...

\Dan
Avatar billede starf Nybegynder
20. december 2005 - 01:54 #13
ok tak.. kan du ikke smide et svar og få point som tak for hjælpen
Avatar billede Slettet bruger
20. december 2005 - 02:16 #14
Jo det kan jeg da... Her er der et svar...

Og det var så lidt - med den hjælp...

God jul!

\Dan
Avatar billede starf Nybegynder
20. december 2005 - 02:20 #15
jo tak og god jul til dig også! :)
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