+ się należy, działa elegancko Na pewno zapamiętam to rozwiązanie
A tak się tylko wtrąca, aby się kiedyś znów nie zdziwić.. co dodać, aby tworzyło tą tabele z unikalnym numerem ID (PRIMARY KEY) i 'atrybutem' (chyba to atrybut) AUTO_INCREMENT (w PHPMyAdmin podpisane jako A_I) ?
public sql_start() {
if(g_boolsqlOK) return;
new host[128], user[64], pass[64], database[64];
get_cvar_string("diablo_sql_database", database, 63);
get_cvar_string("diablo_sql_host", host, 127);
get_cvar_string("diablo_sql_user", user, 63);
get_cvar_string("diablo_sql_pass", pass, 63);
g_SqlTuple = SQL_MakeDbTuple(host, user, pass, database);
get_cvar_string("diablo_sql_table", g_sqlTable, 63);
new q_command[512];
new typ_primary[5];
switch(get_cvar_num("diablo_sql_save")) {
case 0: typ_primary = "nick";
case 1: typ_primary = "ip";
case 2: typ_primary = "sid";
default: typ_primary = "nick";
}
formatex(q_command, 511, "CREATE TABLE IF NOT EXISTS `%s` (`nick` VARCHAR(48), `ip` VARCHAR(32), `sid` VARCHAR(32), `klasa` INT(2), `lvl` INT(3) DEFAULT 1, `exp` INT(9) DEFAULT 0, `str` INT(3) DEFAULT 0, `int` INT(3) DEFAULT 0, `dex` INT(3) DEFAULT 0, `agi` INT(3) DEFAULT 0, PRIMARY KEY (`%s`, `klasa`)) DEFAULT CHARSET `utf8` COLLATE `utf8_general_ci`", g_sqlTable, typ_primary);
SQL_ThreadQuery(g_SqlTuple, "TableHandle", q_command);
}
public create_klass(id, class) {
if(g_boolsqlOK) {
if(!is_user_bot(id) && !database_user_created[id]) {
new data[2];
data[0] = id;
data[1] = class;
new name[48], ip[32], sid[32], q_command[512];
get_user_name(id, name, 47);
get_user_ip(id, ip, 31, 1);
get_user_authid(id, sid, 31);
log_to_file("test_log.log", "*** %s [%s] <%s> *** Create %s ***", name, ip, sid, Race[class]);
replace_all(name, 47, "'", "\'");
formatex(q_command, 511, "INSERT INTO `%s` (`nick`,`ip`,`sid`,`klasa`,`lvl`,`exp`) VALUES ('%s','%s','%s',%i,%i,%i)", g_sqlTable, name, ip, sid, class, srv_avg[class], LevelXP[srv_avg[class]-1]);
SQL_ThreadQuery(g_SqlTuple, "create_klass_handle", q_command, data, 2);
database_user_created[id] = 1;
}
}
else sql_start();
}
Sorry, że dziś tak troszkę na gotowca, ale SQL dla mnie to naprawdę magia jest, wiem jedynie tyle, że odpowiada to pewnie którejś z linijki formatex, albo jedna, albo druga, a chyba obydwie
Na moje oko..
formatex(q_command, 511, "CREATE TABLE IF NOT EXISTS `%s` (PRIMARY KEY `numer` INT(5), `nick` VARCHAR(48), `ip` VARCHAR(32), `sid` VARCHAR(32), `klasa` INT(2), `lvl` INT(3) DEFAULT 1, `exp` INT(9) DEFAULT 0, `str` INT(3) DEFAULT 0, `int` INT(3) DEFAULT 0, `dex` INT(3) DEFAULT 0, `agi` INT(3) DEFAULT 0, PRIMARY KEY (`%s`, `klasa`)) DEFAULT CHARSET `utf8` COLLATE `utf8_general_ci`", g_sqlTable, typ_primary);
Chyba dobrze dodałem nową 'kolumnę' w strukturze, w dodatku na początku i jako PRIMARY, ale.. jak dodać, aby automatycznie dodawało numer ?