[Ajuda] Carregar MYSQL e botar em ordem
#1

Eu tenho um sistema de itens mas quando reincia o servidor eu preciso colocar esses itens em ordem
Por exemplo se:
Code:
Код:
itemLIST 15 is itemID 11
itemLIST 16 is itemID 0
itemLIST 17 is itemID 0
itemLIST 18 is itemID 25
Quando carregar, eu preciso que mude para:
Code:
Код:
itemLIST 15 is itemID 11
itemLIST 16 is itemID 25 (from 18)
Eu tentei essa OrderItems(), mas depois de adicionar isso, nгo carrega nada...
E esta printando:
Code:
Код:
[21:13:34] =================
[21:13:34] ordenar items
[21:13:34] =================
[21:13:34] itemloop [0] itemID [15]
[21:13:34] itemloop [0] itemID [16]
[21:13:34] itemloop [0] itemID [17]
[21:13:34] itemloop [0] itemID [18]
[21:13:34] itemloop [0] itemID [19]
[21:13:34] itemloop [0] itemID [20]
E se eu removo OrderItems() carrega certo, mas sem ordenar й claro
Код:
LoadItems() {
    new listloop = ServerStoreItems + 1;
    while(listloop < MAX_LISTS) {
        new query[50]; // Nгo precisa ser enorme como vocк tinha colocado; Precisa apenas caber sua query dentro dela
        mysql_format(ConnectMYSQL, query, sizeof(query), "SELECT * FROM items WHERE itemLIST = '%d'", listloop);
        mysql_tquery(ConnectMYSQL, query, "Load_Items", "i", listloop);
        listloop++;
    }
    OrderItems();
}
forward Load_Items(listloop); public Load_Items(listloop) {
    new rows, fields;
    cache_get_row_count(rows);
    cache_get_field_count(fields);
    if(rows) {
        // ints
        cache_get_value_int(0, "itemID", ItemInfo[listloop][itemID]);
    }
}
forward OrderItems(); public OrderItems() {
    printf("=================");
    printf("ordenar items");
    printf("=================");
    new lastitem = ServerStoreItems+1;
    for(new itemloop = ServerStoreItems+1; itemloop < MAX_LISTS; itemloop++) {
        printf("itemloop [%i] itemID [%i]", ItemInfo[itemloop][itemID], itemloop);
        if(ItemInfo[itemloop][itemID] > 0) {
            lastitem++;
            printf("lastitem [%i]", lastitem);
            ItemInfo[lastitem][itemID] = ItemInfo[itemloop][itemID];


            new squery[2500];
            mysql_format(ConnectMYSQL, squery, sizeof(squery), "UPDATE `items` SET `itemID` = '%d'  WHERE itemLIST = '%d'",
                ItemInfo[lastitem][itemID],
            lastitem);
            mysql_pquery(ConnectMYSQL, squery);
        }
    }
}
Alguйm sabe como me ajudar pra fazer pra conseguir ordenar?
Reply
#2

Tenta usar assim:
PHP код:
format(querysizeof(query), "SELECT * FROM itens ORDER BY itemLIST ASC"); 
Reply
#3

Quote:
Originally Posted by ipsLuan
Посмотреть сообщение
Tenta usar assim:
PHP код:
format(querysizeof(query), "SELECT * FROM itens ORDER BY itemLIST ASC"); 
Muito obrigado por esta ajuda, to preso nisso a muito tempo e ninguem consegue me ajudar a resolver +rep

Mas nгo entendi muito o que vocк quis dizer tudo que eu procuro sobre order by й pra mostrar ranks ou coisas assim...

Como eu faзo pra ordenar essa listagem e mudar os valores pros ids menores trocando os IDs como eu disse acima?
Esses itens salvos sгo corpos do meu sv de DAYZ, entгo precisa estar nessa lista pq sгo actores e nгo pode pular um ID, saca?
Reply
#4

Nгo entendi muito bem, mas a funзгo ORDER BY ela irб ordenar itemLIST de forma ASC (crescente).
Pelo menos no SQLite й assim.

ASC = Crescente
DESC = Decrescente
Reply
#5

Entгo acho que essa funзгo nгo me serve
Vou tentar explicar melhor:
Tenho um sistema de item que deve comeзar no 1 e ir atй o 100, mas nenhum modelo de item pode ser 0 quando o servidor iniciar deve se ordenar

Por exemplo:
ID | MODELO
1 | 120
2 | 130
3 | 0
4 | 150

Preciso fazer uma ordenaзгo pra quando um modelo de item for 0, os valores do proximo ID e jogue no atual e assim vai...
ID | MODELO
1 | 120
2 | 130
3 | 150
4 | 0
Reply
#6

Tente:
Код:
LoadItems()
{
    mysql_tquery(ConnectMYSQL, "SELECT * FROM items WHERE itemID != 0", "Load_Items", "");
}

forward Load_Items();
public Load_Items()
{
    new rows;
    cache_get_row_count(rows);
    if(rows > 0)
	{
	    for(new i = 0; i < rows; i++)
	    {
        	cache_get_value_int(i, "itemID", ItemInfo[i][itemID]);
		}
		OrderItems();
    }
    return 1;
}

forward OrderItems();
public OrderItems()
{
	new query[100];
    mysql_query(ConnectMYSQL, "UPDATE items SET itemID=0");
    for(new i = 0; i < MAX_LISTS; i++)
    {
        if(ItemInfo[i][itemID] != 0)
        {
            format(query, sizeof(query), "UPDATE items SET itemID=%d WHERE itemLIST=%d", ItemInfo[i][itemID], i);
        	mysql_query(ConnectMYSQL, query);
        }
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)