xid - не является уникальным инкрементом. Он будет уникальным для записей xfield.
Сделайте уникальный индекс [xfield, xid] + вставка данных через хранимую процедуру, где
модучаете select max(xid) + 1 from table where xfield = value
Далее insert c полученным xid + 1, если выскочит исключение по уникальному индексу, то повторить.
Процесс совершенствования сайта вечен. По мере роста нагрузки вы и фронтэнд переписывать будете.
Заморочтесь лучше на удобстве и полезности сайта для пользователя.
На изменение в select делаете ajax запрос на сервер. Получаете перевод к нужному языку.
Далее у элементов label, ведь через них у вас реализовано отображение названий полей, меняете содержимое (наименование поля) на полученное значение.
Примерный код.
Можно не таскать заказы по таблицам, а хранить в одной.
Надо добавить поля [кто выполнил], [время]
У вас получится, что если не выполнили, то [время] is NULL
Написать запрос на выборку всех не выполненных за предыдущие дни - не сложно.
Когда вы делаете так xhr.onreadystatechange = this.loadListener
вы приравниваете указатель на функцию, и теряете контекст выполнения.
Его нужно сохранить.
Сохраните через замыкание:
var that = this;
xhr.onreadystatechange = function() { that.loadListener(); }
1. Передаете логин/пароль на site.com/login
2. Получаете ID сессии
3. Во всех последующих запросах в header область http запроса добавляете заголовок с ID сессии,
например (authorization: ZGNkOTU3NGZiODkwZTI3OTY1ZmE4M2ExNDllYWQyMTg=)
Методы классов или структур это обычные функции, которые имеют скрытый параметер на инстанс класса/структуры. Так что нет разницы по скорости доступа. С виртуальными функциями почти также.
Если показать образно, то это так:
class MyClass
{
public void Test();
}
// равнозначно
void Test(MyClass hiddenThis);