Avatar billede rille101 Nybegynder
21. juni 2005 - 09:49 Der er 12 kommentarer og
1 løsning

Indsætte i tabel og overføre den indsatte post til næste side

Hej
Jeg har via dreamweaver fået lavet en insert form, der lægger en post ind i en access db.
Nu vil jeg gerne have lavet en slags kvittering på den side man bliver sendt til.
Kvitteringen skal vise posten der lige er blevet indsat.

Dreamwevers genererede kode ser således ud:

<%
' *** Edit Operations: declare variables

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
  MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString)
End If

' boolean to abort record edit
MM_abortEdit = false

' query string to execute
MM_editQuery = ""
%>
<%
' *** Insert Record: set variables

If (CStr(Request("MM_insert")) = "form2") Then

  MM_editConnection = MM_ballumby_STRING
  MM_editTable = "efterlysning"
  MM_editRedirectUrl = "CMS-ny-efterlysning2.asp"
  MM_fieldsStr  = "select|value|efterlysning|value|navn|value|dato|value"
  MM_columnsStr = "Kategori|',none,''|efterlysning|',none,''|navn|',none,''|dato|',none,NULL"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
 
  ' set the form values
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i)))
  Next

  ' append the query string to the redirect URL
  If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
    If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
      MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
    Else
      MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
    End If
  End If

End If
%>
<%
' *** Insert Record: construct a sql insert statement and execute it

Dim MM_tableValues
Dim MM_dbValues

If (CStr(Request("MM_insert")) <> "") Then

  ' create the sql insert statement
  MM_tableValues = ""
  MM_dbValues = ""
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
    MM_typeArray = Split(MM_columns(MM_i+1),",")
    MM_delim = MM_typeArray(0)
    If (MM_delim = "none") Then MM_delim = ""
    MM_altVal = MM_typeArray(1)
    If (MM_altVal = "none") Then MM_altVal = ""
    MM_emptyVal = MM_typeArray(2)
    If (MM_emptyVal = "none") Then MM_emptyVal = ""
    If (MM_formVal = "") Then
      MM_formVal = MM_emptyVal
    Else
      If (MM_altVal <> "") Then
        MM_formVal = MM_altVal
      ElseIf (MM_delim = "'") Then  ' escape quotes
        MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
      Else
        MM_formVal = MM_delim + MM_formVal + MM_delim
      End If
    End If
    If (MM_i <> LBound(MM_fields)) Then
      MM_tableValues = MM_tableValues & ","
      MM_dbValues = MM_dbValues & ","
    End If
    MM_tableValues = MM_tableValues & MM_columns(MM_i)
    MM_dbValues = MM_dbValues & MM_formVal
  Next
  MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

  If (Not MM_abortEdit) Then
    ' execute the insert
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> "") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>



Formen der bruges ser således ud:

<form method="POST" action="<%=MM_editAction%>" name="form2">
            <table align="center">
              <tr valign="top">
                <td width="72" height="30" align="right" nowrap>Kategori:</td>
                <td height="30" colspan="2"><select name="select">
                  <option selected>Alle</option>
                  <option>Lokal information</option>
                  <option>Turist information</option>
                  <option>Foreningsliv</option>
                  <option>Bolig og Erhverv</option>
                  <option>Tilflytter information</option>
                </select></td>
              </tr>
              <tr valign="top">
                <td height="30" align="right" nowrap>Efterlysning:</td>
                <td height="30" colspan="2"><textarea name="efterlysning" cols="50" rows="5"></textarea>
                </td>
              </tr>
              <tr valign="top">
                <td height="30" align="right" nowrap>Dit navn:</td>
                <td height="30" colspan="2"><input type="text" name="navn" value="" size="32">
                </td>
              </tr>
              <tr valign="middle">
                <td height="30" align="right" nowrap>&nbsp;</td>
                <td width="242" height="30"><input type="submit" value="Bring efterlysning">
                </td>
                <td width="79"><div align="right">trin 1 af 2 </div></td>
              </tr>
              <tr valign="baseline">
                <td height="30" colspan="3" align="right" nowrap>Indtast oplysninger - <span class="style27">Kvittering</span> </td>
                </tr>
            </table>
            <input type="hidden" name="dato" value="<%=date()%>" size="32">
            <input type="hidden" name="MM_insert" value="form2">
          </form>

Mit spørgsmål er så, hvordan jeg får indfanget det id nummer der bliver oprettet, samt hvordan jeg får det ført videre til næste side, og endelig, hvordan side 2 opfanger id'et.

har før snydt lidt ved bare at lade side 2 vise den nyeste post, men nu vil jeg sgu lære hvordan man gør!

Håber nogen kan hjælpe mig.
Avatar billede thesurfer Nybegynder
21. juni 2005 - 10:10 #1
Se http://www.eksperten.dk/spm/622111#rid5580539

<%

' ...

' indsæt i databasen, og så:

Set rs = Conn.Execute("select @@identity")
id = rs(0)

