Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: поиск на js по массиву
 
 автор: медведь   (07.10.2008 в 11:51)   письмо автору
 
 

вывожу из базы данные, например, в массив

<?
SELECT name FROM tbl
  
if($res)
{
  while(
$resultmysql_fetch_array($res))
{
$arr[]=$result['name'];
}
}
?>


далее есть текстовое поле для ввода <input type='text' id='names'>

Как на js осуществить поиск по массиву $arr, похожий на LIKE в MySQL?
Например, в массиве есть значения

1. Виктория
2. Виталий
3. Наталья
4. Татьяна
5. Ульяна
6. Ян

Пользователь вводит в текстовое поле
"Ви" - и ему показывается Ви[ктория]
"Вит" - и ему показывается Вит[алий]
"Тал" - [На]тал[ья]
"Ян" - Ян
"Яна" - [Тать]яна
т.е. первое найденное совпадение,
а все остальные совпадения писать например, в переменную $others (думаю, выводить их ниже в списке select для выбора)

  Ответить  
 
 автор: elenaki   (07.10.2008 в 12:22)   письмо автору
 
   для: медведь   (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',
                       ....
);

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования