Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вывод с локальной БД (https://javascript.ru/forum/misc/47199-vyvod-s-lokalnojj-bd.html)

Зосимов 13.05.2014 16:09

Вывод с локальной БД
 
Здравствуйте всем.
Есть массив который выводит график
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

никто не подскажет ?

Mel 14.05.2014 13:05

С локальной базой можно по ODBC через Recorset работать, но как на это посмотрит политика безопасности?

Зосимов 16.05.2014 06:29

Цитата:

Сообщение от Mel (Сообщение 311788)
С локальной базой можно по 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 }
  ],

как в этот массив селектом вставить нужные данные?

jsnb 16.05.2014 12:06

Я никогда с 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

jsnb,

спасибо!

Зосимов 03.07.2014 14:57

Если честно, то я так и не разобрался.
попробую еще раз описать задачу -
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 }
  ],


но как сюда подставить дату и значение полученные из бд никак не пойму.
помогите плиз. уже тут я точно не смогу сам дойти :(

jsnb 04.07.2014 08:23

Ну так а я откуда знаю, что у вас там в таблице todo. И я не вижу где у вас в коде объекты с year и value создаются.

Зосимов 04.07.2014 13:38

в таблице todo дата в формате '2013-10-24' и цифра в формате 65

jsnb 04.07.2014 16:04

Цитата:

Сообщение от Зосимов (Сообщение 319439)
в таблице todo дата в формате '2013-10-24' и цифра в формате 65

Так в чем проблема то тогда? Суйте эти данные в объект, а объект в массив. У меня же там был приведен код который делает именно это.


Часовой пояс GMT +3, время: 11:08.