Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ограничения в базе...
 
 автор: nikolayers   (21.03.2010 в 19:34)   письмо автору
 
 

Делаем чат через базу...Как сделать чтоб в базу помещалось не более 20 сообщений???То-есть, если пользователи писали-писали на 1000 сообщений, то последние 980 удалялись, а другие оставались???
Покажите на схеме

  Ответить  
 
 автор: sim5   (21.03.2010 в 19:57)   письмо автору
 
   для: nikolayers   (21.03.2010 в 19:34)
 

И зачем удалять, не проще ли не добавлять их?

  Ответить  
 
 автор: nikolayers   (21.03.2010 в 19:59)   письмо автору
 
   для: sim5   (21.03.2010 в 19:57)
 

ну так и хочу, я просто пример навел, что из 1000 только 20 в базе...

  Ответить  
 
 автор: sim5   (21.03.2010 в 20:16)   письмо автору
 
   для: nikolayers   (21.03.2010 в 19:59)
 

И в чем проблема? Если получить число сообщений имеющихся, и их 20, то более не производить запись базу. Тут удалением никаким и не пахнет.

  Ответить  
 
 автор: nikolayers   (21.03.2010 в 20:43)   письмо автору
 
   для: sim5   (21.03.2010 в 20:16)
 

пахнет, это ж чат!!!!!!!!!!!!!!!если следовать вашим словал, то в чате после того как будет более 20 сообщений, начнеться 'мертвый период', то-есть новые сообщения не будут появлятся, а все время будут оставаться старые...

  Ответить  
 
 автор: sim5   (21.03.2010 в 20:45)   письмо автору
 
   для: nikolayers   (21.03.2010 в 20:43)
 

Вот именно! А вы как вопрос задаете? Удалять надо не кучу записей, а начиная с N-записей, младшую по времени.

  Ответить  
 
 автор: Trianon   (22.03.2010 в 00:50)   письмо автору
 
   для: nikolayers   (21.03.2010 в 20:43)
 

вы попросили удалять последние 980, а не первые.
С позиций чата это абсурд.

  Ответить  
 
 автор: sasha1133   (22.03.2010 в 02:02)   письмо автору
 
   для: Trianon   (22.03.2010 в 00:50)
 

всё просто - добавляем в таблицу новую запись, одновременно удаляя самую старую.

  Ответить  
 
 автор: nikolayers   (22.03.2010 в 18:31)   письмо автору
 
   для: sasha1133   (22.03.2010 в 02:02)
 

а ккак это реализовать то???

  Ответить  
 
 автор: sasha1133   (22.03.2010 в 20:05)   письмо автору
 
   для: nikolayers   (22.03.2010 в 18:31)
 

Ну можно например так: сначала вставить 20 записей в таблицу, где заполнена только дата. Потом добавляем командой INSERT сообщение, затем выбираем запись с самой старой датой командой SELECT, узнаём её ID (лучше включать это поле в таблицу с параметром auto increment - чтобы однозначно можно было идентифицировать запись). Потом удаляем запись по ID. В принципе можно вместо ID использовать дату, но есть риск, что будут удаляться 2 или более сообщений. PS. В начале я предлагаю добавить 20 пустых записей, чтобы при каждом удалении не проверять, больше ли число записей чем 20 или нет - на 1 запрос меньше.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования