Среда, 13 Ноября 2024, 10:51

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
php удаление всех записей кроме последних 15
UzzzerДата: Четверг, 19 Января 2012, 17:53 | Сообщение # 1
участник
Сейчас нет на сайте
Не создаю еще темы, просто меняю вопрос!

while ($c_msg > 15)
{
$del_rsult = mysql_query("DELETE FROM chat WHERE chat_room = '".$room."' LIMIT 1 DESC");
$c_msg = mysql_num_rows(mysql_query("SELECT chat_id FROM chat where chat_room='".$room."'"));
}

Вот участок кода! По идее он должен удалять все сообщения кроме 15 последних в чате! Но из за него страница очень долго грузит и выводит в итоге ошибку

Fatal error: Maximum execution time of 30 seconds exceeded in M:\home\localhost\www\chat.php on line 86

Что тут не так?


Сообщение отредактировал Uzzzer - Пятница, 20 Января 2012, 15:51
ОгоньДата: Четверг, 19 Января 2012, 17:55 | Сообщение # 2
Dark Lord
Сейчас нет на сайте
Лучше, как в играх студии Плэйтокс

Сообщение отредактировал Огонь - Четверг, 19 Января 2012, 17:55
UzzzerДата: Четверг, 19 Января 2012, 18:10 | Сообщение # 3
участник
Сейчас нет на сайте
Quote (Огонь)
Лучше, как в играх студии Плэйтокс

И как там?

Добавлено (19.01.2012, 18:10)
---------------------------------------------

Quote (Uzzzer)
И как там?

Все уже посмотрел! Вопрос еще живой!!!
HerrPotapovДата: Пятница, 20 Января 2012, 18:26 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Мое предложение.

Code
$query = "SELECT COUNT(*) FROM `chat` WHERE `chat_room` = '$room'"; //получаем общее количество записей для chat_room = $room
$res = mysql_query($query);
$limit = mysql_result($res, 0);
$limit -= 15;

$query = "DELETE FROM `chat` WHERE `chat_room` = '$room' ORDER BY `chat_id` DESC LIMIT 15, $limit"; //удаляем $limit записей начиная с 15-ой с конца


Я думаю есть вариант сделать это все одним запросом, но я к сожалению не знаю как. Подскажите если кто в курсе =)


Discord: alpotapov#1741

Интервью с разработчиком WarCastle - Читаем и вникаем!


Сообщение отредактировал HerrPotapov - Пятница, 20 Января 2012, 18:47
lvovandДата: Пятница, 20 Января 2012, 18:52 | Сообщение # 5
старожил
Сейчас нет на сайте
проверь заданы ли нормально
$c_msg и $room


Разработка и продвижение сайтов. Дизайн
UzzzerДата: Суббота, 21 Января 2012, 03:00 | Сообщение # 6
участник
Сейчас нет на сайте
Ща спать иду! Утром буду думать!
DinoieraДата: Понедельник, 27 Февраля 2012, 11:45 | Сообщение # 7
участник
Сейчас нет на сайте
Quote (HerrPotapov)
Я думаю есть вариант сделать это все одним запросом, но я к сожалению не знаю как. Подскажите если кто в курсе =)

одним запросом все не сделать
Code
$res = mysql_query($query);
$limit = mysql_result($res, 0);

это разные запросы к БД и в 1 фразу их не объеденить

так же
Code
$query = "DELETE FROM `chat` WHERE `chat_room` = '$room' ORDER BY `chat_id` DESC LIMIT 15, $limit"; //удаляем $limit записей начиная с 15-ой с конца

советую переменную другу поставить. .2 раза одна и та же стоит


Помогаю чем могу и прошу взаимной помощи)
DCH - сайт разработчиков игр(новый проект)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг