webForumDet fria alternativet

Sätta in i tabell

ASP

17 svar · 378 visningar · startad av Rinaldo

Medlem sedan mars 20014 214 inlägg
Frågan#1

Skulle man på något sätt kunna hämta alla värden från ett formulär och sätta in dem i en tabell där fältet heter samma sak som namnet på det speciella fältet i forumuläret

tex

<form method="post" action="bla.asp">
Namn <input type="text" "name="namn">
Efternamn <input type="text" "name="efternamn">
</form>

Sedan ska värdet ur "namn" in i fältet namn och värder ur "efternamn" in i fältet efternamn.

Medlem sedan feb. 20012 412 inlägg
#2

Function FixaTecken(sText)
sText = replace(sText,"'","''")
FixaTecken = sText
End Function

sql ="INSERT INTO tabellen (namn, efternamn) VALUES( '" & FixaTecken(request.form("namn")) &"', '" & FixaTecken(request.form("efternamn")) &"')"

connect.execute sql,,128
Medlem sedan apr. 20021 203 inlägg
#3

Re: Sätta in i tabell

Ursprungligen av Rinaldo **Skulle man på något sätt kunna hämta alla värden från ett formulär och sätta in dem i en tabell där fältet heter samma sak som namnet på det speciella fältet i forumuläret

tex

<form method="post" action="bla.asp">
Namn <input type="text" "name="namn">
Efternamn <input type="text" "name="efternamn">
</form>

Sedan ska värdet ur "namn" in i fältet namn och värder ur "efternamn" in i fältet efternamn.**

Lätt som en plätt! (Jag förutsätter att du redan kan lite ASP. Gör du inte det - Säg till.)

<%

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (\*.mdb)};dbq=c:\\sökväg\\main.mdb" 

Set RecSet = Server.CreateObject("ADODB.Recordset")

Addera = "SELECT * FROM tabell"

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
if Request.Form("namn")<>"" then
RecSet.AddNew

Recset("namn") = Request.Form("namn")
Recset("efternamn") = Request.Form("efternamn")
end if

RecSet.Update
RecSet.Close
Connect.Close %\>

Undrar du något så är det bara att fråga!
Lycka till!
//trexter.com

Medlem sedan okt. 20005 273 inlägg
#4

Jag hade nog kört på Jörgen HP variant.........

Medlem sedan mars 20014 214 inlägg
#5

hmm... blev nog lite missförstådd... Jag vet alltså inte hur många fält det kommer finnas i formuläret.

<form method="post" action="bla.asp"> 
x <input type="text" "name="x">
y <input type="text" "name="y">
</form> 

Function FixaTecken(sText)
sText = replace(sText,"'","''")
FixaTecken = sText
End Function

sql ="INSERT INTO tabellen (x, y) VALUES( '" & FixaTecken(request.form("x")) &"', '" & FixaTecken(request.form("y")) &"')"

connect.execute sql,,128

I formuläret radas bara alla inmatningsfält upp genom en for loop ifrån databasen....

ex: http://www.webforum.nu/showthread.php?s=&threadid=37466 kopliks funktion. Där vet han inte hur många fält som ska in i databasen eller vad dom heter.... Fast jag förstår mig inte på hur jag ska göra...

Medlem sedan mars 20007 896 inlägg
#6

Testa:

<%
Dim strFields, strValues

For Each reqItem In Request.Form
     If strFields <> "" Then
          strFields = strFields & ", "
          strValues = strValues & "', '"
     End If

     strFields = strFields & Replace ( Request.Form ( reqItem ), "'", "&#39;" )
     strValues = strValues & Replace ( Request.Form ( reqItem ), "'", "&#39;" )
Next

strSQL = "INSERT INTO tbl (" & strFields & ") VALUES('" & strValues & "')"
...

Förutsätter att du endast har textfält i tabellen tbl.

Medlem sedan mars 20014 214 inlägg
#7

har pm fält och ja/nej också.... hur ska jag göra då?

Medlem sedan mars 20007 896 inlägg
#8

PM-fält är ju text, men med Ja/Nej blir det svårare att lösa än med min simpla metod. Du får helt enkelt kolla genom varje fälttyp med ett recordset, och använda andra delimiters än "', '" som jag använde. Bör inte vara några problem. :)

