Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> php + MySQL - запаздывание, insert и последующий select 
:(
    Опции темы
iamnull
Дата 24.6.2005, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.6.2005

Репутация: нет
Всего: нет



Имеется собственноручно написаный чат
Есть грубо говоря 3 фрейма - пустой html - сам чат, невидимый юзеру скрипт chat.php и строка ввода чата.
В таблице MySQL каждое новое сообщение получает уникальный id. Скрипт chat.php регистрирует переменую сессии $last_id, в которой хранится id последнего выведенного сообщения. Соответственно, при обновлении из базы выбираются только сообщения с id>чем $last_id
После выборки chat.php выводит что-то типа <script>write_chat('time','msg','...');</script> и этой ф-цией строка добавляется в основное окно chat.html

Проблема в том, что после написания сообщения, пользователи иногда не видят только что написанного ими сообщения, либо видят его 2 раза.
Иногда сообщения других пользователей выводятся 2 раза
Никак не могу понять в чем дело

Если я делаю insert в базу, а потом делаю select из неё, может ли быть так, что новая строка еще не появилась в базе и следовательно не была выбрана запросом select... возможно ли такое?

smile
PM MAIL   Вверх
PARROT
Дата 24.6.2005, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Я думаю возможно. Сначала нужен селект, а ниже инсерт.
В редактировании и удалении, в моей админке было именно так.
Если сделать наоборот, то чтобы увидеть новое или измененное сообщение, приходилось обновлять страницу.

Это сообщение отредактировал(а) PARROT - 24.6.2005, 23:35


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Mal Hack
Дата 25.6.2005, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(PARROT @ 25.6.2005, 00:33)
Я думаю возможно. Сначала нужен селект, а ниже инсерт.

Нет.

iamnull покажи SELECT запрос и вывод.
PM ICQ   Вверх
IZ@TOP
Дата 25.6.2005, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



PARROT, по моему ты немного перепутала, сначало должна идти вставка, а потом уже селект.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
iamnull
Дата 25.6.2005, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.6.2005

Репутация: нет
Всего: нет



Код

if (($new_msg) && ($new_msg != '') && (strlen($new_msg) < 255)) {
   mysql_query("insert into chat (msgid,fromuser,time,toroomid,msg) values ('','$inf[PersName]','$timenow','$inf[Room]','$new_msg')")  or die(mysql_error());
}

$cmsgs = mysql_query("SELECT * FROM `chat` where (msgid>'$last_update') AND (toroomid='$inf[Room]') order by msgid",$db);
print("<script>\n");
while ($cmsg=mysql_fetch_array($cmsgs)) {
   ## убрано лишнее
   print "dmessage('1','$nmsg');\n";
   $last_update = $cmsg[msgid];
   ## убрано лишнее
}
print("</SCRIPT>\n");


Это сообщение отредактировал(а) iamnull - 25.6.2005, 14:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0616 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.