|
|
|
| вывожу из базы данные, например, в массив
<?
SELECT name FROM tbl
if($res)
{
while($result= mysql_fetch_array($res))
{
$arr[]=$result['name'];
}
}
?>
|
далее есть текстовое поле для ввода <input type='text' id='names'>
Как на js осуществить поиск по массиву $arr, похожий на LIKE в MySQL?
Например, в массиве есть значения
1. Виктория
2. Виталий
3. Наталья
4. Татьяна
5. Ульяна
6. Ян
Пользователь вводит в текстовое поле
"Ви" - и ему показывается Ви[ктория]
"Вит" - и ему показывается Вит[алий]
"Тал" - [На]тал[ья]
"Ян" - Ян
"Яна" - [Тать]яна
т.е. первое найденное совпадение,
а все остальные совпадения писать например, в переменную $others (думаю, выводить их ниже в списке select для выбора) | |
|
|
|
|
|
|
|
для: медведь
(07.10.2008 в 11:51)
| | поиск по массиву на JS и вывод ре3ультатов в отдельном окне
<SCRIPT LANGUAGE="JavaScript">//poisk
<!--
var item = new Array();
for (c = 0; c < profiles.length ; c++)
{
var divide = profiles[c].split("|");
item[c]=new Array(divide[0],divide[1],divide[2],divide[3],divide[4], divide[5]);
}
page="<html><head><title>Search Results</title><LINK REL=\"StyleSheet\" HREF=\"style.css\" type=\"text/css\"></head><body bgcolor='white'><center><table border=0 cellspacing=10 width=90%>";
function g(url){
if (opener){
if (opener.closed)
window.open(url, "");
else if (opener.location.href.search(url) == -1)
opener.location.href = url;
self.close();
return false;
}
return true;
}
function search(frm) {
win = window.open("", "search", "width=400, height=300, scrollbars=yes");
win.document.write(page);
txt = frm.srchval.value.toLowerCase();
txt = txt.split(" ");
fnd = new Array();
total=0;
for (i = 0; i < item.length; i++) {
fnd[i] = 0;
order = new Array(1, 2, 3, 5);
for (j = 0; j < order.length; j++)
for (k = 0; k < txt.length; k++)
if ((item[i][1].toLowerCase().indexOf(txt[k]) > -1 || item[i][2].toLowerCase().indexOf(txt[k]) > -1 || item[i][3].toLowerCase().indexOf(txt[k]) > -1 || item[i][5].toLowerCase().indexOf(txt[k]) > -1) && txt[k] != "")
fnd[i] += (j+1);
}
for (i = 0; i < fnd.length; i++) {
n = 0; w = -1;
for (j = 0;j < fnd.length; j++)
if (fnd[j] > n) { n = fnd[j]; w = j; };
if (w > -1) total += show(w, win, n);
fnd[w] = 0;
}
win.document.write("</table><p>Total found: "+total+"<br><br><table cellspacing=0 cellpadding=0 bgcolor=ffffff><tr><td valign=bottom><a href=# onclick=\"self.close()\" class=button>Close window</a></td></td></tr></table></body></html>");
win.document.close();
}
function show(which,wind,num) {
link = "article.html?" + item[which][0];
line = "<tr><td><a href='"+link+"' target=main class=navigation-main style=\"cursor: hand;\">"+item[which][2]+"</a><br>";
line += item[which][5] + "<br></td></tr>";
wind.document.write(line);
return 1;
}
// End -->
</script>
|
file records.js (чтобы представить структуру):
rubrics = new Array(
'id|title|link',
.....
);
profiles = new Array(
'id|date|title|text',
....
);
|
| |
|
|
|