dimanche 10 février 2019

Understanding why a false boolean condition was accepted

I have read through a number of the posts regarding if & elseif statements. In my testing I have used var_dump to validate my testing and I am baffled as to why a false condition is being accepted.

I have tried several examples from other posts. I have tried Switch statements, if statements and elseif statements in different forms. I have echoed and var_dumped all of the conditions and still I get a false condition being accepted.

// Code Validation
echo "Current User is " . $user_sex . "<br>";
echo "Region is: " . $Region_name . "<br>"; 
echo "Region ID: " . $Region_ID . "<br>";
echo "League Type is : " . $LeagueType_name . "<br>";
echo "League Type ID: " . $LeagueType_ID . "<br>";  
echo "League Level is: " . $LeagueLvl_name . "<br>";    
echo "League level ID: " . $LeagueLvl_ID . "<br>";      
echo "LeagueSgls ID: "  . $LeagueSgls . "<br>";
echo "LeagueDbls ID: "  . $LeagueDbls . "<br>";
var_dump($user_sex == "Male");
echo "<br>";
var_dump((($user_sex == "Male") && (($LeagueType_ID = 1 ) && ($LeagueLvl_ID <= $LeagueSgls))));
echo "<br>";
var_dump((($user_sex == "Male") && (($LeagueType_ID = 3 || $LeagueType_ID = 5 ) && ($LeagueLvl_ID >= $LeagueDbls))));
echo "<br>";
var_dump((($user_sex == "Female") && (($LeagueType_ID = 2 ) && ($LeagueLvl_ID <= $LeagueSgls))));
echo "<br>";
var_dump((($user_sex == "Female") && (($LeagueType_ID = 4 || $LeagueType_ID = 5 ) && ($LeagueLvl_ID >= $LeagueDbls))));
echo "<br>";
var_dump($user_sex == "Female");

//if-elseif statements with conditions

if (($user_sex == "Male") && (($LeagueType_ID = 1 ) && ($LeagueLvl_ID <= $LeagueSgls))) {
$LeaguePlay = "{$row['league_desc']}<br>";
} elseif (($user_sex == "Male") && (($LeagueType_ID = 3 || $LeagueType_ID = 5 ) && ($LeagueLvl_ID >= $LeagueDbls))) {
$LeaguePlay = "{$row['league_desc']}<br>";
} elseif (($user_sex == "Female") && (($LeagueType_ID = 2 ) && ($LeagueLvl_ID <= $LeagueSgls))){
$LeaguePlay = "{$row['league_desc']}<br>";
} elseif (($user_sex == "Female") && (($LeagueType_ID = 4 || $LeagueType_ID = 5 ) && ($LeagueLvl_ID >= $LeagueDbls))) {
$LeaguePlay = "{$row['league_desc']}<br>";
} else {
$LeaguePlay = "You have incorrect selections";
} 

The output from the verification:
Current User is Male
Region is: Charlotte, NC
Region ID: 4
League Type is : Women's Singles
League Type ID: 2
League Level is: 4.0 High Singles
League level ID: 8
LeagueSgls ID: 12
LeagueDbls ID: 13
bool(true) 
bool(true) 
bool(false) 
bool(false) 
bool(false) 
bool(false)

I was expecting to get "You have incorrect selections" It actually gave me the mysql query: Charlotte Women's Singles - 2019 - 4.0 High - 18 & Over

The condition: "(($user_sex == "Female") && (($LeagueType_ID = 2 ) && ($LeagueLvl_ID <= $LeagueSgls)))" is false according to var_dump for this condition.

Aucun commentaire:

Enregistrer un commentaire