13.05.2014, 16:09
|
Кандидат Javascript-наук
|
|
Регистрация: 11.02.2013
Сообщений: 102
|
|
Вывод с локальной БД
Здравствуйте всем.
Есть массив который выводит график
data: [
{ year: '2013-12-19', value: 72 },
{ year: '2013-11-15', value: 69 },
{ year: '2013-11-06', value: 68 },
{ year: '2013-10-24', value: 66 },
{ year: '2013-10-15', value: 65 }
],
и есть локальная БД WebSQL
вопрос: как можно оттуда получить данные в этот массив?
нашел примеры работы с локальной БД, но не пойму как это использовать в моем случае.
// получение данных из БД
speckyboy.init.getTodo = function(){
var database = speckyboy.init.db;
database.transaction(function(tx){
tx.executeSql("SELECT * FROM todo", [], function(tx,result){
for (var i=0; i < result.rows.length; i++) {
todo_item = result.rows.item(i).todo_item;
todo_date = result.rows.item(i).due_date;
}
});
});
}
|
|
14.05.2014, 09:30
|
Кандидат Javascript-наук
|
|
Регистрация: 11.02.2013
Сообщений: 102
|
|
никто не подскажет ?
|
|
14.05.2014, 13:05
|
Аспирант
|
|
Регистрация: 24.02.2012
Сообщений: 33
|
|
С локальной базой можно по ODBC через Recorset работать, но как на это посмотрит политика безопасности?
|
|
16.05.2014, 06:29
|
Кандидат Javascript-наук
|
|
Регистрация: 11.02.2013
Сообщений: 102
|
|
Сообщение от Mel
|
С локальной базой можно по ODBC через Recorset работать, но как на это посмотрит политика безопасности?
|
Вы наверное не совсем поняли вопрос -
меня интересует сам синтаксис вывода.
data: [
{ year: '2013-12-19', value: 72 },
{ year: '2013-11-15', value: 69 },
{ year: '2013-11-06', value: 68 },
{ year: '2013-10-24', value: 66 },
{ year: '2013-10-15', value: 65 }
],
как в этот массив селектом вставить нужные данные?
|
|
16.05.2014, 12:06
|
Профессор
|
|
Регистрация: 15.03.2014
Сообщений: 561
|
|
Я никогда с WebSQL особо не работал, но насколько я понимаю просто селектом оно данные в массиве не обновит. Придется либо циклом перебирать и заменять соответствующие элементы, либо делать новый массив из выборки и заменять им старый. Как-то так:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script>
var data = [];
var db = openDatabase('mydb', '1.0', 'test', 20000);
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS TableName (id unique, year, value)');
tx.executeSql('INSERT INTO TableName (id, year, value) VALUES (1, "2013-11-15", "11")');
tx.executeSql('INSERT INTO TableName (id, year, value) VALUES (2, "2013-10-24", "22")');
tx.executeSql('INSERT INTO TableName (id, year, value) VALUES (3, "2013-12-17", "33")');
});
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM TableName', [], function (tx, results) {
var len = results.rows.length;
for (var i = 0; i < len; i++) {
var tmpObj = {
year: results.rows.item(i).year,
value: results.rows.item(i).value
};
data.push(tmpObj);
}
alert(JSON.stringify(data,'',2));
}, null);
});
</script>
</body>
</html>
|
|
27.05.2014, 13:48
|
Кандидат Javascript-наук
|
|
Регистрация: 11.02.2013
Сообщений: 102
|
|
jsnb,
спасибо!
|
|
03.07.2014, 14:57
|
Кандидат Javascript-наук
|
|
Регистрация: 11.02.2013
Сообщений: 102
|
|
Если честно, то я так и не разобрался.
попробую еще раз описать задачу -
db = openDatabase("speckyboy","1.0","Моя первая БД",200000);
if(!db){alert("Failed to connect to database.");}
db.transaction(function(tx) {
tx.executeSql("SELECT * FROM todo", [], function(tx,result){
for (var i=0; i < result.rows.length; i++) {
todo_item = result.rows.item(i).todo_item;
todo_due_date = result.rows.item(i).due_date;
todo_id = result.rows.item(i).ID;
myFnc(todo_item,todo_due_date);
}
}, function(tx, error){});
});
function myFnc(todo_item,todo_due_date){
arr = todo_item;
}
в arr я уже получил список дат. Но мне они нужны как то по другому, в виде массива. Что бы подсунуть их сюда -
new Morris.Line({
// ID of the element in which to draw the chart.
element: 'myfirstchart',
// Chart data records -- each entry in this array corresponds to a point on
// the chart.
data: [
{ year: '2013-12-19', value: 72 },
{ year: '2013-11-15', value: 69 },
{ year: '2013-11-06', value: 68 },
{ year: '2013-10-24', value: 66 },
{ year: '2013-10-15', value: 65 }
],
но как сюда подставить дату и значение полученные из бд никак не пойму.
помогите плиз. уже тут я точно не смогу сам дойти
|
|
04.07.2014, 08:23
|
Профессор
|
|
Регистрация: 15.03.2014
Сообщений: 561
|
|
Ну так а я откуда знаю, что у вас там в таблице todo. И я не вижу где у вас в коде объекты с year и value создаются.
|
|
04.07.2014, 13:38
|
Кандидат Javascript-наук
|
|
Регистрация: 11.02.2013
Сообщений: 102
|
|
в таблице todo дата в формате '2013-10-24' и цифра в формате 65
|
|
04.07.2014, 16:04
|
Профессор
|
|
Регистрация: 15.03.2014
Сообщений: 561
|
|
Сообщение от Зосимов
|
в таблице todo дата в формате '2013-10-24' и цифра в формате 65
|
Так в чем проблема то тогда? Суйте эти данные в объект, а объект в массив. У меня же там был приведен код который делает именно это.
|
|
|
|