Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

База данных amxbans

Статус пользователя ex3m777
сообщение 30.7.2013, 11:27
Сообщение #1


Стаж: 13 лет
Город: Москва

Сообщений: 2037
Благодарностей: 1135
Полезность: 968

Меценат Меценат

Всем привет. Интересует такие вопросы:
1) возможно ли изменить значение времени всех перманентных банов, на другое, к примеру на 2 месяца
2) как можно удалить все истекшие баны?

а то тут такое дело



Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
dr-ef
сообщение 30.7.2013, 11:41
Сообщение #2
Стаж: 15 лет

Сообщений: 943
Благодарностей: 305
Полезность: 325

истекшие ... amx_bans_edit очистить ...
перманент ручками править в amx_bans
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Frostiks
сообщение 30.7.2013, 12:04
Сообщение #3


Стаж: 12 лет

Сообщений: 145
Благодарностей: 38
Полезность: 70

Я не знаю какое там поле отвечает за сроки, но премерно вот такой запрос DELETE * FROM server_ban WHERE srok=0
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя poolday
сообщение 30.7.2013, 12:10
Сообщение #4


Стаж: 13 лет

Сообщений: 292
Благодарностей: 297
Полезность: 658


Я очищаю таким способом , жму ОК , ОК , Удалить .. Все очищается - Остаются Активные Баны.

P.s Может не так понял суть твоей проблемы. happy.gif

Отредактировал: poolday, - 30.7.2013, 12:11
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Maxopka
сообщение 30.7.2013, 12:28
Сообщение #5


Стаж: 13 лет

Сообщений: 572
Благодарностей: 163
Полезность: 175

Цитата(poolday @ 30.7.2013, 13:10) *

Я очищаю таким способом , жму ОК , ОК , Удалить .. Все очищается - Остаются Активные Баны.

P.s Может не так понял суть твоей проблемы. happy.gif

1 да.
2 Ему нужно изменить время пернаментных банов.

Отредактировал: Maxopka, - 30.7.2013, 12:35
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ex3m777
сообщение 30.7.2013, 12:37
Сообщение #6


Стаж: 13 лет
Город: Москва

Сообщений: 2037
Благодарностей: 1135
Полезность: 968

Меценат Меценат

Цитата(poolday @ 30.7.2013, 13:10) *

Я очищаю таким способом , жму ОК , ОК , Удалить .. Все очищается - Остаются Активные Баны.

P.s Может не так понял суть твоей проблемы. happy.gif

так ты их удаляешь истекшие баны с бан листа, но не из базы данных, видишь на скрине активные баны 600 с чем-то, а количество банов в базе данных около 5к, нужно очистить базу данных от ненужных записей истекших банов.

Отредактировал: grishka444, - 30.7.2013, 12:37


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Kirby Magicman
сообщение 30.7.2013, 12:38
Сообщение #7


Стаж: 15 лет

Сообщений: 1083
Благодарностей: 398
Полезность: 617

Сделать это трудно, так как `ban_created` в структуре бд не значение datetime, а просто integer.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Maxopka
сообщение 30.7.2013, 12:39
Сообщение #8


Стаж: 13 лет

Сообщений: 572
Благодарностей: 163
Полезность: 175

Вот статья от wellman'a .
Скрытый текст
http://csbans.ru/faq/54-ochischaem-bany-v-amxbans.html
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 30.7.2013, 22:29
Сообщение #9
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

poolday,
оптимизация необходимо "ПОСЛЕ" и "ДО" изменений БД
т.е. вы удалил всё в БД, и тоже нужна оптимизация...

grishka444,
2 месяца (точно в секунду) на amxx я ещё не смог сделать, смог сделать на php
на php сделал 1 месяц...
ну если к месяц +1 то можно и на 2, 3...
а на amxx нет ещё такой функции, которая сможет показать кол. дней в текущем месяце
а указывать их вручную, нужно брать календарь и высчитывать дни... но при этом скрипт будет довольно большой (ст. ~150)

выхода 3:
1. забить на 2 месяца. - самый простой
2. сделать вручную расчеты (на ~150 строк) - заказывать у скриптеров (бесплатно никто не буд делать).
3. делать через mysql + самописная программка Python или c++ (т.е. давать бан игроку например на -1 - 1 месяц, -2 - 2 месяца. и т.д.
после программа конектит к mySQL получает все запросы -* и подсчитывает кол. месяцов... после обновляет запрос в mysql и дает бан соответственно на 2, 3 месяца...
но такая схема довольно не простая... и мало кому будет понятная...

Отредактировал: Orty_Hart, - 30.7.2013, 22:29
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 31.7.2013, 7:24
Сообщение #10


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Если замена на 2 месяца это ban_lenght заменить на 2 месяца (т.е. не от текущего момента) то совсем просто.
Если замена на 2 месяца от текущего момента это (UNIX_TIMESTAMP - ban_created + 2 месяца)
Если что-то более извращенное - можно все равно скорее всего сделать одним запросом mySQL
Цитата(Orty_Hart)
а на amxx нет ещё такой функции, которая сможет показать кол. дней в текущем месяце
а указывать их вручную, нужно брать календарь и высчитывать дни... но при этом скрипт будет довольно большой (ст. ~150)

Функцию, которая вернет количество дней в текущем месяце можно написать в 5-7 строк


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 31.7.2013, 8:24
Сообщение #11
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

mazdan,
Если 5-7 строк, напиши скрипт и помоги автору)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 31.7.2013, 8:48
Сообщение #12


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Orty_Hart, я задачу толком не понял.. Что сделать нужно. Если заменить все баны перманентные на 2 месяца + почистить те что истекли то можно сделать
Цитата
DELETE FROM amx_bans WHERE ban_created < UNIX_TIMESTAMP(NOW()) - 60*60*24*31 AND ban_lenght = 0

