PDA

Просмотр полной версии : [Вопрос] Некорректно загружаются данные с БД



vladivanovx
26.02.2017, 21:12
Имеется код, который загружает данные гангзон.
Код проходит через цикл и сохраняет данные в массив.


#define MAX_GANGZONES 130 + 1
new Iterator:Gangzones<MAX_GANGZONES>;

enum GangzoneInfo {
gzID,
gzFraction,
Float:gzMin_X,
Float:gzMin_Y,
Float:gzMax_X,
Float:gzMax_Y
}
new gzInfo[MAX_GANGZONES][GangzoneInfo];

public OnGangzonesDataLoaded() {
new rows = cache_num_rows();
if(rows) {
new i = 0;
while(i < rows) {
cache_get_value_name_int(i, "id", gzInfo[i][gzID]);
cache_get_value_name_int(i, "fraction_id", gzInfo[i][gzFraction]);
cache_get_value_name_float(i, "min_x", gzInfo[i][gzMin_X]);
cache_get_value_name_float(i, "min_y", gzInfo[i][gzMin_Y]);
cache_get_value_name_float(i, "max_x", gzInfo[i][gzMax_X]);
cache_get_value_name_float(i, "max_y", gzInfo[i][gzMax_Y]);
gzInfo[i][gzID] = GangZoneCreate(gzInfo[i][gzMin_X], gzInfo[i][gzMin_Y], gzInfo[i][gzMax_X], gzInfo[i][gzMax_Y]);
Iter_Add(Gangzones, gzInfo[i][gzID]);
i++;
}
print("Данные загружены.");
} else {
print("Данные не загрузились.");
}
return 1;
}


При попытке вывести данные:


foreach(new i : Gangzones) {
printf("i: %d | zoneid: %d", i, gzInfo[i][gzID]);
}


Консоль возвращает данные таким образом:
i: 0 | zoneid: 0
i: 1 | zoneid: 1
i: 2 | zoneid: 2
i: 3 | zoneid: 3
...
И так далее до 130.
130 = кол-во гангзон в БД.
Начальный ид для зоны 1.

Все гангзоны отображаются, кроме одной.

Какой оптимальный вариант можно использовать, что бы все данные вывести корректно.
Что бы строке 0 присвоился соответствующий ид, то есть 1.
Строке 1, ид 2.
И так далее.

vovandolg
27.02.2017, 14:02
new i = 1, rows_f = rows - 1;
while( i < rows_f )


или так оставить


new i = 1;
while( i < rows )