SA-MP Forums Archive
Mysql Удаление аккаунта - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Mysql Удаление аккаунта (/showthread.php?tid=360132)



Mysql Удаление аккаунта - KriD - 16.07.2012

Вообщем планирую сделать, если игрок не заходил на сервер более 30 дней, то аккаунт удаляется.
Вот как я это пытался реализовать:
PHP код:
        new query[100],string[20],Id,bantime;
    
mysql_query("SELECT `ID`,`LastDay` FROM `User` WHERE LastDay >= '0'");
    
mysql_store_result();
    if(
mysql_num_rows())
    {
        for(new 
i;i<mysql_num_rows();i++)
        {
             
mysql_get_field("LastDay"string);
            
bantime strval(string);
            
mysql_get_field("ID"string);
            
Id strval(string);
            if(
getdate()- bantime 30)
            {
                 
format(query,sizeof(query),"DELETE FROM `User` WHERE `ID`='%d'",Id);
                 
mysql_query(query);
             }
         }
    }
    
mysql_free_result(); 
Но аккаунт не удаляется, появляется ошибка о том, что в данный момент нельзя использовать mysql_get_field, причина поля пусты.
CMySQLHandler::FetchField(ID) - You cannot call this function now. (Reason: Fields/Rows are empty.)
Не подскажете как исправить?


Re: Mysql Удаление аккаунта - Stepashka - 16.07.2012

Как я понял у тебя в `LastDay` хранится день от начала года, тогда так:
pawn Код:
new query[100], year, month, day;
    getdate(year, month, day);
    format(query, sizeof(query), "DELETE FROM `User` WHERE DAYOFYEAR('%d-%02d-%02d') - `LastDay` -  >= '%d'", year, month, day, 30);
    mysql_query(query);
но будет косяк с декабрем и январем!
Поэтому рекомендую переделать систему на timestamp:
pawn Код:
new query[100];
    format(query, sizeof(query), "DELETE FROM `User` WHERE UNIX_TIMESTAMP() - `LastDay` -  >= '%d'", 30 * (24 * 60 * 60));
    mysql_query(query);
И прежде чем использовать мускул стоило наверно изучить синтаксис его языка!


Re: Mysql Удаление аккаунта - KriD - 16.07.2012

Спасибо Stepashka.