Kan ge dig ett hantag när jag är tillbaka om en halvtimme, hinner inte just nu. :)

Medlem sedan mars 20014 214 inlägg
#9

probs... den sätter just nu inte in någoting i databasen men inget felmeddelande visas heller....

Jag har 12 fält fast fyller bara i tre stycken av dom (typ:text)....

Medlem sedan mars 20007 896 inlägg
#10

That's odd. Hur ser SQL-frågan ut om du skriver ut den med Response.Write?

Medlem sedan mars 20007 896 inlägg
#11

Här kommer ett sätt att lägga till data, oavsett fälttyp:

<%
Function SQL_Creator ( ByRef objRS )
     Dim strCurrentDelimiter, strCurrentField, strCurrentValue
     Dim strFields, strValues, strSQL
     Dim objField

     For Each objField In objRS.Fields
          strCurrentDelimiter = ""
          strCurrentField = ""
          strCurrentValue = ""

          Select Case objField.Type
               Case 202
                    strCurrentDelimiter = "'"
               Case 203
                    strCurrentDelimiter = "'"
               Case 3
                    strCurrentDelimiter = ""
               Case 135
                    strCurrentDelimiter = "#"
               Case 11
                    strCurrentDelimiter = ""
           End Select

           For Each reqItem In Request.Form
                If reqItem = objField.Name Then
                     strCurrentField = reqItem
                     strCurrentValue = strCurrentDelimiter & Request.Form ( reqItem ) & strCurrentDelimiter
                End If
           Next

           If strCurrentField <> "" Then
                If strFields <> "" Then
                     strCurrentField = ", " & strCurrentField
                     strCurrentValue = ", " & strCurrentValue
                End If

                strFields = strFields & strCurrentField
                strValues = strValues & strCurrentValue
           End If
      Next

      strSQL = "INSERT INTO tbl (" & strFields & ") VALUES(" & strValues & ")"
      SQL_Creator = strSQL
End Function

Dim objC, objRS

set objC = Server.CreateObject ( "ADODB.Connection" )
objC.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ( "/yaDB.mdb" )

set objRS = objC.Execute ( "SELECT * FROM tbl" )

objC.Execute ( SQL_Creator ( objRS ) )

objRS.Close
objC.Close
set objRS = Nothing
set objC = Nothing
%>

Fungerar förhoppningsvis som den ska, har ju inte testat. :)

Fungerar endast för fält med typerna:
Tal, Text, PM, Datum och Boolean

Medlem sedan mars 20014 214 inlägg
#12

hmm...

Feltyp:
Request-objekt, ASP 0102 (0x80004005)
Funktionen förväntar sig en sträng som inmatning.
/applications/eget_forum/register_execute.asp, line 30

POST Data:
username=aaaa&password=aaaa&first_name=aaaa&sur_name=aaaa&email=aaaa&homepage=aaaa&location=aaaa&signature=aaaa&show_email=on&show_signature=on&auto_login=on

Detta felmeddelande uppkommer när jag använder scriptet...

Medlem sedan mars 20007 896 inlägg
#13

Vilken rad är rad 30?

Medlem sedan mars 20014 214 inlägg
#14

denna

strCurrentValue = strCurrentDelimiter & Request.Form ( reqName ) & strCurrentDelimiter

Medlem sedan mars 20007 896 inlägg
#15

Det var ju lite dumt, helt enkelt en felskrivning. Det står reqName istället för reqItem. :)

Glöm inte att ändra på raden ovanför också, det är felskrivning där också.

Medlem sedan mars 20014 214 inlägg
#16

nu funkar det fint...

Tack för koden :)

Medlem sedan mars 20014 214 inlägg
#17

En sak till... om jag nu vill sätta in några bestämda värden i tabellen samtidigt hur gör jag då?

strSQL = "INSERT INTO tblAuthor (" & strFields & ",registration_date) VALUES(" & strValues & ",#now#)"
SQL_Creator = strSQL

??

Medlem sedan mars 20007 896 inlägg
#18

Jäpp, det där borde funka tip-top. Vassego, förresten. :)

261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)