Ну так проблема в коде удаления домов, которого у тебя, как ты говоришь, ещё нет. Ничего, кроме сочувствия, тебе никто оказать не сможет с таким раскладом.
Чтоб проще всего было работать с домами, работай не с AUTO_INCREMENT полем, а создай рядом ещё одно поле, присвой ему индекс UNIQUE и уже контролируй ID домов самостоятельно.
Открыть/закрыть phpMyAdmin может начать ругаться, если попытаешься присвоить UNIQUE-индекс для создаваемого столбца, если в таблице уже будут находится какие-либо записи. Чтоб этого избежать, сначала создай обычный столбец, потом сделай запрос на заполнение этого столбца уникальными значениями, по типу:
PHP код:
UPDATE house SET h_id = id-1// "Переймём" значение столбца "id", отняв единицу, дабы ID домов начинались с нуля
и уже потом через редактирование столбца присвой ему индекс "UNIQUE"
Точнее, просто создай итератор на MAX_HOUSES ячеек и записывай в него ID всех занятых домов. Соответственно, ID ячейки и будет ID дома в таблице, благодаря чему тебе не нужно дополнительно хранить значение поля AUTO_INCREMENT для каждого дома, дабы обновлять его информацию. Только ID делай нулевым.
Загрузка будет выглядеть так:
PHP код:
for(new i, id; i < row_count; i++)
{
cache_get_value_name_int(i, "имя_поля_с_ID_дома", id);
if(!(0 <= id < sizeof(hInfo))
{
//Предупреждение о том, что ID дома невалиден
continue;
}
cache_get_value_name_int(i, "цена_дома", hInfo[id][hPrice]);
cache_get_value_name_int(i, "интерьер_дома", hInfo[id][hInt]);
// И т.п. То бишь, сначала получаешь значение столбца с ID дома, а потом используешь его для выгрузки данных
}
А удаление дома уже либо через "вычлинение" ID из inputtext делай
Открыть/закрыть Я, в своё время, делал подобный велосипед:
PHP код:
//Тут вычленяется ID игрока из строки, которая оформлена так: "[ID: число]"
new id_buff[4];
id_buff[0] = strfind(inputtext, "[ID: ")+5;// Находим начало нашего "маячка" и пропускаем 5 символов, так как strfind вернёт порядковый номер символа "["
id_buff[1] = strfind(inputtext, "]", false, id_buff[0]);// Находим закрывающуюся скобку
strmid(id_buff, inputtext, id_buff[0], id_buff[1], 4);// "Вычленяем" ID из строки, используя найденные "координаты"
new giveplayerid = strval(id_buff);// Преобразуем строку в число
Ты можешь сделать так же, если оформишь диалог так, что ID дома будут окружать уникальные и заранее известные символы, по которым можно будет найти "координаты" через strfind
Либо можно работать напрямую с foreach, вычленяя ID путём повторного прогона цикла (то бишь, если ты, например, показываешь дома с 30 по 40-ой, а listitem имеет значение, равное "4", то ты просто пропускаешь 33 итерации цикла и 34-ая будет равна твоему дому. Ну это для тех случаев, когда дома идут не по порядку. Если по порядку, то можно обойтись без цикла, просто запоминая "30" и прибавляя значение listitem)