Hi!

I have an enigma that I just can't seem to resolve.

==================
What is Hoped For:
I have 3 variables (called F1, F2 and F3) which will contain either an
integers (a pointer to a "feeback" item in another table, actually) and a
database of questions, each having an F1, F2 and F3, any one or more of
which can contain an integer or 0 (for null).

What I hope to do is do a comparison like this:

$myquery=MYSQL_QUERY("select count(uid) from TABLENAME where  ( (F1='$F1')
|| (F2='$F1') || (F3='$F1') || (F1='$F2') || (F2='$F2') || (F3='$F2') ||
(F1='$F3') || (F2='$F3') || (F3='$F3')      )        ");

In other words I wish to find out if one or more of three variables that may
contain an integer, matches any questions with feedback items F1, F2 and F3
(integers all).  The variable F1 can match F1, F2 or F3 in the database, so
all comparisons must be tried.
==================

The Problem:

Again, there are three fields in a table, F1, F2, and F3.  They are numeric.
There are three variables passed by a php program, and I want to know if any
one of F1, F2 or F3 matches any one of F1, F2 or F3 in the table.  Again,
since the variable F1 can match F1, F2 or F3 in the database, I want to do
all comparisons.

So using PHP I do this:

//set one variable to an integer (in the program being written, this may
occur naturally)
$F1='' $F2=2; $F3='';

//test to see if any of F1, F2 or F3 are set to some integer (otherwise it
is set to nothing at all)
$F1index=is_numeric($F1); //if F1 is numeric set F1index to "1"
$F2index=is_numeric($F2); //if F2 is numeric set F2index to "1"
$F3index=is_numeric($F3); //if F3 is numeric set F2index to "1"

//Set any null values to some specific value (part of my efforts to resolve
the problem below)
if ($F1index <1){$F1='WWW';}
if ($F2index <1){$F2='WWW';}
if ($F3index <1){$F3='WWW';}

//The situation here is that the variable F1 is WWW and F2=2 and F3 is WWW.
In the database table there are 2 rows in which F1 is 0, F2=3 and F3=0.

$data=MYSQL_QUERY("select count(F1) from TABLENAME where  (F1='$F1') ||
(F1='$F2') || (F1='$F3') ");
//In the database, F1=0, F2=3 and F3=0.  therefore, the above query results
in NO match, which is the case.  Perfect.

BUT (and here is the rub) if I do this:

$data=MYSQL_QUERY("select count(uid) from TABLENAME where  ( (F1='$F1') ||
(F2='$F1') || (F3='$F1') || (F1='$F2') || (F2='$F2') || (F3='$F2') ||
(F1='$F3') || (F2='$F3') || (F3='$F3')      )        ");
//BOTH records in the table match successfully.  I thought that none ought
to match as variable F1, F2 and F3 are all NOT 3.

//wondering what is going on I tried a scaled-down, simpler query
$data=MYSQL_QUERY("select count(F1) from QQwowen where  (F1='$F1') ||
(F1='$F2') || (F1='$F3') || (F2='GOOOBAAA') ");
//I put something ridiculous ('Gooobaaa') to compare to F2 (F1=0, F2=3 and
F3=0 in the table) and
this query matches ALL records in the table.

I'm certain that I'm missing something fundamental here.  Can anyone explain
to me why this is happening?

Thanks very much!

Cheers!

-warren


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to