Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Сообщение в модальном окне
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2011
Помог: 0 раз(а)
Здравствуйте, такая проблема:
сообщения хранятся в базе, выводятся на страничку скриптом, приведённым ниже. Непрочитанные сообщения имеют флажок red=1, прочитанные red=0. Хочу сделать, чтобы после открытия в модальном (всплывающем) окне открытое сообщение помечалось прочитанным, но никак не соображу, как это сделать. По условию:
не только выбранное, а все сообщения помечаются прочитанными. Я уже понял, что это условие неверно, т.к. var_dump('any_string' == true); => bool(true).
Помогите, пожалуйста, решить проблему, как сделать так, чтобы помечалось то сообщение, для которого было открыто окно по ссылке.
Весь скрипт:
Покинул форум
Сообщений всего: 49
Дата рег-ции: Сент. 2011
Помог: 2 раз(а)
val пишет:
document.getElementById('light_msg$msg_id')
а где этот элемент в html?
val
Отправлено: 07 Октября, 2011 - 08:23:55
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2011
Помог: 0 раз(а)
JohnnyB пишет:
а где этот элемент в html?
Так вот же, строки 17-20. И ниже они подвергаются логической обработке - если модальное окно открывалось, то апдейтим поле red, иначе оставляем как есть.
Тут надо разницу видеть между php и javascript, php исполняется на стороне сервера, а js на стороне браузера, и эта строка js в вашем php рассматривается не как js а просто как набор букв, и если хотите использовать js для изменения в базе используйте ajax.
php будет видеть эту строку всегда TRUE, поэтому вы просто по циклу перебираете все id у которых значения $red=1 и меняете на 0.
это условие на JS по вашему должен обработать php интерпритатор? тоесть клиентский скрипт выполнить на сервере?
Ну, как бы, по моему разумению, на сервере php должен вставить в это JS условие значение переменной $msg_id и сравнить получившуюся ссылку с той, которую нажали. Где-то я неправ, но не понимаю где... (Добавление)
JohnnyB пишет:
Тут надо разницу видеть между php и javascript, php исполняется на стороне сервера, а js на стороне браузера, и эта строка js в вашем php рассматривается не как js а просто как набор букв, и если хотите использовать js для изменения в базе используйте ajax.
Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011 Откуда: Крым
Помог: 25 раз(а)
ну подставит php значение переменной в строку , а что с чем Php должен сравнивать? как он должен сравнивать, в момент когда браузер получает страницу PHP уже ЗАВЕРШИЛ работу, тебе нужно из клиентской программы (js) отправить запрос на сервер, на внесение изменений в базу, клиентские приложения НЕ работают с базой из соображений безопасности.
----- Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
JohnnyB
Отправлено: 07 Октября, 2011 - 10:33:58
Новичок
Покинул форум
Сообщений всего: 49
Дата рег-ции: Сент. 2011
url :'update.php',//Файл в который отсылаем данные
dataType :'text',// Тип данных
data :{id :<?php echo $msg_id;?>},// Переменная
type: POST,// Как передаем POST or GET
success :function(){// Функция при успешном выполнении
$(this).remove();//Удаляем DOM элемент
}
});
});
});
});
Чтобы элемент удалить из DOM по окончанию.
Viper
Отправлено: 07 Октября, 2011 - 11:28:57
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
JohnnyB а each зачем вы можете объяснить? Не быстрее ли после показа модального окна, обратиться к элементу по которому кликнули для показа и отослать его параметры серверу, а при success удалить модальное окно!?
Покинул форум
Сообщений всего: 49
Дата рег-ции: Сент. 2011
Помог: 2 раз(а)
Viper пишет:
JohnnyB а each зачем вы можете объяснить? PS! Вместо $.ajax не проще $.post ?
Я написал имея ввиду уже существующий макет, так то конечно лучше сделать одно окно и для него подставлять инфу при клике. А какая разница в $.post и $.ajax ?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.