' send det nye id videre:
response.redirect "side2.asp?id=" & id

%>

I side2.asp:

<%
response.write "den nye post har fået id'en: " & request.querystring("id")
%>

/theSurfer
Avatar billede rille101 Nybegynder
21. juni 2005 - 10:28 #2
Hej har prøvet mig lidt frem, og har indsat response.redirect "side2.asp?id=" & id
her:

= "CMS-ny-efterlysning2.asp?id=" & id
  MM_fieldsStr  = "select|value|efterlysning|value|navn|value|dato|value"
  MM_columnsStr = "Kategori|',none,''|efterlysning|',none,''|navn|',none,''|dato|',none,NULL"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
osv osv osv........


Så har jeg indsat
Set rs = Conn.Execute("select @@identity")
id = rs(0)
helt til slut i koden fra spørgsmålet:

    If (MM_editRedirectUrl <> "") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>
<%
Set rs = Conn.Execute("select @@identity")
id = rs(0)
%>
osv osv osv........

Får dog denne fejl:
Microsoft VBScript runtime error '800a01a8'

Object required: 'Conn'

/lokalinfo/cms-ny-efterlysning1.asp, line 146

Hvor skal set rs... være?
Avatar billede thesurfer Nybegynder
21. juni 2005 - 10:33 #3
Du har kaldt den "MM_editCmd" i stedet for "conn".. erstat "conn" med "MM_editCmd"..

/theSurfer
Avatar billede thesurfer Nybegynder
21. juni 2005 - 10:34 #4
Koden:

Set rs = Conn.Execute("select @@identity")
id = rs(0)

skal være *før* du bruger response.redirect! Ellers virker det jo ikke :-)

/theSurfer
Avatar billede rille101 Nybegynder
21. juni 2005 - 10:50 #5
Ok har prøvet at skrive det ind her så...

Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

Set rs = MM_editCmd.Execute("select @@identity")
id = rs(0)

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
  MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString)
End If........

men det virker heller ikke. Får nu fejlen:
Object required: ''
Avatar billede thesurfer Nybegynder
21. juni 2005 - 10:51 #6
Skriv altid hele fejlmeddelelsen.. dvs, kopier den og indsæt den her..

/theSurfer
Avatar billede thesurfer Nybegynder
21. juni 2005 - 10:52 #7
..og linien, som fejlmeddelelsen referer til..

/theSurfer
Avatar billede rille101 Nybegynder
21. juni 2005 - 11:06 #8
ok.

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/lokalinfo/cms-ny-efterlysning1.asp, line 49

linje 49 er:
Set rs = MM_editCmd.Execute("select @@identity")
Avatar billede thesurfer Nybegynder
21. juni 2005 - 11:43 #9
ahh...

Det er fordi, min kode skal stå før linien MM_editCmd.ActiveConnection.Close

Jeg tror at det skal se sådan ud:

' indsæt i db, og så:

MM_editQuery = "select @@identity" ' sql strengen

MM_editCmd.CommandText = MM_editQuery ' sæt command-værdien

Set rs = MM_editCmd.Execute ' sæt rs-forbindelsen

id = rs(0) ' smid smid værdien over i variablen "id"

set rs = nothing ' frigør objektet

MM_editCmd.ActiveConnection.Close ' luk forbindelsen

response.redirect "side2.asp?id=" & id ' send brugeren videre til side2.asp


Prøv det..

/theSurfer
Avatar billede rille101 Nybegynder
21. juni 2005 - 13:47 #10
Ja nu vises side1 og det lykkedes t indsætte data i tabellen.
Dog bliver der ikke sendt noget id med over til næste side.
I adresselinjen på side 2 står der ...../side2.asp?id=

og på selve siden står der:
den nye post har fået id'en: (og så ikke mere)
Avatar billede rille101 Nybegynder
21. juni 2005 - 13:58 #11
Lige et novice spørgsmål...
Skal der ikke være en kode på side 2 der fanger id'et?
Avatar billede thesurfer Nybegynder
25. juni 2005 - 02:13 #12
Koden der fanger id'en på side2.asp:

response.write "den nye post har fået id'en: " & request.querystring("id")

Jeg forstår ikke helt DreamWeavers måde, at lave ASP koden på.. Jeg har lært ASP via http://www.html.dk/tutorials/asp .. lektionerne 17-22 omhandler databaser..

Prøv det her:
erstat linien

response.redirect "side2.asp?id=" & id ' send brugeren videre til side2.asp

med disse linier:

response.write "id'en er: *" & id & "*"
''' response.redirect "side2.asp?id=" & id ' send brugeren videre til side2.asp

hvis der bare stå "id'en er: **", er der ikke noget i variablen "id".. så er der noget galt..

/theSurfer
Avatar billede rille101 Nybegynder
26. juni 2005 - 10:41 #13
Hej Surfer. jeg fandt ud af at det du skrev i 21/06-2005 11:43:29
rent faktisk virkede. Havde bare sat det ind det forkerte sted.
Mange tak 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