INSERT DATA FROM MULTIPLE TEXTAREAS IN THE FORM TO THE DATABASE

B

BLUESTAR

HELLO,

I AM A NEW BII TO ASP,AND I NEED HELP ON THIS ISSUE.
I HAVE A .ASP FORM WHICH IS ALREADY BUILT WITH 5 QUESTIONS AND 5 TEXTAREAS
RESPECTIVELY.THESE 5 QUESTIONS ARE NOT FIX,THERE WILL BE MORE ADDITION.

ITS BASICALLY A SURVEY FORM.

I HAVE CREATED A TABLE WITH 3 FIELDS :QUESTION ID,RESPONSE IN TEXTAREA, AND
DATE.
AND THESE 3 ARE TO BE INSERTED IN DATABASE VIA THIS FORM.

I HAVE TO 1ST COUNT /PARSE HOW MANY TEXTAREAS ARE THERE IN THIS FORM,THEN
EXTRACT EACH TEXTAREA ID.

AND THEN FINALLY I HAVE TO INSERT QESTION ID,TEXTAREA RESPONSE TO THE DATABSE.

I WILL BE REALLY GRATEFUL IF SOMEBODY CAN HELP ME TO PROCEED THROUGH IT.

I HAVE BEEN ADVICE TO USE SOME FUNCTIONS TO IMPLEMENT THIS

HERE IS THE LINK OF THIS FORM
http://localhost/testasp/SurveyResponse.asp

THANK YOU

WILL BE EGARLY WAITING FOR SOME REPLY
 
O

Old Pedant

Easiest way is to just number the fields.

Example:

<FORM Action="processAnswers.asp" Method=POST>
Question: How much is 3 + 7 * 10 ?
Answer: <TEXTAREA Name="answer1"></TEXTAREA>
Question: What are your favorite foods?
Answer: <TEXTAREA Name="answer2"></TEXTAREA>
Question: Describe the effects of moonlight on the flight of Monarch
butterflies:
Answer: <TEXTAREA Name="answer3"></TEXTARE>
....
<INPUT Type=Submit Value="Submit my answers">
</FORM>

And then you "processAnswers.asp" page simply does this:

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "...your connection string ..."

For answerNumber = 1 TO 3
answer = Request("answer" & answerNumber)
If answer <> "" Then
SQL = "INSERT INTO answers( user, answerNumber, answer ) " _
& " VALUES(" & userid & "," & answerNumber & "," _
& "'" & Replace(answer, "'", "''") & "')"
conn.Execute SQL
End If
Next
conn.Close
%>
 
B

BLUESTAR

Well first of all thank a ton for reply.
Here is the link of the page where I have to perform insertion of data in
the databse.http://www.smartcharlotte2050.com/YourThoughts.asp

I have been told to write some function that will traverse through the form
and will count textareas and also search for each textareaID and insert it
in the question ID column of the table.

Is there any way ,on how to traverse through the form.asp source code and
count textareas and insert its content in database.

Thanks again.
And again expecting a quick response.
 
O

Old Pedant

Is there any way ,on how to traverse through the form.asp source code and
count textareas and insert its content in database.

Yes. Use the code I gave you.

What did you THINK it was doing????

It's doing *EXACTLY* that.

But forget ID's on the fields. IDs don't matter in ASP code. Use names, as
I showed you.

Did you even TRY that code???
 
O

Old Pedant

Using the FORM you actually show there, you would just alter my code to

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "...your connection string ..."

For answerNumber = 1 TO 4
answer = Request("Your Thoughts Q" & answerNumber)
If answer <> "" Then
SQL = "INSERT INTO answers( answerNumber, answer ) " _
& " VALUES(" & answerNumber & "," _
& "'" & Replace(answer, "'", "''") & "')"
conn.Execute SQL
End If
Next
conn.Close
%>

You didn't bother to show us the schema of your DB table, so I just assumed
TABLE: answers
answerNumber int
answer text
 
B

Bob Barrows [MVP]

Old said:
Yes. Use the code I gave you.

What did you THINK it was doing????

It's doing *EXACTLY* that.

But forget ID's on the fields. IDs don't matter in ASP code. Use
names, as I showed you.

