Я поражаюсь этим и буду рад любой помощи. Мне нужно хранить в базе данных контекст (список идентификаторов строк) для другой страницы. Я открываю страницу со списком произведений искусства, и эта страница сохраняет в базе данных эти идентификаторы artowrks. Когда я нажимаю на изображение, я открываю его веб-страницу, но могу получить доступ к базе данных, чтобы узнать контекст и обратиться к следующей и предыдущей работе.
Это мой код для получения контекста:
updateContext = function () {
alert("updating context");
try {
mydb.transaction(
function(transaction) {
transaction.executeSql("select artworks.number from artworks, collections where collections.id = artworks.section_id and collections.short_name in ('cro', 'cra', 'crp', 'crm');", [], contextDataHandler, errorHandler);
});
} catch(e) {
alert(e.message);
}
}
Функция contextDatahandler перебирает результаты и снова заполняет таблицу current_context:
contextDataHandler = function(transaction, results) {
try {
mydb.transaction(
function(transaction) {
transaction.executeSql("drop table current_context;", [], nullDataHandler, errorHandler);
transaction.executeSql("create table current_context(id String);", [], nullDataHandler, errorHandler);
}
)
}
catch(e) {
alert(e.message);
}
var s = "";
for (var i=0; i < results.rows.length; i++) {
var item = results.rows.item(0);
s += item['number'] + " ";
mydb.transaction(
function(tx) {
tx.executeSql("insert into current_context(id) values (?);", [item['number']]);
}
)
}
alert(s);
}
В результате я получаю таблицу current_context, удаленную, воссозданную и заполненную, но все строки заполнены идентификатором LAST artwork. работает запрос на получение идентификаторов artworks, поэтому я думаю, что это проблема транзакции, но я не могу понять, где.
спасибо за любую помощь