googleboy wrote: > Hi. > > I am writing up my own web form. I'm a bit of a newb, and read up many > different how-tos and examples and documentaion. I finally had it > working just great until I decided that I wanted to add some extra > logic because there's one form that submits a particular type of > information. a little extra validation, and the creation of a list of > the values to be mailed in to the site manager. > > The code below is where I am going wrong (edited for brevity): > > > form=cgi.FieldStorage() > > rev_fields = { "param1":None, "param3":None, "param6":None, > "param5":None, "param8":None, "param9":None, "param10":None, > "param11":None } > > > # Everything worked until I added the following if statement: > > if form.has_key("param8"): # Only one form has this > param8 = form.getvalue("param8") > if param8 == 0: # 0 is the default value > print "Content-type: text/html" > debug("You must give the item a rating") > for field in form.keys(): > value = form[field].value > if rev_fields.has_key(field): > rev_fields[field] = value > for key in rev_fields: > if rev_fields[key] == None: > print "Content-type: text/html" > debug("All fields must be filled in. Please check your %s > submission." % key) > else: > #feedback = ("%s, %s, %s, %s, %s, %s, %s, %s" % > (form["param1"].value, form["param3"].value, form["param6"]. > value, form["param5"].value, form["param8"].value, > form["param9"].value, form["param10"].value, form["param11"].value) > #feedback = ("%s, %s, %s, %s, %s, %s, %s, %s" % > (form.getvalue("param1"), form.getvalue("param3"), form.getvalue( > "param6"), form.getvalue("param5"), form.getvalue("param8"), > form.getvalue("param9"), form.getvalue("param10"), > form.getvalue("param11")) > feedback = ("%s, %s, %s, %s, %s, %s" % > (rev_fields["param1"], rev_fields["param3"], rev_fields["param6"], > rev_fields["param5"], rev_fields["param8"], rev_fields["param9"], > rev_fields["param10"], rev_fields["param11"])
I believe you missed a closing parenthesis, which is why you are getting the syntax error - the scanner has to look at the next source line because it expects it to continue the unclosed expression. That's why you are getting confused. > > > #feedback = form[ "score" ].value > > msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n Feedback: %s\r\n\r\n" > % > (rev_fields["param2"], rev_fields["param7"], rev_fields["param3"], > rev_fields["param6"])) > Since rev_fields is a dictionary, it would be easier to write this as msg = "From %(param2)s\r\nTo: %(param7)\r\nSubject: %(param3)s\r\n\r\n Feedback: %(param6)s\r\n\r\n" % rev_fields module any text wrapping the mailstream might have done to the above single line. > > If I comment out the 'else:' logic, it works great. But then I don't > get a list called feedback containing all teh bits I want, The error I > get is really strange, too: > > [Mon Aug 15 05:54:58 2005] [error] [client 60.224.106.116] Premature > end of script headers: /var/www/users/senta/html/gobooks/cgi/form.py > File "/var/www/users/senta/html/gobooks/cgi/form.py", line 99 > msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n Feedback: > %s\r\n\r\n" % > ^ > SyntaxError: invalid syntax > > Just a simple assignation.... I did think it might have been an > indentation error, but I changed that around and got a message telling > me about an indentation problem, which this doesn't do. > > I have tried several different ways to assign the values, as you can > see by the commented out lines. Tried getting the values directly from > teh form, and also from the validated rev_fields dictionary. I'd be > extremely grateful to anyone who helps me through this. > > TIA > > Googleboy > Hope this helps. regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ -- http://mail.python.org/mailman/listinfo/python-list