multiple parameters in if statement...

Peter Otten __peter__ at web.de
Sun Apr 16 04:53:09 EDT 2006


Kun wrote:

> mensanator at aol.com wrote:
>> Kun wrote:
>>> I am trying to make an if-statement that will not do anything and print
>>> 'nothing entered' if there is nothing entered in a form.  I have the
>>> following code that does that, however, now even if I enter something
>> 
>> Yes, but did you enter everything?
>> 
>>> into the form, the code still outputs 'nothing entered'.
>> 
>> The logic doesn't imply "nothing", it implies "not everything".
>> The else clause will execute if ANY item is not enetered.
>> 
>>> This violates
>>> the if statement and I am wondering what I did wrong.
>>>
>>>      if form.has_key("delete_id") and form["delete_id"].value != "" and
>>> form.has_key("delete_date") and form["delete_date"].value != "" and
>>> form.has_key("delete_purchasetype") and
>>> form["delete_purchasetype"].value != "" and form.has_key("delete_price")
>>> and form["delete_price"].value != "" and form.has_key("delete_comment")
>>> and form["delete_comment"].value != "":
>>>          delete_id=form['delete_id'].value
>>>          delete_date=form['delete_date'].value
>>>          delete_purchasetype=form['delete_purchasetype'].value
>>>          delete_price=form['delete_price'].value
>>>          delete_comment=form['delete_comment'].value
>>>      else:
>>>          print "ERROR: Nothing entered!"
>>>          raise Exception
>> 
> How do I make this so that it only prints 'nothing entered' when none of
> the fields are entered?

def has_data(form, fields):
    for field in fields:
        if form.has_key(field) and form[field] != "":
            return True
    return False

fields = ["delete_id", "delete_date", "delete_purchasetype", "delete_price",
"delete_comment"]

if not has_data(form, fields):
    print "nothing entered"

Just testing for

if field in form: ...

instead of 

if form.has_key(field) and form[field] != "": ...

is probably sufficient if form is a cgi.FieldStorage.

Peter




More information about the Python-list mailing list