jeudi 1 août 2019

PHP select user message IF INSIDE WHILE only select user1 of db not selecting user2

I am trying to echo the users messages from db and format the html based on $user_logged or $db_user variable here is my code:

<?php
     //$sql = "SELECT * FROM messages WHERE from_user = :from_user AND to_user = :to_user ORDER BY time ASC";
     $sql = "SELECT * FROM messages WHERE (from_user = :from_user AND to_user = :to_user) OR 
      (from_user = :touser   AND to_user = :fromuser) ORDER BY time ASC";
        $stm = $conexao_pdo->prepare($sql);
        $stm->bindParam(':to_user', $user_logged);
        $stm->bindParam(':from_user', $db_user);
        $stm->bindParam(':touser', $db_user);
        $stm->bindParam(':fromuser', $user_logged);
        $stm->execute();
        $messages_count = $stm->rowCount();
        if ($messages_count <= 0 ){
            $message_from_user = "";
            $message_to_user =  "";
            $message_content =   "";
            $message_time =  "";
            $message_read =  "";
            echo "you don't have messages";
        } else {
        }
        while($values = $stm->fetch(PDO::FETCH_ASSOC)){
            //echo $values['db_column'];
            $message_from_user = $values['from_user'];
            $message_to_user = $values['to_user'];
            $message_content =  $values['content'];
            $message_time = $values['time'];    
            $message_read = $values['message_read'];
            //echo while
            if($message_from_user == $db_user){
            echo ' <div class="container-fluid text-left" style="padding-left: 18px;">
  <div class="row">
    <div class="col-sm">
      <a href="user.php?user='.$message_from_user.'"><img class="rounded-circle" width="45" src="'.get_user_picture($message_from_user).'">&nbsp; @'.$message_from_user.'</a>

    </div>
    <div class="col-sm">
     '.$message_content.'
    </div>

    <div class="col-sm text-muted text-right">
      '.relativeTime( $message_time).'
    </div>
  </div>
</div>
<hr>';
            } else if($message_from_user == $user_logged){
                echo '<div class="container-fluid text-right" style="padding-right: 18px;">
 </br>
  <div class="row">

    <div class="col-sm text-muted text-left">
      '.relativeTime( $message_time).'
    </div>
    <div class="col-sm">
     '.$message_content.'
    </div>

    <div class="col-sm">
   <a href="#">@'.$message_from_user.'&nbsp;<img class="rounded-circle" width="45" src="'.$message_from_user.'"></a>
    </div>

  </div>
</div>

    </div>
    <hr>';

            }
        } 
        ?>

The sql is right and selecting all when I run in database but when I run with this php code it just echo messages where column from_user = $db_user I think there is a problem in my if and else if inside while it's not showing messages from_user = $user_logged but when I run the same query on phpmyadmin it shows just fine, my variables are set and also valid I think there is a problem with the if inside the while loop, someone can help?

if ($message_from_user == $db_user){/*echo the user message with image in the left side of the page*/}

else if($message_from_user == $user_logged){/*echo user message with image in the right side of the page*/}

Aucun commentaire:

Enregistrer un commentaire