Отображение div, если условие верно - PullRequest
0 голосов
/ 05 августа 2020

Я задавал этот вопрос раньше и получил ответ, но хочу сделать по-другому. Я создаю социальный сайт, на котором люди могут писать друг другу сообщения. Я хочу показать div с синим фоном, если столбец opened равен == 0. Но то, что у меня есть сейчас, показывает только div в пустом столбце else.

Итак, цвет фона сразу же переходит прямо в цвет else, даже если условие истинно и он должен показывать синий цвет. Любая помощь?

public function getConvos () {

    $userLoggedIn = $this->user_obj->getUsername();
    $return_string = "";
    $convos = array();

    $query = $this->con->prepare('SELECT user_to, user_from, opened FROM messages WHERE
     user_to = ? OR user_from = ? ORDER BY id DESC');
    $query->bind_param("ss", $userLoggedIn, $userLoggedIn);
    $query->execute();
    $query_result = $query->get_result();

    while ($row = $query_result->fetch_assoc()) {

        $user_to_push = ($row['user_to'] != $userLoggedIn) ? $row['user_to'] : $row['user_from'];

        if(!in_array($user_to_push, $convos)) {
            array_push($convos, $user_to_push);
        }

        $color = ($row['opened'] == '0')  ? "#DDEDFF" : "";
    }


    foreach ($convos as $username) {

        $user_found_obj = new User($this->con, $username);
        $latest_message_details = $this->getLatestMessage($userLoggedIn, $username);
        
        $return_string .= "<a href='messages.php?u=$username'><div class='user_found_messages'
                        style='background-color: $color;' >
                        <img src='" . $user_found_obj->getProfilePic() . 
                        "' style='border-radius: 5px; margin-right: 5px;'> 
                        ". $username ."<br/>".
                        $latest_message_details . "</div></a>";
    }

    return $return_string;
}
.user_found_messages {

padding-left: 10px;
padding-top: 20px;
padding-bottom: 10px;
height: auto;
border-bottom: 1px solid #d9d9d9;
}

.user_found_messages:hover {

background-color: #e6ffff;
color: #669999;
}

.user_found_messages img {

height: 105px;
float: left;
margin-top: 1px; 
margin-right: 5px;
}

1 Ответ

1 голос
/ 05 августа 2020

Эта проблема возникла из-за перезаписи $ color на каждой итерации.

Попробуйте следующее:

$i = 0;
while ($row = $query_result->fetch_assoc()) {

    $user_to_push = ($row['user_to'] != $userLoggedIn) ? $row['user_to'] : $row['user_from'];

    if(!in_array($user_to_push, $convos)) {
        array_push($convos, $user_to_push);
    }

    $color[$i] = ($row['opened'] == '0')  ? "#DDEDFF" : "";
    $i++;
}

foreach ($convos as $key => $username) {

    $user_found_obj = new User($this->con, $username);
    $latest_message_details = $this->getLatestMessage($userLoggedIn, $username);
    
    $return_string .= "<a href='messages.php?u=$username'><div class='user_found_messages'
                    style='background-color: ". $color[$key]; ."' >
                    <img src='" . $user_found_obj->getProfilePic() . 
                    "' style='border-radius: 5px; margin-right: 5px;'> 
                    ". $username ."<br/>".
                    $latest_message_details . "</div></a>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...