Это удалит все перманентные баны которые старше 2х месяцев (ну вроде так)
Цитата
DELETE FROM amx_bans WHERE ban_created < UNIX_TIMESTAMP(NOW()) - 60*60*24*31 AND ban_lenght < 60*60*24*31

Это по идее удалит все что истекло и старше 2х месяцев
Цитата
UPDATE amx_bans SET ban_lenght = 60*60*24*31 WHERE ban_created > UNIX_TIMESTAMP(NOW()) - 60*60*24*31 AND ban_lenght = 0

Это по идее установит банам перманентным длину в 2 месяца от момента создания бана (если задача такая)

Ну примерно так это выглядит. Никак не пойму в чем сложность тут =)


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 31.7.2013, 9:15
Сообщение #13
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

mazdan,
А если будет не 31 а 30 или 28 дней в месяце???
Если бан будет: 17.05.2013 14:17:32
И сделать +1 месяц, (31 день) а в текущем месяце будет 30, то бан будет до 18.06.2013 15:17:32 (+1 день и час)
Это уже сбой
Делаем обновление так: time()+60*60*24*date("t")
А тот код что вы дали будет не правильно!))
+ в MySQL запросе нужно добовлять '' и '' (кавычки) бо можно сделать атаку на бд

И я чет подумал, что автор хотел сделать время банк 1,2.... Месяца на сервере через меню
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ex3m777
сообщение 31.7.2013, 9:37
Сообщение #14


Стаж: 13 лет
Город: Москва

Сообщений: 2037
Благодарностей: 1135
Полезность: 968

Меценат Меценат

mazdan,
Цитата
Цитата
UPDATE amx_bans SET ban_lenght = 60*60*24*31 WHERE ban_created > UNIX_TIMESTAMP(NOW()) - 60*60*24*31 AND ban_lenght = 0

Это по идее установит банам перманентным длину в 2 месяца от момента создания бана (если задача такая)

Мне показалось это то что нужно.
Постараюсь объяснить еще раз...
есть баны с продолжиельностью 0 минут (т.е. навсегда) .. можно ли сделать так чтобы эти 0 минут превратить в другую цифру к примеру 86400 (это 2 месяца).


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 31.7.2013, 9:50
Сообщение #15


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Orty_Hart, через меню тоже можно сделать. В целом не критично сколько дней в месяце - можно заюзать 30.5 и будет вполне нормально.
Если задача именно сделать бан до следующего такого же числа в новом месяце то это тоже не сложно на pawn том же
просто использовать в UNIX_TIMESTAMP("23.02.2013") например и всё =) если бан был 23.01.2013

Относительно экранирований - они не нужны если запрос выполняем мы сами и строка формируется полностью нами. Там нет имён, переменных и т.п.

grishka444, да превратить можно. Два запроса - обма ваши =)


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 31.7.2013, 10:06
Сообщение #16
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

mazdan,
Мне кажется у автора полно ответов и вариантов для них))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 31.7.2013, 10:23
Сообщение #17


Иконка группы

Стаж: 15 лет

Сообщений: 7566
Благодарностей: 5437
Полезность: 1305

Orty_Hart, надо по идее протестировать - просто только что написал.
Примерно так
Код:
stock last_day(month, year)
{
new day_s[11], i = 27
do
{
formatex(day_s, 10, "2%d.2%d.4%d", ++i, month, year)
}
while (parse_time(day_s, "%d.%m.%y"))
return i - 1
}


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Fred Perry
сообщение 31.7.2013, 10:34
Сообщение #18


Иконка группы

Стаж: 16 лет

Сообщений: 6594
Благодарностей: 2370
Полезность: 813

Не легче все снести к чертям и в чистую бд окунуться?)


Гнилой фашистской нечисти
Загоним пулю в лоб,
Отродью человечества
Сколотим крепкий гроб!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
dr-ef
сообщение 31.7.2013, 11:26
Сообщение #19
Стаж: 15 лет

Сообщений: 943
Благодарностей: 305
Полезность: 325

Цитата(Fred Perry @ 31.7.2013, 11:34) *
Не легче все снести к чертям и в чистую бд окунуться?)

+
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ex3m777
сообщение 29.9.2013, 18:36
Сообщение #20


Стаж: 13 лет
Город: Москва

Сообщений: 2037
Благодарностей: 1135
Полезность: 968

Меценат Меценат

Цитата(mazdan @ 31.7.2013, 9:48) *
Orty_Hart, я задачу толком не понял.. Что сделать нужно. Если заменить все баны перманентные на 2 месяца + почистить те что истекли то можно сделать
Это удалит все перманентные баны которые старше 2х месяцев (ну вроде так)

Это по идее удалит все что истекло и старше 2х месяцев

Это по идее установит банам перманентным длину в 2 месяца от момента создания бана (если задача такая)

Ну примерно так это выглядит. Никак не пойму в чем сложность тут =)

когда пытаюсь отправить любой из этих запросов, мне выдает такую ошибку

Цитата
#1054 - Unknown column 'ban_lenght' in 'where clause'


Как это исправить?

UPD: ban_lenght ---> ban_length

Отредактировал: grishka444, - 29.9.2013, 18:51


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: