2016-05-19 61 views
0

我正在嘗試我們爲我創建的消息傳遞系統。如果您是發送郵件的人,我試圖使用if語句來更改發送郵件的人的姓名的顏色。例如,如果我收到用戶發來的消息,他的名字就會變成黑色,如果我給他發回消息,我的名字就會變成紅色。如果聲明更改div的顏色,如果div值=會話用戶名

總之,如果$ _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';} 

我得到我的呼應「NO」,每一次,儘管很多在數據庫中的信息是由$ _SESSION用戶,以及其他用戶發送。

+0

從'var_Dump($ row [「from」],$ user)開始;'另外,你是否明白你的'while'循環結束後你會比較嗎? –

+0

..如果^顯示爲'null',那麼你的代碼失敗。 –

+0

它確實看起來*我*你的邏輯應該是__inside__ while-loop。比方說,如果你想某些方式突出某個'',最簡單的方法就是爲每一個CSS樣式創建一個CSS樣式。然後,在循環中(並在生成任何輸出之前),當您繼續生成它時,您決定在''標記中指定哪種樣式。 –

回答

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>'; 
} 

,然後只是把這個在叫頭,沒有必要將它輸出與PHP ..

<style> 
.sender{ color: red; } 
</style> 
+1

謝謝男人,簡單而輕鬆。看完了「while while循環內的事情,這正是我想要的。」 – James0413

1

這裏就是我會做...

首先,在頁面的CSS樣式表中,爲<tr>定義兩個樣式類。我們稱之爲'em good_guybad_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 

現在,你會立即注意到我怎麼也試圖擴大東西讓他們更可讀。 (我希望我沒有做任何語法錯誤或mispeluns。)

如前所述,使用雙引號就要導致PHP 插值變量$class,當它在文字文本內發生的字符串。 (凱撒)看到這個頁面時,布魯圖斯會被標記爲壞人。所有關於如何在CSS樣式表中解析good_guybad_guy外觀的視覺細節。 (在我看來,你應該始終使用表單中的命名樣式,而不是內嵌樣式標籤。)

+0

夥計顯然是一個noob,可能還需要三元解釋,同樣,你仍然創建具有相同ID的元素的多個實例,除此之外,這與我的回答基本相同,但是對於幽默+1。 –

+0

他有一個錯字,應改爲'$ class =($ row [「from」] =='Brutus'?' '('bad_guy':'good_guy');'(第一個冒號應該是一個問號 –

+0

但即使如此,'$ class'總是會評估爲'good_guy',因爲'Brutus'是硬編碼的,永遠不會評估爲false / –