On 12/06/2013 18:13, Νικόλαος Κούρας wrote:
On 12/6/2013 7:40 μμ, MRAB wrote:
On 12/06/2013 12:17, Νικόλαος Κούρας wrote:

As with most of your problems you are barking up the wrong tree.
Why not use the actual value you get from the form to check whether you
have a valid month?
Do you understand why "0" is submitted instead of "=========="?

Bye, Andreas

I have corrected the enumerate loop but it seems thet now the year works
and the selected name nad month fail:

        if '=' not in ( name and month and year ):
            cur.execute( '''SELECT * FROM works WHERE clientsID =
(SELECT id FROM
clients WHERE name = %s) and MONTH(lastvisit) = %s and YEAR(lastvisit) =
%s ORDER BY lastvisit ASC''', (name, month, year) )
        elif '=' not in ( month and year ):
            cur.execute( '''SELECT * FROM works WHERE MONTH(lastvisit)
= %s and
YEAR(lastvisit) = %s ORDER BY lastvisit ASC''', (month, year) )
        elif '=' not in year:
            cur.execute( '''SELECT * FROM works WHERE YEAR(lastvisit)
= %s ORDER
BY lastvisit ASC''', year )
        else:
            print( '<h2><font color=red>Πώς να γίνει αναζήτηση αφού
δεν επέλεξες
ούτε πελάτη ούτε μήνα ή τουλάχιστον το έτος?' )
            print( '<meta http-equiv="REFRESH"
content="5;/cgi-bin/pelatologio.py">' )
            sys.exit(0)


i tried in , not in and all possible combinations. but somehow it
confuses me.

doesn't that mean?

        if '=' not in ( name and month and year ):

if '=' does not exists as a char inside the name and month and year
variables?

i think it does, but why it fails then?

You think it does, but you're wrong.

How would you telll in english word what this is doing?

if '=' not in ( name and month and year ):

In English, the result of:

    x and y

is basically:

    if bool(x) is false then the result is x, otherwise the result is y

For example:

>>> bool("")
False
>>> "" and "world"
''
>>> bool("Hello")
True
>>> "Hello" and "world"
'world'


and then what this is doing?

if '=' not in ( name or month or year ):

In English, the result of:

    x or y

is basically:

    if bool(x) is true then the result is x, otherwise the result is y

For example:

>>> bool("")
False
>>> "" or "world"
'world'
>>> bool("Hello")
True
>>> "Hello" or "world"
'Hello'

These can be strung together, so that:

    x and y and z

is equivalent to:

    (x and y) and z

and:

    x or y or z

is equivalent to:

    (x or y) or z

and so on, however many times you wish to do it.

Never before i used not in with soe many variables in parenthesi, up
until now i was specified it as not in var 1 and not in var 2 and not in
var 2 and so on....

Keep it simple:

    if '=' not in name and '=' not in month and '=' not in year:

There may be a shorter way, but you seem confused enough as it is.

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to