Показать сообщение отдельно
Старый 19.04.2011, 07:04 Вверх   #1
Модератор
 
Аватар для Slavok47
Slavok47 вне форума
Доп. информация
По умолчанию Решение задач/проблем при помощи SQL-запросов

Существуют некоторые задачи а возможно и не доработки (например проблема с подписью) которые очень просто решить при помощи SQL запроса, в основном это настройки которые не применяются для тех объектов которые были созданы до изменения этих настроек.
Например:
1) Проблема с подписью, если пользователь не сделал себе подпись, то этот функция имеет отключенный статус, и создание сообщений делается с опцией в отключенном состоянии, а когда пользователь делает себе подпись она не включается в сообщениях написанных до создания подписи, можно конечно редактировать каждое, но если их 1000?
в этом случае используем обычный запрос через phpMyAdmin или же прямо из админку (если есть разрешение на это), если же нету то его можно включить в config.php,
PHP код:
$config['SpecialUsers']['canrunqueries'] = '1'
это не безопасно, и тогда можно будет делать автоматические запросы, по категориям
PHP код:
UPDATE post SET showsignature='1' 
где post - таблица, будьте внимательны, если у вас таблицы с префиксом, его обязательно нужно добавить
данный запрос обновит все строки в поле showsignature в таблице post для всех пользователей, а можно это сделать и для конкретного пользователя, тогда запрос будет выглядеть так:
PHP код:
UPDATE post SET showsignature='1' WHERE username='Admin' 
либо по ID (что более недежней) userid='1'
Все это вступление, далее будут просто запросы, это для тех кто вобще ни как не дружит с SQL и PHP, хотя таким я бы не рекомендовал что то делать с базой))

2) Для включения у всех опции "Разрешить уведомления о новых ЛС всплывающим окном"
PHP код:
UPDATE user SET pmpopup='1' 
3) Массовое удаление "мягко" удаленных тем/постов
данная операция пройдет в 3 этапа:
а) Удаление постов
б) Удаление тем
в) Удаление меток

И так, удаляем все посты которые имеют статус "мягко-удаленные", и все остальные посты которые находятся в темах которые "мягко-удалены":
PHP код:
DELETE from vb_post WHERE postid IN (SELECT primaryid from vb_deletionlog where type='post') OR threadid IN (SELECT primaryid from vb_deletionlog where type='thread'
Удаляем сами темы:
PHP код:
DELETE from vb_thread WHERE threadid IN (SELECT primaryid from vb_deletionlog where type='thread'
Удаляем метки:
PHP код:
DELETE from vb_deletionlog WHERE type='post' OR type='thread' 
В примере использован префикс vb_


Будьте осторожны при работе с БД и запросами, делайте бэкапы перед какими то работами

Последний раз редактировалось Slavok47; 21.04.2011 в 10:46..
  Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
 
Время генерации страницы 0.06107 секунды с 10 запросами