我正在为我正在创建的消息系统尝试我们的事情。我正在尝试使用if语句来更改发送邮件的人的姓名颜色(如果您是发送邮件的人)。因此,例如,如果我收到来自用户的消息,他的名字将显示为黑色,如果我向他发送消息,我的名字将以红色显示。
简而言之,如果$ _SESSION ['userName']是发送邮件的人,则将div#sender的颜色更改为红色。
$user = $_SESSION['userName'];
$qu = mysqli_query($con, "SELECT * FROM `messages` WHERE `to`='$user' OR `from`='$user'");
if (mysqli_num_rows($qu) > 0) {
while ($row = mysqli_fetch_array($qu)) {
echo '<tr><td><div id="sender">'.$row["from"].'</div></td><td><div id="r_message">'.$row["message"].'</div></td></tr>';
}
}
if(''.$row["from"].'' == $user){
echo'
<style>
#sender{
color:red;
}
</style>
';
}
else{echo'NO';}
每次,即使数据库中的大量消息都是由$ _SESSION用户以及其他用户发送的,我也会回复“否”。
答案 0 :(得分:1)
这就是我要做的......
首先,在页面的CSS样式表中,为<tr>
定义两个样式类。我们打电话给'em good_guy
和bad_guy
。 (为什么不呢?)
现在,在该循环中,您只需确定要使用的样式:
$qu = mysqli_query($con,
"SELECT * FROM `messages` "
. "WHERE `to`='$user' OR `from`='$user'"
);
if (mysqli_num_rows($qu) > 0) {
while ($row = mysqli_fetch_array($qu)) {
$class = ( $row["from"] == 'Brutus' : 'bad_guy' : 'good_guy' );
echo "<tr class='$class'>" // note use of double-quotes here!
. "<td>"
. "<div id='sender'>".$row["from"]."</div>";
. "</td>"
... blah blah blah blah blah ...
. "</tr>";
} // end while
} // end if
现在,您会立即注意到我还试图扩展内容以使其更具可读性。 (我希望我没有出现任何语法错误或误导。)
如上所述,使用 double 引号是必要的,以使PHP在字符串的文字文本中出现时,插入变量$class
。
good_guy
或bad_guy
外观的所有视觉细节。 (在我看来,你应该总是使用工作表中的命名样式,而不是内联样式标记。)
答案 1 :(得分:0)
$row
数组在循环中创建,您将在循环外部使用。此外,您还可以通过这种方式创建多个重复的ID。你应该使用类。
尝试这样的事情:
while ($row = mysqli_fetch_array($qu)) {
if($row['from']==$user) $class='sender';
else $class = 'reciever';
echo '<tr><td><div class="'.$class.'">'.$row["from"].'</div></td><td><div id="r_message">'.$row["message"].'</div></td></tr>';
}
然后把它放在headder中,不需要用PHP输出..
<style>
.sender{ color: red; }
</style>