Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Фильтрация данных в таблице (с другой страницы) (https://javascript.ru/forum/dom-window/54073-filtraciya-dannykh-v-tablice-s-drugojj-stranicy.html)

Jebber 02.03.2015 18:55

Фильтрация данных в таблице (с другой страницы)
 
Доброго времени суток!

Так как мои познания в JS да и в общем сайтбилдинга оставляют желать лучшего, обращаюсь сюда т.к. вот уже несколько дней ломаю голову в решении следующей проблемы:

Есть скрипт:
<script type="text/javascript">
    function filter2 (phrase, _id){
        var words = phrase.value.toLowerCase().split(" "); 
        var table = document.getElementById(_id); 
        for (var r = 1; r < table.rows.length; r++){ 
            var cellsV1 = table.rows[r].cells[1].innerHTML.replace(/<[^>]+>/g,""); //указать первый столбец
            var cellsV = [cellsV1].join(" "); //соединить стобцы для сравнения с введенными данными
            var displayStyle = 'none';
            for (var i = 0; i < words.length; i++) {
            if (cellsV.toLowerCase().indexOf(words[i])>=0)
                displayStyle = ''; 
            else {
                displayStyle = 'none'; 
                break;
            }
            }
        table.rows[r].style.display = displayStyle; 
        }
    }
  </script>


есть html код:

<input name="filt" onkeyup="filter2(this, 'product-feature')" style="width:350px;" type="text" />
   
   <table id="product-feature" border="0" cellpadding="2" cellspacing="1" width="100%">
....


Если вкратце, то скрипт фильтрует данные по 2-му столбцу таблицы.
Если все это дело разместить на одной странице, то все прекрасно работает, в этом то как раз и дело!
Задача такая: необходимо фильтровать данные из таблицы с ID product-feature, но дело в том, что таблица находится на другой странице.
То есть это интернет магазин, в категориях есть список товаров и надо сделать так, чтобы при вводе в input поле артикула товара (он указан на странице товара непосредственно) товары с совпадающими артикулами выводились, а другие скрывались.

Описал проблемы как смог, если слишком много лишнего написал - извиняйте :)

Так вот в общем то в этом и весь вопрос: как сделать так? Как обратится к таблице, находящейся на другой странице, чтобы ее данные фильтровать?

Заранее огромное спасибо всем неравнодушным и ответившим!
надеюсь на Ваше понимание и естественно, помощь!

ksa 02.03.2015 19:04

Цитата:

Сообщение от Jebber
Описал проблемы как смог, если слишком много лишнего написал - извиняйте

Не нужно так долго "объяснять"... Достаточно просто сделать тестовый пример. ;)

laimas 03.03.2015 11:13

Как обратится к таблице, находящейся на другой странице

То есть получается так - на странице А вводим условие фильтра, а данные фильтруемые это страница Б?

Jebber 03.03.2015 12:05

Цитата:

Сообщение от laimas (Сообщение 359348)
Как обратится к таблице, находящейся на другой странице

То есть получается так - на странице А вводим условие фильтра, а данные фильтруемые это страница Б?

Да, на странице А (список товаров) вводим значение, которое находится в таблице на странице Б (карточка товара).

laimas 03.03.2015 12:07

А вы представляете такое - я открыл страницу списка товаров, затем открыл страницу карточки товара, чего-то таким указал, возвращаюсь на первую страницу и смотрю результат? И как это называется?

PS. Может быть sql-таблица должна иметь поле режима отображения или TINYINT (0/1), или ENUM да/нет, чрез административный раздел выбираем для какого либо артикула нужный режим, соответствующий результат на страницах?

Jebber 04.03.2015 16:51

Цитата:

Сообщение от laimas (Сообщение 359372)
А вы представляете такое - я открыл страницу списка товаров, затем открыл страницу карточки товара, чего-то таким указал, возвращаюсь на первую страницу и смотрю результат? И как это называется?

PS. Может быть sql-таблица должна иметь поле режима отображения или TINYINT (0/1), или ENUM да/нет, чрез административный раздел выбираем для какого либо артикула нужный режим, соответствующий результат на страницах?

Дело в том, что люди будут вводить в это поле то, что они знают, с моем случае это артикул товара.
И артикулы товаров и их совместимость с устройствами находятся в карточке товара.

