For Programmers: Free Programming Magazines  


Home > Archive > PHP DB > April 2004 > Re: [PHP] What's wrong with this IF statement?









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Re: [PHP] What's wrong with this IF statement?
Daniel Clark

2004-04-22, 4:33 pm

What about removing the quotes around the numbers.

if ($cat_id != 53 || $cat_id != 54 || $cat_id != 55 etc...


> My IF statement should be picking up on the numbers, and if the number
> matches not be displaying out the information, however I look at the
> outputted page and the information is still there, what have I got wrong
> on the code?
>
> <CODE SNIPPET>
> //Show categories first
> $get_cats = "select id_num, id_name, description, cat_code from
> categories order by id_name";
> $get_cats_res = mysql_query($get_cats) or die(mysql_error());
>
> if (mysql_num_rows($get_cats_res) < 1)
> {
> $display_block = "<P><em>Sorry, no categories to browse.</em></P>";
> }
> else
> {
> while ($cats = mysql_fetch_array($get_cats_res))
> {
> $cat_id = $cats[id_num];
> if ($cat_id != "53" || $cat_id != "54" || $cat_id != "55" || $cat_id
> != "117" || $cat_id != "118" || $cat_id != "74")
> {
> $cat_title = strtoupper(stripslashes($cats[id_name]));
> $cat_desc = stripslashes($cats[description]);
> $display_block .= "<strong><a
> href=$_SERVER[PHP_SELF]?cat_id=$cat_id>$cat_title
> $cat_desc</a></strong><br>\n";
> while ($items = mysql_fetch_array($get_items_res))
> {
> $item_id = $items[id];
> $item_num = $items[item_num];
> $item_desc = stripslashes($items[description]);
> if ($item_num != "ABC-R37" || $item_num != "ABC-R42" || $item_num
> != "HB-99100" || $item_num != "RO-PUMPS" || $item_num != "ML-HDGALJUG"
> || $item_num != "PFS-CAC21" || $item_num != "PFS-CO2")
> {
> $item_num = ltrim($item_num);
> $item_num = rtrim($item_num);
> $display_block .= "____<em><strong><a
> href=\"catalog/$item_id.html\">$item_num</a></strong> -
> $item_desc</em><br>\n";
> }
> }
> <END SNIPPETS>
>
> My assumption is that BOTH IF statements are not working correctly since
> the logic is that if they are built the same they would react the same.
> HELP!
>
> TIA!
> Robert
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

John W. Holmes

2004-04-22, 4:33 pm

From: "Robert Sossomon" <robert@gcnorris.com>

> if ($cat_id != "53" || $cat_id != "54" || $cat_id != "55" || $cat_id
> != "117" || $cat_id != "118" || $cat_id != "74")


Okay, if $cat_id is 53, this will work out to:

if(FALSE || TRUE || TRUE || TRUE || TRUE || TRUE)

which results in TRUE overall.

You want && instead of ||

if ($cat_id != "53" && $cat_id != "54" && $cat_id != "55" && $cat_id
!= "117" && $cat_id != "118" && $cat_id != "74")

which results in

if(FALSE && TRUE && TRUE && TRUE && TRUE && TRUE)

which results in FALSE overall.

---John Holmes...
Chris Shiflett

2004-04-22, 6:33 pm

--- Robert Sossomon <robert@gcnorris.com> wrote:
> if ($cat_id != "53" || $cat_id != "54" || $cat_id != "55" || $cat_id
> != "117" || $cat_id != "118" || $cat_id != "74")


That looks like a pretty big logical flaw to me. Just read that out loud
to yourself. It should be clear that this statement is equivalent to:

if (true)

Hope that helps.

Chris

=====
Chris Shiflett - http://shiflett.org/

PHP Security - O'Reilly
Coming Fall 2004
HTTP Developer's Handbook - Sams
http://httphandbook.org/
PHP Community Site
http://phpcommunity.org/
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com