Помогите организовать поиск по текстовой базе данных
Есть база данных в формате 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, время: 10:55. |