Page 2 of 2

Re: MySQL prisijungimas

Posted: 2012 Nov 16 23:13
by aaarnas
Tada su ta kalba, kurią geriausiai išmanai ir paprasčiausia string formatuoti.

Re: MySQL prisijungimas

Posted: 2012 Nov 16 23:23
by Tetusis
Butu naudinga jei zmogus gana gerai mokantis php/mysql ir turintis minimalias zinias sukurtu paprasta php/mysql/pawn tut, kad ir paprasciausia statistikos plugina, tarkim yra uzduotis -

Code: Select all

set_task
ji kas 3sec iskviecia funkcija kitaip tariant loop'ina, funkcijoje yra paprasciausi tikrinimai, na tarkim vienas is mano sablonu, aisku neveikiantis, del netaisiklingu mysql query isdestymu, principa suprasite

Code: Select all

#include <amxmodx>#include <amxmisc>#include <sqlx> #define PLUGIN "DB test"#define VERSION "0.1"#define AUTHOR "Vycka"  new Handle:g_sql_tuple;  public plugin_init(){    register_plugin(PLUGIN, VERSION, AUTHOR)     set_task(0.1, "mysql_connect")    set_task(3.0, "info", 0, "", 0, "b")}  public mysql_connect(){    new host[32], user[32], pass[32], db[32], table[32];    host = "";    user = "";    pass = "";    db = "";    table = "";        g_sql_tuple = SQL_MakeDbTuple(host, user, pass, db)         new cache[1001];        formatex(cache, charsmax(cache), "QueryHandle","CREATE TABLE IF NOT EXISTS `%s` (`hostname` varchar(100), `ip` varchar(16), `port` varchar(6))", table)                        SQL_ThreadQuery(g_sql_tuple, "QueryHandle", cache)        } public QueryHandle(FailState,Handle:Query,Error[],Errcode) {        if(FailState == TQUERY_QUERY_FAILED)         return server_print("SQL: Prisijungti prie DB nepavyko")                else if(FailState == TQUERY_QUERY_FAILED)        return server_print("SQL: Query(uzklausa) nepavyko")            if(Errcode)        return server_print("SQL: query(uzklausos) klaida: %s",Error)            return PLUGIN_CONTINUE}  public info() {    if(!sql_ready)        return PLUGIN_CONTINUE        new serverio_pavadinimas[64], serverio_ip[16], serverio_port[16];         get_cvar_string("hostname", serverio_pavadinimas, sizeof(serverio_pavadinimas)-1)    get_cvar_string("ip", serverio_ip, sizeof(serverio_ip)-1)    get_cvar_string("port", serverio_port, sizeof(serverio_port)-1)        //formatex(cache, charsmax(cache), "QueryHandle","INSERT INTO `%s` (hostname, ip, port) VALUES ('%s','%s','%s')", table, serverio_pavadinimas, serverio_ip, serverio_port)     formatex(cache, charsmax(cache), "QueryHandle","UPDATE `%s` WHERE (hostname, ip, port) VALUES ('%s','%s','%s')", table, serverio_pavadinimas, serverio_ip, serverio_port)     //formatex(cache, charsmax(cache), "UPDATE `table_test` set `hostname` = '%s', `ip` = '%s', `port` = '%s' WHERE `hostname` = ''", serverio_pavadinimas, serverio_ip, serverio_port)        SQL_ThreadQuery(g_sql_tuple, "QueryHandle", cache)        server_print("SQL: INFO atnaujintas")        return PLUGIN_CONTINUE;}  

Re: MySQL prisijungimas

Posted: 2012 Nov 17 20:25
by rotosas
Tetusis wrote:Butu naudinga jei zmogus gana gerai mokantis php/mysql ir turintis minimalias zinias sukurtu paprasta php/mysql/pawn tut, kad ir paprasciausia statistikos plugina, tarkim yra uzduotis -

Code: Select all

set_task
ji kas 3sec iskviecia funkcija kitaip tariant loop'ina, funkcijoje yra paprasciausi tikrinimai, na tarkim vienas is mano sablonu, aisku neveikiantis, del netaisiklingu mysql query isdestymu, principa suprasite

