Помогите организовать поиск по текстовой базе данных
Есть база данных в формате txt со следующим содержанием
значение 1| значение 2| значение 2|значение 4 как организовать поиск по этим значениям, или хотя бы по одному из них. |
Янковиц,
С помощью регекпов, видимо. |
Янковиц,
в твоем случае вот этого достаточно может оказаться str="value 1| value 2| value 2|value 4" re=/[^|]+/g alert(str.match(re)) формируем массив из данных. А дальше что делать, из твоего поста не понятно. |
А по проще, может ссылку дадите?
|
Что попроще?
|
Есть форма:
<form name="forma6"> <input class="text" type="text" ></p> <input type="button"/> <textarea wrap="virtual" name="res"></textarea></form> В верхнее поле вводится значение 1 жмём кнопку и в нижнем поле отображается значение 2, 3 и 4 |
Массив данных есть, выглядит по такой схеме:
значение 1 |значение 2| значение 3 |значение 4 номер лицевого счета| ФИО | адрес | баланс |
Цитата:
str.split('|') |
я в javascript ничего не смыслю, можете разжевать?
|
а где подключение к массиву из данных?
|
а где подключение к текстовой базе данных?
|
Цитата:
Если данные находятся в сторонем текстовом файле, доступа из браузера к ним не будет. Только если через сервер, можно локальный. Просто прочесть из ФС ,браузер не может |
Вот здесь есть вариант
http://mat.net.ua/computer/java-scri...cript-0704.htm но мне необходим более сжатый так как база будет состоять из 15000 строк |
база данных и должна быть отдельной, и по возможности нужно будет её потом скрыть, но это уже я знаю как
|
Янковиц,
Там, в этой "dataset.txt" сохраняется синтаксис JS. Твой же файл вызовет ошибку при загрузке. Если хочешь реализовать что-то подобное, формат твоего текстового файла должен сответствовать синтаксису JS. Например так str="value1 | value2 | value3" |
а форма вызова функции на html, и js остаются такими же?
|
Янковиц,
Да, все остается, JS движок просто будет думать, что подключен js-файл. Данные будут извлекатся из переменной str. Но, учти, что строка эта должна быть или без переносов строк, или переносы должны экранироваться. То есть, например, вот такой вариант str=" value1 | value2 | value2 | " Тоже не пойдет. |
Цитата:
|
А могу примерно так начать?
function Vday2(obj){
var a=obj.zn.value.toLowerCase();
var s;
switch (a)
{
str="value1 | value2 | value3"
str="value1 | value2 | value3"
str="value1 | value2 | value3"
str="value1 | value2 | value3"
str="value1 | value2 | value3"
str="value1 | value2 | value3"
default: s='Извините такого лицевого счета не существует'
}
obj.res.value=s;
}
я вместо срочек case 'а': s="bəs"; break; case 'абзац': s="abzas"; break; case 'аборт': s="abort"; break; str="value1 | value2 | value3" вписал, чувствую что-то не то |
А форма вот такая?
<form name="forma"> <input class="text" type="text" name="zn"/> <input type="button" value="Узнать баланс" onClick="Vday2(forma);"/> <textarea wrap="virtual" name="res"></textarea></form> |
Цитата:
|
Янковиц,
Да, хорошо |
Файл database.txt (без переносов строк, для разбиения данных используется символ переноса строки \n, лежит в той же директории, что html)
str="1234 | Калашников Игорь Владимирович | ул. Московская д.3 кв.35 | 30.000 \n 1235 | Петров Николай Николаевич | ул. Ситникова д.7 кв. 55 | 500.000" HTML:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="windows-1251">
<script src="database.txt"></script>
</head>
<body>
<form name="forma6">
<input class="text" type="text" />
<input id="but" type="button"/>
<textarea wrap="virtual" name="res"></textarea></form>
<script type="text/javascript">
var arr=str.split("\n")
var first=function(str){
s=str.match(/^[^|]+/)[0]
if(s) s=s.replace(/\s+/g, "")
if(s) return s
}
var rest=function(str){
return str.split("|").slice(1).join("\n")
}
var search=function(str){
try{
arr.forEach(function(el){if(first(el)===str) throw rest(el)})
}catch(e){return e}
return "No such account"
}
var input=document.querySelector("input")
var textarea=document.querySelector("textarea")
textarea.style.width="500px"
textarea.style.height="200px"
var but=document.querySelector("#but")
but.onclick=function(){textarea.value=search(input.value.trim())}
</script>
</body>
</html>
Для тестирования можешь ввести в input 1234 1235 и 1236(не существует) Протестировать можешь на своем локальном компьютере. |
Спасибо, работает!!! Уважаю тех, кто профессионал в своем деле.:)
|
| Часовой пояс GMT +3, время: 23:56. |