Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сообщение в модальном окне (https://javascript.ru/forum/misc/22109-soobshhenie-v-modalnom-okne.html)

val 06.10.2011 17:41

Сообщение в модальном окне
 
Здравствуйте, такая проблема:
сообщения хранятся в базе, выводятся на страничку скриптом, приведённым ниже. Непрочитанные сообщения имеют флажок red=1, прочитанные red=0. Хочу сделать, чтобы после открытия в модальном (всплывающем) окне открытое сообщение помечалось прочитанным, но никак не соображу, как это сделать. По условию:
if ("document.getElementById('light_msg$msg_id').style.display='block';document.getElementById('fade').style.display='block'" == TRUE)

не только выбранное, а все сообщения помечаются прочитанными. Я уже понял, что это условие неверно, т.к. var_dump('any_string' == true); => bool(true).
Помогите, пожалуйста, решить проблему, как сделать так, чтобы помечалось то сообщение, для которого было открыто окно по ссылке.
Весь скрипт:
<?
#    Выборка сообщений для получателя    
$query = mysql_query("select a.id, a.author, a.message, a.red from messages a, users b 
where a.author = b.login and poluchatel = '$name' order by date desc;") or die(mysql_error());
if(empty($query)){
echo "Нет сообщений";
} else {
#    Список полученных сообщений в цикле
while ($row=mysql_fetch_array($query)) {
    $msg_id = $row['id'];
    $message = $row['message'];
# Печатаем на страничке сообщения в виде ссылок
    if ($row[red] == 1)
    {
    # Если Red = 1, то сообщение НЕ помечено, как ПРОЧИТАННОЕ и оно толстое
    print <<< HERE
    <a href = "javascript:void(0)" onclick = "document.getElementById('light_msg$msg_id').style.display='block';document.getElementById('fade').style.display='block';">
HERE;
    echo '<b>'.$msg_id.' '.$message.'</b>
    </a>';
        if ("document.getElementById('light_msg$msg_id').style.display='block';document.getElementById('fade').style.display='block'" == TRUE)
        {
        $mark = mysql_query("update messages set red = 0 where id = '$msg_id';") or die(mysql_error());
        }
    } else {
    # Если Red = 0, то сообщение помечено, как ПРОЧИТАННОЕ и оно тонкое
    print <<< HERE
    <a href = "javascript:void(0)" onclick = "document.getElementById('light_msg$msg_id').style.display='block';document.getElementById('fade').style.display='block'">
HERE;
    echo $message;
    echo '</a>';
    }
}
?>

systemiv 06.10.2011 18:24

Ну так при открытии, делай UPDATE флажка a.red

val 06.10.2011 20:05

Ну так я и делаю, см. строки 21-24, только вот по этому условию апдейтится не нужное сообщение, а все сразу.


Часовой пояс GMT +3, время: 03:04.