Code: Select all

#include <amxmodx>#include <amxmisc>#include <sqlx> #define PLUGIN "DB test"#define VERSION "0.1"#define AUTHOR "Vycka"  new Handle:g_sql_tuple;  public plugin_init(){    register_plugin(PLUGIN, VERSION, AUTHOR)     set_task(0.1, "mysql_connect")    set_task(3.0, "info", 0, "", 0, "b")}  public mysql_connect(){    new host[32], user[32], pass[32], db[32], table[32];    host = "";    user = "";    pass = "";    db = "";    table = "";        g_sql_tuple = SQL_MakeDbTuple(host, user, pass, db)         new cache[1001];        formatex(cache, charsmax(cache), "QueryHandle","CREATE TABLE IF NOT EXISTS `%s` (`hostname` varchar(100), `ip` varchar(16), `port` varchar(6))", table)                        SQL_ThreadQuery(g_sql_tuple, "QueryHandle", cache)        } public QueryHandle(FailState,Handle:Query,Error[],Errcode) {        if(FailState == TQUERY_QUERY_FAILED)         return server_print("SQL: Prisijungti prie DB nepavyko")                else if(FailState == TQUERY_QUERY_FAILED)        return server_print("SQL: Query(uzklausa) nepavyko")            if(Errcode)        return server_print("SQL: query(uzklausos) klaida: %s",Error)            return PLUGIN_CONTINUE}  public info() {    if(!sql_ready)        return PLUGIN_CONTINUE        new serverio_pavadinimas[64], serverio_ip[16], serverio_port[16];         get_cvar_string("hostname", serverio_pavadinimas, sizeof(serverio_pavadinimas)-1)    get_cvar_string("ip", serverio_ip, sizeof(serverio_ip)-1)    get_cvar_string("port", serverio_port, sizeof(serverio_port)-1)        //formatex(cache, charsmax(cache), "QueryHandle","INSERT INTO `%s` (hostname, ip, port) VALUES ('%s','%s','%s')", table, serverio_pavadinimas, serverio_ip, serverio_port)     formatex(cache, charsmax(cache), "QueryHandle","UPDATE `%s` WHERE (hostname, ip, port) VALUES ('%s','%s','%s')", table, serverio_pavadinimas, serverio_ip, serverio_port)     //formatex(cache, charsmax(cache), "UPDATE `table_test` set `hostname` = '%s', `ip` = '%s', `port` = '%s' WHERE `hostname` = ''", serverio_pavadinimas, serverio_ip, serverio_port)        SQL_ThreadQuery(g_sql_tuple, "QueryHandle", cache)        server_print("SQL: INFO atnaujintas")        return PLUGIN_CONTINUE;}  
Jam gi ne AMXX plugino reikia.
P.S. Aš manau, kad, newb, galėtum su C++ padaryt, nes kaip žinau visai neblogai AMXX pawno išmanai, o C++ į pawno turi daug panašumų.

Re: MySQL prisijungimas

Posted: 2012 Nov 17 22:51
by hleV
rotosas wrote: P.S. Aš manau, kad, newb, galėtum su C++ padaryt, nes kaip žinau visai neblogai AMXX pawno išmanai, o C++ į pawno turi daug panašumų.
Panaši tik sintaksė ir preprocesorius. Kaip ir su nemažai kitų kalbų. Jei daryt kažką su C++ efektyviai ir "tinkamai", tai tikrai kodo nerašysi taip, kaip darytum su Pawn. Žodžiu tavo argumentas jog "jei Pawn išmanai, naudok būtent C++" yra neteisingas.

Ir šiaip tas Pawn yra skriptinimo kalba labiau, kai C++ yra aukšto lygio programavimo kalba. Drįsiu pasakyt kad, jei moki gerai kurt plugin'us - nereiškia kad moki programuot.

Re: MySQL prisijungimas

Posted: 2012 Nov 18 19:08
by aaarnas
Pawn labiau panaši į C (aišku be pointerių+dalykai iš C++ kaip reference), bet tikrai ne į C++, jei vien dar OOP paliesim.
Esmė, kad yra elementari sintaksė, kuri naudojama daugumoje kalbų.