151

Re: php + sql чат

Hanut сказал:

Но будет лучше, если вы начнете делать все по своему, без подсказок.

надоел вопросами?

а как думаете, хорошо будет использовать cron, чтобы он сам через каждые 5 минут проверял время в таблице "online" для всех клиентов?
а клиенты просто загружали бы эту таблицу в div без проверок..

152

Re: php + sql чат

DimkaDimka сказал:

а как думаете, хорошо будет использовать cron, чтобы он сам через каждые 5 минут проверял время в таблице "online" для всех клиентов?

Думаю это лишнее. У чата есть особенность - он работает, когда в нем кто-то есть, значит можно сделать проверку пользователей при отправке или получении нового сообщения; думаю этого будет достаточно и не принесет ненужной избыточности, которую дает вечно крутящийся на Cron скрипт.

153

Re: php + sql чат

здравствуйте
начал пропускать свой чат через html validator и firebug. firebug молчит (видимо ошибок нет), а вот validator выдает 70-80 ошибок. первая гласит, что не указан doctype. вычитал возможные варианты, приписал <!DOCTYPE html> на login.php и index.php . ошибки пропали, однако теперь отображение не совсем корректное.
не объясните, какой doctype нужно выбрать мне?

154

Re: php + sql чат

DimkaDimka сказал:

какой doctype нужно выбрать мне?

Все верно, <!DOCTYPE html>.

155

Re: php + sql чат

начитался про доктайпы
выбрал сначала Переходный синтаксис HTML, исправил все ошибки. далее выбрал Строгий синтаксис HTML. исправляю ошибки тут.
как я понял, выбрав строгий и исправив все ошибки, я смогу быть уверен, что проект будет отображаться одинаково во всех браузерах, т.к будет соответствовать всем стандартам?

156

Re: php + sql чат

DimkaDimka сказал:

что проект будет отображаться одинаково во всех браузерах, т.к будет соответствовать всем стандартам?

<!DOCTYPE html> - Это решит все проблемы с отображением. Не надо никакие другие типы документа выбирать, строгие или нет.

157

Re: php + sql чат

а не подскажите ли, как сделать такую проверку:
человек был в чате, далее закрыл его, далее его удалили из таблицы "online", далее он опять заходит в чат.
т.к. сессия есть - он и дальше сможет писать в чате, однако для всех он будет в оффлайне
как поступить?

158

Re: php + sql чат

решил сделать так:
сразу после входа в чат отправляется запись в таблицу "онлайн". строке в таблице присваивается id.
значит, если человека из таблицы удалили, нужно этому человеку делать в таблицу запрос на этот id. если такого id нет, значит его действительно выкинули, и перекидывать на страницу авторизации.
так пойдет?

159

Re: php + sql чат

DimkaDimka сказал:

как поступить?

При загрузке index.php проверять не только сессию, но и наличие пользователя в БД.

160

Re: php + sql чат

так на наличие итак проверяется, чтобы схожих имен не было.
проверка на наличие такого ника в бд - это одно, а проверка, что тебя выгнали - это другое.. ведь пока пользователь отсутствовал - его ник могли занять. значит нужна проверка по id

161

Re: php + sql чат

DimkaDimka сказал:

пока пользователь отсутствовал - его ник могли занять. значит нужна проверка по id

Это верно, тогда всю проверку лучше сделать на id и в сессию писать именно id.

162

Re: php + sql чат

спасибо, вечером займусь
видимо после

$sql = "INSERT INTO `online` (`user`) VALUES ('" . addslashes($_SESSION['name']) . "')";

нужно сохранить id этой строки в $_SESSION['id'] (не подскажите, как? через SELECT?)
и далее делать проверку такого плана:

if (isset($_SESSION['name'])) {
"запрашиваем количество $_SESSION['id'] в таблице"
    if ($count = 0) { 
хедер, мол вас выгнали
    }

и exit.php придется менять, чтоб удалял не строку, содержащую никнейм, а строку с определенным id

163

Re: php + sql чат

$sql = "INSERT INTO `online` (`user`) VALUES ('" . addslashes($_SESSION['name']) . "')";
if (mysql_query($sql)) {
  $insert_id = mysql_insert_id(); // Данная функция вернет идентификатор только что вставленной строки.
}

Остальное все верно.

164

Re: php + sql чат

не подскажите, как вызвать функцию обновления списка "кто онлайн" при нажатии на картинку <img>?

165

Re: php + sql чат

DimkaDimka сказал:

как вызвать функцию обновления списка "кто онлайн" при нажатии на картинку

<script>
$('#img_online').click(function() {
  // Здесь обработка события.
}
</script>
<img id="img_online" src="" alt="" />

166

Re: php + sql чат

DimkaDimka, выложи пожалуйста исходники последней версии чата, для скачивания.

167

Re: php + sql чат

DimkaDimka - не помешало бы оптимизировать этот запрос! При этом запросе происходит файловая сортировка таблицы. Для большого кол-ва пользователей - это будет вызывать тормоза чата.

SELECT *, DATE_FORMAT(`time`, "%H") AS `hour`, DATE_FORMAT(`time`, "%i") AS `minute` FROM
            (SELECT * FROM `chat` ORDER BY `id` DESC LIMIT 20) AS `sub`
        ORDER BY `id` ASC;

168

Re: php + sql чат

Используй в Mysql EXPLAIN.

169

Re: php + sql чат

pnn80 сказал:

не помешало бы оптимизировать этот запрос

Не помешало бы. Может покажете ваш вариант оптимизации?

А за исходниками попробуйте в личку написать. Последний раз DimkaDimka был около двух месяцев назад.

170

Re: php + sql чат

Hanut сказал:

Не помешало бы. Может покажете ваш вариант оптимизации?

А за исходниками попробуйте в личку написать. Последний раз DimkaDimka был около двух месяцев назад.

Я ему писал, но что-то в ответ тишина.

Оптимизацию запросов еще не делал. пока все оставил как есть.

Hanut подскажи пожалуйста как сделать перехват кнопки SEND в IE ? Форма не хочет сабмититься по нажатию ENTER sad

171

Re: php + sql чат

pnn80 сказал:

как сделать перехват кнопки SEND

В тег <form> добавьте идентификатор и по нему уже отлавливайте событие.
<form  method="post" name="form" action="" id="form_submit">
В блоке script поменяйте строку.
$('.post').click(function(){
На:
$('#form_submit').submit(function(){

172 (изменено: pnn80, 2011-05-04 23:15:52)

Re: php + sql чат

Решил выложить краткий обзор работы проведенной над данным движком чата от версии, которую мне выложил Hanut, по ссылке: http://forum.php-myadmin.ru/viewtopic.p … 628#p15628.
Отчеты я не люблю писать, даже по собственной инициативе, но все-таки напишу.

JQUERY
- для пользователей/посетителей чата сделана кнопка, очистки окна сообщений. (чисто для удобства)
- разработана отправка сообщения определенному пользователю. Организованна по клику на ник собеседника.
- организованна передача стилей CSS в поле input (не путать с textarea) при отправке сообщения собеседнику.
- сохранение стилей CSS окна чата для пользователя. Вывод стилей в чат.

MYSQL + PHP + APACHE (mod rewrite) для ЧПУ
Регистрация пользователей/посетителей (подтверждение на почту)
Восстановление паролей (ссылка для восстановления на почту)
Рассылка сообщений администратором из админ панели.

Чисто MYSQL
- Проанализированы запросы, которые были уже в движке, кое-что оптимизировано, добавлены индексы, но пока многие запросы оставил как есть, я ими не занимался.

Отдельное Спасибо, Hanut - за подсказку по jquery как перехватить submit в ie!!

З.Ы. Уже начал настраивать SVN для разработки данного движка чата.