-1

I am working on a social network project.

I have a table named member including information about each user: name, age, gender, and so on.

I am trying to display a default profile picture according to the user's gender.

<?php
$sql = "SELECT gender FROM member WHERE member_id = '$user_id'";
$result = $link->query($sql);

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "gender is" . $row['gender'];
        if($row['gender'] ='female'){
?>

            <img src="..\img\female.png"  />

 <?php 
            break;
        }
        else if ($row['gender'] = 'male') {
 ?>
            <img src="..\img\male.png"  />

 <?php 
            break;
        }
    }
} 
?>

Now, the gender is being echoed out correctly, but it will always display a female's picture. What is it exactly that I am doing wrong?

Елин Й.
  • 953
  • 10
  • 25

3 Answers3

2

Just make change in if statement, equal sign is two times to equate

           <? php
            if($row['gender'] =='female'){
            ?>

               <img src="..\img\female.png"  />

          <?php break;}
Shahzad Barkati
  • 2,532
  • 6
  • 25
  • 33
1

The error is in your if statements. = is to assign and == is to compare. Try the following code:

<?php
$sql = "SELECT gender FROM member WHERE member_id = '$user_id'";
$result = $link->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "gender is".$row['gender'];
        if($row['gender'] =='female'){
            echo '<img src="..\img\female.png"  />';
            break;
        }
        else if($row['gender'] == 'male'){
            echo '<img src="..\img\male.png"  />';
            break;
        }
    }
}
?>
Manikiran
  • 2,618
  • 1
  • 23
  • 39
1

= assigns right value to left variable. You're assigning value in if statement instead of comparing them. Your if statement should be

If($row["gender"]=="male"){
   // code
}
Naveed Khan
  • 73
  • 2
  • 15