-2

I don't really know what's going on here.

If I have this as my code:

if($_POST['expOncology'] !="") {
    $varOnc = $_POST['expOncology'];

    if ($varOnc="min") {
        $sql_extra[] = "(exp_onc='minimal expertise' OR exp_onc='some expertise' OR exp_onc='high level of expertise' OR exp_onc='expert')";
    }

    if ($varOnc="some") {
        $sql_extra[] = "(exp_onc='some expertise' OR exp_onc='high level of expertise' OR exp_onc='expert')";
    }

    if ($varOnc="high") {
        $sql_extra[] = "(exp_onc='high level of expertise' OR exp_onc='expert')";
    }
}

It works fine and the proper results are shown.

However, if I add one more if block, to make it this:

if($_POST['expOncology'] !="") {
    $varOnc = $_POST['expOncology'];

    if ($varOnc="min") {
        $sql_extra[] = "(exp_onc='minimal expertise' OR exp_onc='some expertise' OR exp_onc='high level of expertise' OR exp_onc='expert')";
    }

    if ($varOnc="some") {
        $sql_extra[] = "(exp_onc='some expertise' OR exp_onc='high level of expertise' OR exp_onc='expert')";
    }

    if ($varOnc="high") {
        $sql_extra[] = "(exp_onc='high level of expertise' OR exp_onc='expert')";
    }

    if ($varOnc="expert") {
        $sql_extra[] = "(exp_onc='expert')";
    }
}

It does not work as intended at all, even if I'm not even selecting "expert" from the drop down list. Shouldn't that code not even run if expOncology isn't set to expert? Why is even affecting the code if I'm not satisfying its conditions to run?

zajonc
  • 1,935
  • 5
  • 20
  • 25
Luke
  • 463
  • 3
  • 9

2 Answers2

0

Condition like $varOnc="something" will always return true.

You should use a == or === (if you want check the data types). Your code should look like this

if($_POST['expOncology'] != "") {
    $varOnc = $_POST['expOncology'];

    if ($varOnc == "min") {
        $sql_extra[] = "(exp_onc='minimal expertise' OR exp_onc='some expertise' OR exp_onc='high level of expertise' OR exp_onc='expert')";
    }

    if ($varOnc == "some") {
        $sql_extra[] = "(exp_onc='some expertise' OR exp_onc='high level of expertise' OR exp_onc='expert')";
    }

    if ($varOnc == "high") {
        $sql_extra[] = "(exp_onc='high level of expertise' OR exp_onc='expert')";
    }

    if ($varOnc == "expert") {
        $sql_extra[] = "(exp_onc='expert')";
    }
}
zajonc
  • 1,935
  • 5
  • 20
  • 25
0

Try

if($_POST['expOncology'] !="") {
  $varOnc = $_POST['expOncology'];
  if ($varOnc=="min"){
    $sql_extra[] = "(exp_onc='minimal expertise' OR exp_onc='some     expertise' OR exp_onc='high level of expertise' OR exp_onc='expert')";
   }
  if ($varOnc=="some"){
    $sql_extra[] = "(exp_onc='some expertise' OR exp_onc='high level of expertise' OR exp_onc='expert')";
  }
 if ($varOnc=="high"){
    $sql_extra[] = "(exp_onc='high level of expertise' OR exp_onc='expert')";
 }
}

with == it's better to compare ;)

Amazone
  • 426
  • 4
  • 14