Did you even TRY that code???
Cmon, pedant, hop to it. He's expecting a quick response. Stop dithering now
.... :)
 
O

Old Pedant

Bob Barrows said:
Cmon, pedant, hop to it. He's expecting a quick response. Stop dithering now
.... :)

No fair! Making the people around me give me strange looks for ROTFLMAO.

Too funny! Needed that!
 
B

BLUESTAR

Thank You
And also,sorry for thanking you late,

BUT I am getting error in the insert statement, and i am not being able to
solve it.

2ndly in this form,later more questions will be added, so is there any
simple way to count the # of textareas and then use it in for loop.

After my long search on google I found one thing...there is a class define

Class UtilityObj
Private _name As String
Private _value As String
Public Sub New(ByVal Name As String,ByVal Value As int)
_name = Name
_value = Value
End Sub
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal Value As String)
_name = Name
End Set
End Property
Public Property Value() As String
Get
Return (_value)
End Get
Set(ByVal Value As String)
_value = Value
End Set
End Property
End Class


then using this function the name and ID is being inserted in the database



Funtion LoopingControls(oControl As Control)
Dim frmCtrl As Control
oArrayList = New ArrayList
For each frmCtrl in oControl.Controls
If TypeOf frmCtrl Is TextArea Then

Call FunctionDB(db)

End If
If frmCtrl.HasControls Then
LoopingControls(frmCtrl)
End If
Next
End Function


This is the function which will do database connection.

Function FunctionDB(db)

Set db=Server.CreateObject ("ADODB.Connection")

db.Open "DSN=surveydsn;User ID=dbo_sage;Password=sage;"

SQL = "INSERT INTO survey ( i, res ) "
& " VALUES(" & i & ","
& "'" & Replace(res, "'", "''") & "')"
db.Execute SQL
db.Close
db.Execute(VarQuery)
End Function



Now the thing is I am messed up with this, I have all the logic to
perform,but not being able to assemble it.


Lastly somebody told me to use Microsoft Visual studio 6, well i am not
being able to open interdev as I dont have FrontPage 98 server extension and
also Its not available on net free to download,


Hope you will again help me.

Thank again for your support,it really helped me.
 
B

BLUESTAR

I forgot to say that,more questions will be added,but I dont know how
many,so i need to traverse the form in order to count # of textareas, so the
for loop from 1 to 4 will not work in that case

Thank You
 
O

Old Pedant

BLUESTAR said:
I forgot to say that,more questions will be added,but I dont know how
many,so i need to traverse the form in order to count # of textareas, so the
for loop from 1 to 4 will not work in that case

So change the 4 to the actual number of questions.

Or store the number of questions in another (hidden) form field.

Or just change it to 99.

The code in there will *ONLY* store answers that it finds to be non-blank.

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "...your connection string ..."

For answerNumber = 1 TO 99
answer = Trim( "" & Request("Your Thoughts Q" & answerNumber) )
If answer <> "" Then ' *** SKIPS BLANK ANSWERS! ***
SQL = "INSERT INTO answers( answerNumber, answer ) " _
& " VALUES(" & answerNumber & "," _
& "'" & Replace(answer, "'", "''") & "')"
conn.Execute SQL
End If
Next
conn.Close
%>
 
E

Evertjan.

RE: INSERT DATA FROM MULTIPLE ...



=?Utf-8?B?T2xkIFBlZGFudA==?= wrote on 19 jul 2008 in
microsoft.public.inetserver.asp.general:
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "...your connection string ..."

For answerNumber = 1 TO 99
answer = Trim( "" & Request("Your Thoughts Q" & answerNumber) )
If answer <> "" Then ' *** SKIPS BLANK ANSWERS! ***
SQL = "INSERT INTO answers( answerNumber, answer ) " _
& " VALUES(" & answerNumber & "," _
& "'" & Replace(answer, "'", "''") & "')"
conn.Execute SQL
End If
Next
conn.Close
%>

Nice code, gives me 99 chances to do a SQL-injection i one go!

And both in post and in querystring!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,433
Messages
2,571,683
Members
48,796
Latest member
Greg L.

Latest Threads

Top