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