Показать сообщение отдельно
  #20 (permalink)  
Старый 06.02.2010, 22:46
Профессор
Отправить личное сообщение для SunYang Посмотреть профиль Найти все сообщения от SunYang
 
Регистрация: 22.02.2008
Сообщений: 189

метод, свойство - я не особо разбираюсь. Я пытаюсь написать прогу (HTA-приложение), которая производит запись содержимого ячеек таблицы в файл, а при каждом открытии программы она считывает из файла данные, и вставляет их в ячейки таблицы. Т.к. с php и базами я вообще не знаком (плюс ко всему надо, чтобы прога работала без сервера), пытаюсь организовать что-то типа базы данных на JS
Программа представляет из себя поля ввода и таблицы, куда записываются введенные значения, и кнопки сохранения, чтобы введенные данные сохранить (записать в файл), а при открытии программы автоматически их от туда доставать и подставлять в таблицы.
Вот код:
<HTML>
 <HEAD> 
 <TITLE>Моя программа</TITLE> 
 <HTA:APPLICATION   APPLICATIONNAME="firstHTA"   BORDER=””  CAPTION="yes"  ICON="my.ico"  SHOWINTASKBAR="no"  SINGLEINSTANCE="yes"  SYSMENU="yes"  WINDOWSTATE="normal" ></HEAD><BODY BGCOLOR="ButtonFace" SCROLL="no">
 </HEAD>
 <BODY>
<script>

var filepath1 = "dbID.txt"
var filepath2 = "dbData.txt"


// функция сохранения массива с id-шниками в файл базы айдишников и массива с данными в файл базы с данными
function go1() {
arr = new Array(); // при запуске функции сохранения очищаем массив id-шников
arrData = new Array(); // при запуске функции сохранения очищаем массив данных

// массив значений ID
var list = document.getElementsByTagName('*');
	for(i=0; i<list.length; i++) {
	if(list[i].id){
	arr.push(list[i].id);
	}	
  }

// создаем файл базы данных и записываем строку (массив) с ID
var fso = new ActiveXObject("Scripting.FileSystemObject")
var myfile = fso.CreateTextFile(filepath1)
myfile.Close()
var opnfile = fso.OpenTextFile(filepath1, 2)
opnfile.WriteLine(arr)
opnfile.Close()
// создаем массив из вытащенной строки из файла базы айдишников
var arrStr = arr+'' // строка из массива ID (для разбиения на массив)
var arrID = arrStr.split(',') // массив id-шников

// создаем массив данных, соответствующих айдишникам
for(i=0; i<arrID.length; i++) {
Data = document.getElementById(arrID[i]).innerHTML
arrData[i] = Data // МАССИВ С ДАННЫМИ
}
// создаем файл базы данных и записываем построчно данные из массива с данными плюс разделитель
var fso = new ActiveXObject("Scripting.FileSystemObject")
var myfile = fso.CreateTextFile(filepath2)
myfile.Close()
var opnfile = fso.OpenTextFile(filepath2, 2)
for(i=0; i<arrData.length; i++) {
opnfile.WriteLine(arrData[i]+'_w') // _w - это разделитель для формирования массива данных. Используем его, так как использовать запятую как в случае с массивом айдишников нельзя, т.к. данные могут содержать числа с запятой  
}
opnfile.Close()

}  // Конец функции

// ФУНКЦИЯ ЗАПИСИ ДАННЫХ ИЗ БАЗ ДАННЫХ В ЯЧЕЙКИ ТАБЛИЦ
function go2() {
// вытаскиваем и преобразовываем в массив айдишники из файла базы с айдишниками
var fso = new ActiveXObject("Scripting.FileSystemObject")
var myfile = fso.OpenTextFile(filepath1, 1)
var strID = myfile.ReadLine()
myfile.Close()
var arrID = strID.split(',') // массив айдишников

var fso = new ActiveXObject("Scripting.FileSystemObject")
var myfile = fso.OpenTextFile(filepath2, 1)
var DataStr = myfile.ReadAll()
var DataArr = DataStr.split('_w') // МАССИВ С ДАННЫМИ
myfile.Close()

// записываем в таблицы значения из массива с данными, соответствующие айдишникам из массива с айдишниками
for(i=0; i<arrID.length; i++) {
document.getElementById(arrID[i]).innerHTML = DataArr[i]
}

} // конец функции

</script>



<input type="button" value="Сохранить" onclick="go1()">
<input type="button" value="Извлечь из БД" onclick="go2()">

<table width="600" border="1" cellspacing="0" cellpadding="0">
<tr>
<td align="center" id="a3">Data1</td>
<td align="center" id="b3">Data2</td>
<td align="center" id="c3">Data3</td>
<td align="center" id="d3">Data3</td>
</tr>
</table>
 </BODY>
 </HTML>

Последний раз редактировалось SunYang, 06.02.2010 в 22:51.
Ответить с цитированием