The problem is in your SQL query.

Try it as:

$sql = "SELECT * FROM links WHERE (SUBJECT1='$subject' OR SUBJECT2='$subject') AND 
GEOGRAPHIC='$geographic' ORDER BY ORGANIZATION ASC";

The AND operator has higher precendence than the OR, so given that you didn't have 
parenthesis, it was interpreted as SUBEJCT1='$subejct' OR (SUBEJCT2='$subject' AND 
GEOGRAPHIC='$geographic')
and I'd bet that in the example you ran $geographic was not equal to 'Brazil' 
otherwise you'd have gotten a hit on the second row as well.

cheers,
thalis


On Thu, 14 Mar 2002, Laurie Landry wrote:

> I'm working on a query by selection type of form, where if a user
> selects a subject to get information. Each database entry will have 2
> subject fields, Subject 1 being the main subject and Subject 2 being the
> cross-subject. A table is set up like this:
> 
> +------+--------------+------+----------+----------+-------------+
> | ID   | Organization | URL  | SUBJECT1 | SUBJECT2 | Geographic  |
> +------+--------------+------+----------+----------+-------------+
> |  1   | Acme         | www  |  Math    |  English | Canada      |
> |  2   | Loony Toons  | www  |  Comedy  |  Math    | Brazil      |
> 
> ...
> 
> 
> The idea is that the query will check the database to see if $Subject
> has a match in either Subject1 or Subject2. the geographic is an
> optional selection. If I select Math as a subject, and left the
> Geographic option unselected, I want it to go into either Subject1 and
> Subject2 to find Math. In this case both records would be a hit.
> 
> Below is my query setup and formatting:
> *******
> $sql = "SELECT * FROM links WHERE SUBJECT1='$subject' OR
> SUBJECT2='$subject' AND GEOGRAPHIC='$geographic'
>        ORDER BY ORGANIZATION ASC";
> 
> $sql_result = mysql_query($sql);
> if (!$sql_result) {
>    echo "Can't execute $sql " . mysql_error();
>    exit;
>       }
> 
> // organizes data in an orderly manner (ie bulleted area)
> while ($row = mysql_fetch_array($sql_result)) {
> 
>       $esc_organization = $row["ORGANIZATION"];
>       $esc_desc = $row["DESCRIPTION"];
>       $esc_url = $row["URL"];
>       $esc_subject = $row["SUBJECT1"];
>       $esc_geographic = $row["GEOGRAPHIC"];
>       
>       $organization = stripslashes($esc_organization);
>       $description = stripslashes($esc_desc);
>       $url = stripslashes($esc_url);
>       $subject = stripslashes($esc_subject);
>       $geographic = stripslashes($esc_geographic);
> 
>       $option_block .= "
>       <li>
>       <a href=\"http://$url\";>$organization</a></li><br>
>       $description<br>
>       URL: <a href=\"http://$url\";>$url</a></li>\n";
> }
> ********
> Now, of course, if I were to use this, it will only use the Subject1
> data. How do I tell it to use the results from either Subject 1 or
> Subject 2?
> 
> Thanks in advance,
> 
> Laurie M. Landry
> 
> 
> 
> -- 
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to