29.08.2010, 18:44
Code:
stock db_GetMaxValue(table[],column[],col2[],i,up = 1) { new str[20]; if (up) set(str,"DESC"); else set(str,"ASC"); format(DBQuery, MAX_STRING, "SELECT %s FROM %s ORDER BY %s %s LIMIT %d, 1;",col2,table,column,str,i); Result = db_query(DataBase, DBQuery); db_get_field(Result, 0, DBQuery, MAX_STRING); db_free_result(Result); return DBQuery; }
в функции я использую оператор ORDER BY для сортировки в таблице(сами данные в таблице не меняются, и идут в алфавитном или нумерном порядке по первичному ключу)
ну и допустим можно использовать так:
Code:
if (!strcmp(cmdtext,"kills")) { SendClientMessage(playerid,COLOR_RED,"--Top 5 Num kills--"); SendClientMessage(playerid,COLOR_RED," name kills"); for (i=0;i<5;i++) { format(string,256,"%d. %s \t%s",i+1,db_GetMaxValue("records","kills","name",i),db_GetMaxValue("records","kills","kills",i)); SendClientMessage(playerid,COLOR_RED,string); } SendClientMessage(playerid,COLOR_RED,"__________________________"); return 1; }
п.с.с. в шапке исправьте:
INT - целое число
FLOAT - число, с плавающей точкой.