Ок, если это кажется бредом, то можете подсказать иное решение проблемы?
Нужна строка поиска, которая будет искать по одной-двум строкам определенной таблицы, которая, как Вы наверное уже поняли находится на другой странице :)

laimas 04.03.2015 17:39

Дело в том, что люди будут вводить в это поле то, что они знают, с моем случае это артикул товара.

Пусть вводят, какие проблемы?

Нужна строка поиска, которая будет искать по одной-двум строкам определенной таблицы

Нужна, какая проблема это организовать?

таблицы, которая, как Вы наверное уже поняли находится на другой странице

Это вы можете пояснить? Браузер не может открыть сразу две страницы, о какой другой идет речь? В динамическом сайте вообще не существует физических страниц, все они создаются по требованию клиента, по условиям определенным, живут пока открыт браузер и умирают после его закрытия.

У вас же получается, что открывается страница html-таблицы, и одновременно страница карточки, и надо ... Как это возможно? Никак. Страница с данными товара формируется по данным sql-таблицы? Ну так и обращайтесь к ней из страницы карточки, ищите в ней искомое, изменяйте.

Или же "на пальцах" и примере поясните что к чему, иначе действительно бред какой-то получается.

Jebber 05.03.2015 10:19

Цитата:

Сообщение от laimas (Сообщение 359600)
Дело в том, что люди будут вводить в это поле то, что они знают, с моем случае это артикул товара.

Пусть вводят, какие проблемы?

Нужна строка поиска, которая будет искать по одной-двум строкам определенной таблицы

Нужна, какая проблема это организовать?

таблицы, которая, как Вы наверное уже поняли находится на другой странице

Это вы можете пояснить? Браузер не может открыть сразу две страницы, о какой другой идет речь? В динамическом сайте вообще не существует физических страниц, все они создаются по требованию клиента, по условиям определенным, живут пока открыт браузер и умирают после его закрытия.

У вас же получается, что открывается страница html-таблицы, и одновременно страница карточки, и надо ... Как это возможно? Никак. Страница с данными товара формируется по данным sql-таблицы? Ну так и обращайтесь к ней из страницы карточки, ищите в ней искомое, изменяйте.

Или же "на пальцах" и примере поясните что к чему, иначе действительно бред какой-то получается.

Ок, объясню с примерами.
Есть страница категорий товара (http://tesmarkt.ru/akkumulyatory-dlya-noutbukov/asus/). Необходимо разместить поле для поиска на этой странице (предположительно после подкатегорий) и чтобы поиск искал по странице карточки товара (http://tesmarkt.ru/akkumulyatory-dly...1225-a32-1025/) по вкладке "Характеристики" и по полю "Аналоги (артикулы)".

Не знаю как еще более подробно объяснить.
Проще говорю нужен обычный поиск, который ищет по одному-двум полям таблицы "Характеристики".

ПС. За ссылки прощу прощения, как только что нибудь прояснится с этой проблемой - удалю.

laimas 05.03.2015 10:45

И что здесь подразумевалось под "другой страницей"?

Поиск можно производить:

а) в базе
б) на странице

В любом из этих случаев понятие "другая страница", это нечто непостижимое. Если "другая", это то что подгружается, так извините, при поиске по базе результат, это новая страница и только найденное. Если поиск на странице то будет естественно по объектам на странице, а не то что может подгрузиться при прокрутке ее.

Размещайте форму поиска расширенную, и в ней списки с нужными параметрами поиска "Характеристики", "Аналоги (артикулы)", .... что угодно, делайте выборку по этим полям базы. В чем проблема?

Кстати, опупеешь от такого магазина. А если я не хочу крутить и ждать пока все загрузиться? На фото у Гугла, к примеру, открыли партию, а дальше можно еще по желанию. Да и не удобно в такой портянке ориентироваться. Может "поиск", это не поиск, а оставить на странице только то что хочется, чтобы именно не раздражала эта подгрузка? Ну тогда это фильтр (типа справа). И если фильтр по имеющемуся на странице, то есть плагины к jQuery, названия сказать не могу, но есть, найдете.


Часовой пояс GMT +3, время: 23:25.