Приложение Д: javascript php файл скрипт HTML

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт
Красносельский
Константин
Константинович

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Компьютер и программы

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Веб-дизайн

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Справочники

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Документация по CSS1

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Настройка файла .htaccess

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Коды ошибки http сервера

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Подстановочные символы и регулярные выражения

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Спецификация файла robots.txt

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт SSI – Server Side Includes

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Таблица кодировки символов кириллицы

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Нестандартные символы в HTML

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Вторая таблица символов HTML

 

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Советы начинающим

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Советы начинающим Веб-дизайнерам: Что, где и зачем.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Правила плохого тона

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт WEB-уловки

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Камень предкновения: верстка таблицами или блоками?

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Рекомендации по разработке веб сайта

 

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Анализ WEB-конъюнктуры. Создание лучшего сайта и его раскрутка.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Анализ WEB-конъюнктуры

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Предисловие

Приручение поисковых машин

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Уровень документа - все гениальное просто

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Благоустройство нор для поисковых червей или как водить пауков по нашей паутине

Ускорение индексации сайта

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Если гора не идет к Магомету

Индекс цитирования

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Что это такое и с чем его едят

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Приобретение веса в глазах общественности

Послесловие

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Последние замечания по интернет-раскрутке

 

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Приложения

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт А: «Рекомендации лучших пауководов»

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Краткий комментарий.

Советы специалистов поисковой системы Rambler.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Использование файлов robots.txt.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Часто задаваемые вопросы.

Советы специалистов поисковой системы Aport.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Регистрация сайта в Апорте.

Советы специалистов поисковой системы Yandex.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Добавление страниц

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Индексирование

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Положение страницы на выдаче

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Поиск со своей страницы

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Ответы на часто задаваемые вопросы

 

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Б: «1000 сверх-сайтов Рунета»

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт 1000 сверх-сайтов Рунета

 

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт В: «Сто наиболее популярных поисковых слов»

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Сто наиболее популярных поисковых слов

 

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Г: «Где это сделать?»

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Где это сделать?

 

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Д: «Практическое руководство!!!»

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Краткий комментарий.

Окна, ссылки и меню.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Ссылки и окна. Внешний вид и внутреннее содержание.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Организация ссылок. Всевозможные оглавления.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Если вам не нравятся фреймы, значит, вы не умеете их готовить.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Меню из выпадающих списков (javascript и CSS).

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Многоуровневое раскрывающееся меню (javascript и CSS).

Работа с базами данных.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Обработка баз данных браузером посетителя

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Обработка баз данных сервером (PHP)

Взаимодействие с посетителем

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Отправка писем с веб-страницы.

Формы

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Методы форм.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Создание на сайте PHP голосования.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Регистрация и контроль посетителей (PHP).

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Интерактивность материала.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Создание гостевой книги на PHP.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Удаление записей из текстовых баз (PHP).

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Заргузка файлов на сервер по HTTP-протоколу (PHP).

Разное.

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Псевдослучайные элементы (PHP, javascript).

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Точное определение имени и версии браузера с помощью JavaScript, SSI или PHP

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Клоакинг и технология «Входных дверей».

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Отложенное выполнение и выполнение с заданным интервалом (javascript)

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Информация о размере, дате, собственные счетчики и протоколы посещений

 

 

 

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Консультации

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Экспорт и импорт новостей

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт PHP chmod – права доступа к файлам

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт WEB 2.0 – миф, или реальность?

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Давно забытый AJAX

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Способы хранения веб-страниц: документы FrontPage или базы данных

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Как заработать на своем сайте?

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт FTP клиент, как настроить Total Commander

 

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Мониторинг веб сайтов и анализ поисковых запросов

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Документация по Веб-дизайну

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Желающим скачать PHP скрипт или JavaScript

 

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Литература и поэзия

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт Гуманитарные науки

Компьютер Программы WEB-дизайн Гуманитарные науки Документация Справочник Статьи Хронология материалов

Компьютер Программы WEB-дизайн Гуманитарные науки Документация Справочник Статьи Обращение к посетителям

Шрифт Font Шрифты Fonts скачать Скачать шрифты

Реферат по психологии религии логике информатике. рефераты контрольные курсовые работы скачать на халаву психология религия информатика халява логика контрольная курсовая работа Скачать рефераты

Сайты достойные внимания: Web-дизайн программирование документация руководство книга для любителей музыки статьи о создании музыки с помощью компьютера обзоры музыкальных программ музыка в mp3 формате Крымский тур-оператор Фонд «Боспор» Боспор Керчь фестиваль Боспорские агоны рекламная фирма кондиционер частный отель «Казантипская хижина» Азовске побережье Керченского полуострова Украина Крым Достойно внимания

Создание web сайта на заказ Создание web сайта на заказ

Создание, разработка web сайта на заказ. WEB-design Создание веб сайтов (цены)

web Сайты, созданные Красносельским К. К. Веб-дизайн разработка сайтов на заказ. WEB-design Веб-сайты, созданные мной (потенциальным заказчикам)

Полезные ссылки Полезные ссылки

Красносельский К. К. Компьютер Windows DOS система реестр BIOS программы Веб-дизайн PHP Perl CSS HTML CGI Java JavaScript музыка поэзия стихи тексты песен Психология философия психоанализ психиатрия логика сознание разум мышление интуиция развитие человек реферат религия информатика Об авторе

Компьютер Программы WEB-дизайн Гуманитарные науки Документация Справочник Статьи Статистика сайта

Показать фреймы

 

Web На сайте

 

 

ТаблицейБлоками.

Приложение Д: javascript php файл скрипт HTML

Последняя модификация: 04.07.2008 г

Страница загружена с адреса: http://webdesign.site3k.net/conjuncture/append/d/price2.html

Обработка баз данных сервером

  1. Считывание данных в WEB-страницу
  2. Фильтрация данных
  3. Окончательный вариант исходного кода
  4. Браузеры без JavaScript

Считывание данных в WEB-страницу

CSV-Файлы получили настолько широкое распространение, что их поддержку включили даже в PHP. Так что, можно обрабатывать на сервере те же базы данных, что были предназначены для обработки браузером посетителя (см. «Обработка баз данных браузером посетителя»).

Для обработки CSV-файлов в PHP введена функция:

fgetcsv($FILE, LEN, DELIM)

Эта функция читает одну строку из файла, заданного дескриптором $FILE, с максимальной длиной, заданной параметром LEN, разбивает ее по символу DELIM (параметр DELIM должен обязательно состоять из одного символа, в противном случае принимается во внимание только первый) на отдельные элементы, и возвращает их в массив. Таким образом, получивший значение, возвращаемое функцией fgetcsv, массив содержит 1 запись из базы данных, готовую к дальнейшей обработке и ее не приходится дополнительно делить на поля с помощью функций explode() или split(). После считывания строки, позиция в файле меняется, так, что при следующем считывании, функция прочтет следующую строку1.

Функция возвращает false, если строки кончились. Пустые строки в файле не игнорируются, а возвращаются как список из одного элемента – пустой строки.

Используя функцию fgetcsv, напишем простой PHP-скрипт для считывания CSV-файла (по сути, самого обычного текстового файла, в котором элементы разделены неким, удобным для нас символом):

<!--Таблица, как в Обработка баз данных браузером посетителя -->
<table id="TabProduct" border=1 rules=all cellspacing=0 cellpadding=0 style="background:#FFFFF0">
  <CAPTION><span id="coment"><EM>Продажа кондиционеров и сплит-систем с доставкой и установкой</EM></span></CAPTION>
  <COL style='white-space:nowrap'><COL align=center><COL align=center><COL align=center><COL align=center><COL align=right>
  <thead>
     <tR style="background:#ccffcc">
        <tH>Модель
        <tH>Холод (кВт.)
        <tH>Тепло (кВт.)
        <tH>Мощность (Ват)
        <tH>Площадь (М<sup>2</sup>)
        <tH>Цена ($)
    </tr>
  </thead>
  <tbody>

<?php // во внутрь тела таблицы помещаем PHP-скрипт, который наполнит ее содержанием
$filename = "price.csv"; // Занесем имя файла в переменную
if (is_readable($filename)) { // если файл читается
  $f = fopen($filename,"r") or die("Ошибка открытия базы"); // Открываем файл и заносим его указатель в переменную
  for($i=0; $data=fgetcsv($f, 1000, ";"); $i++) // Читаем по одной строке из файла, занося значения в переменную $data, пока fgetcsv не вернет False
  {
     if($i != 0) {  // Если это не первая строка, в которой содержится название столбцов,
        list($mark, $model, $cool, $hot, $power, $place, $price) = $data; // перебросим массив в переменные (можно было бы обращаться к элементам массива как $data[1], $data[2] и т. д., но удобней по именам
                 echo "<tr><TD>$model<TD>$cool<TD>$hot<TD>$power<TD>$place<TD>$price</tr>\n";
 // добавим на страницу HTML-код, содержащий ячейки таблицы, со значениями из базы данных
                @$kolichectvo++ ; // подсчитаем количество записываемых строк
     }
  }
  fclose($f); // закроем файл по окончании чтения
} 
?>

  </tbody><!--Закончим таблицу -->
</table>

<SCRIPT LANGUAGE='JavaScript'><!-- // запишем в заголовок таблицы
if (<?=@$kolichectvo ?> < 1)
 {coment.innerHTML="<B><font color=red>Кондиционеров с указаными параметрами не найдено</font></b>";}
else
 {coment.innerHTML='<B>Отобранно '+ <?=@$kolichectvo ?> + SetString(<?=@$kolichectvo ?>) +'</b>' ;} 
// для корректного подбора склонения слова «Модель», используем функцию SetString(), описанную в «Обработка баз данных браузером посетителя»
//--></SCRIPT>

Фильтрация данных

Добившись отображения на странице данных из CSV-файла, можно добавить к ним фильтры.

В начале создадим для них элементы управления:

<FORM name="frm" ACTION="<?=$_SERVER["SCRIPT_NAME"]?>" method="get">
// пусть сервер сам впишет путь и название файла. Мало ли куда его засунем?
<table>
<TR><td>Цене до...($)<TD><input type="TEXT" size="5" name="edit1" value="<?=@$edit1 ?>" title="Выбрать кондиционеры и сплит-системы по цене"></TR>
// пусть сервер впишет value, чтобы при обновлении, оно не менялось
<TR><TD>Площади от... (м<sup>2</sup>)<TD><input type="TEXT" size="5" name="edit2" value="<?=@$edit2 ?>" title="Выбрать кондиционеры и сплит-системы по площади"></TR>
<TR><TD>Фирме-производителю<TD>
  <select name="menu"> 
 <option selected>Все
 <option>Akai
 <option>Akira
 <option>Fujitsu 
 <option>Hitachi
 <option>Midea
 <option>Mitsubishi
 <option>Samsung
 <option>Sharp
 <option>Toshiba
 <option>Yoko
  </select>
  </tr> 
</table>

<p style="text-align:center">
<INPUT TYPE='submit' VALUE='Показать' title="Отфильтровать кондиционеры и сплит-системы">
// по нажатию этой кнопки значения полей будут переданы серверу в HTTP-запросе, после вопросительного знака
<a href="<?=$_SERVER["SCRIPT_NAME"]?>" style="TEXT-DECORATION:none"><input type='reset' value='Снять фильтр' onClick="window.location ='<?=$_SERVER["SCRIPT_NAME"]?>'; return false;" title="Показать все кондиционеры и сплит-системы"></a>
// поскольку INPUT TYPE RESET только переводит к исходному значения полей, но не перезагружает данные, для снятия фильтра нужно считать базу заново
// реакция на действие мыши и помещение кнопки во внутрь ссылки применяется для того, чтобы сработало наверняка (были прицеденты)
<P>&nbsp;</P>
<P>&nbsp;</P>
</FORM>

Если на вашем сервере GET-переменные скриптам недоступны, вместо использования переменных $edit1, $edit2 и т. д., следует использовать массив GET-переменных. Например: $_GET['edit1'], $_GET['edit2'], $_GET['menu'].

 

Теперь можно усовершенствовать код PHP, чтобы он учитывал посылаемые ему фильтры. Вместо простого вывода на страницу, сразу за функцией LIST, добавим условия, при которых должен происходить вывод:

        if(!$menu || UrlDecode($menu) == 'Все' || $mark == UrlDecode($menu)) {
           if (!$edit1 || $price <= UrlDecode($edit1)) {
              if (!$edit2 || $place >= UrlDecode($edit2)) {
                 echo "<tr><TD>$model<TD>$cool<TD>$hot<TD>$power<TD>$place<TD>$price</tr>\n";
                 @$kolichectvo++ ;
              }
           }
        }

Код проверяет, не является ли переменная пустой (и тогда проверяет следующую строку), если она не пустая, равна ли она, после перекодировки (а все неанглийские символы кодируются при передаче параметров в HTTP-запросе) значению «Все», что так же, как и пустота переменной, означает переход к следующей строке, или может быть (опять же, после перекодировки, на всякий случай), равна марке из базы данных. При несовпадении ни одного из условий, строка из базы не выводится на страницу и начинается следующий цикл, с чтением следующей строки. Если одно из условий выполняется, начинается следующая проверка: не установлена ли переменная edit1, а если установлена, то не будет ли она меньше или ровна чем цена в базе. Если условие не выполняется, считывается следующая строка, если выполняется, начинается последняя проверка: задано ли ограничение по площади (edit2) и не соответствуют ли ему данные из базы.

В конце концов, пройдя три уровня фильтров, данные выводятся на страницу. Если мы выберем фильтр, задав торговую марку, предел цены, минимум расчетной площади и нажмем на кнопку «Показать», отфильтрованные данные отобразятся в таблице, заголовок которой покажет их точное количество. Поле для ввода цены, благодаря конструкции value="<?=@$edit1 ?>", вставляющей на место <?=@$edit1 ?> результат работы PHP-кода (а он просто впишет туда значение переменной edit1, полученной до обновления данных) будет отображать максимальное значение цены, а поле для ввода площади, по аналогичной причине, будет отображать минимальную площадь… Вот только список, почему-то, будет показывать «Все», несмотря на выбор конкретной торговой марки.

Происходит это потому что, после посылки формы, страница перегружается, и все ее переменные устанавливаются в исходное состояние. Конструкция value="<?=@$edit1 ?>" позволяла сохранить значения полей ввода, принудительно назначая их новой версии страницы. Аналогично можно было бы поступить и с выпадающим списком, каждый раз переписывая его заново с помощью PHP, но это слишком громоздко.

Удобней, на мой взгляд, сделать это, написав дополнительный JavaScript:

for(i=1;i<frm.menu.length;i++) // Нулевой и так станет по умолчанию
{
     a=frm.menu[i].innerHTML;
     if (a== "<?=UrlDecode(@$menu) ?>") 
// Можно былобы и так (найти значение переменной, передаваемой последней, в HTTP-запросе):
//document.location.search.substring(document.location.search.indexOf('menu')+5))
// но фрагмент PHP получается компактней
     {
          frm.menu.selectedIndex=i;
          break; // как только дойдем до нужного, остановить
     }
}

Конструкция, в целом не хитрая. Объявляется цикл по всему списку, так что, изменение списка не требует коррекции скрипта. Внутри цикла переменной «а» передается текст элемента списка и сравнивается со значением, выбранным ранее. Если совпало, пункт списка объявляется выбранным и цикл прекращается. Вот только Опера и Мазила с этим не работают...

Оказалось, Опера и Мазила в innerHTML включают больше текста, чем требовалось. Опера считает своим долгом добавить в него завершающий пробел, даже если он и без того есть, а Мазила – вообще, все подряд до следующего тега. Но «Hitachi» и «Hitachi » – это разные вещи. И если Эксплорер автоматически отрезает завершающие пробелы, то другие браузеры – нет. И никаких функций для этого не предусмотрено. Так что, сразу за a=frm.menu[i].innerHTML, следует добавить код, обрезающий все завершающие знаки табуляции, возврата каретки, новой строки и пробелы:

     for(e=a.length;e>0;e=e-1)
     {
          if (a.substr(e-1,1)==unescape('%09') || a.substr(e-1,1)==unescape('%0A') || a.substr(e-1,1)==unescape('%0D') || a.substr(e-1,1)==' ')
                 a=a.substr(0,e-1); // укоротить строку на символ
	  else {break;} // Прервем, как только дойдем до нормального символа (вдруг пробелы внутри строки?)
     }

Теперь выбор данных работает в любом браузере2. Выполнить сортировку, как предлагалось в «Обработка баз данных браузером посетителя» нельзя, так как PHP не обладает функциями сортировки данных для простых текстовых файлов, но в большинстве случаев фильтров вполне достаточно.

Окончательный вариант исходного кода

Поскольку вы никоим образом не сможете увидеть истинный код страницы напичканной PHP-скриптами, приведу его здесь:

А вот результат его выполнения: Смотреть.

Браузеры без JavaScript

Поскольку подавление скриптов, благодаря Windows XP SP2 стало популярным, стоит отметить что, приведенный выше код будет работать и без JavaScript, только количество отобранных записей не будет отображаться и, текущее положение в выпадающем списке, при обновлении страницы установится в положение по умолчанию. Не самое лучшее поведение, которое можно было себе представить, но эти недостатки вполне терпимы.

Но кто сказал, что их нужно терпеть?

Делать совместимую страницу, так уж делать ее совместимой по полной программе!

Но как добится сохнанения положения ввыпадающем списке без JavaScript? Неужели перед каждым пунктом писать кодпроверки на соответствие текущему положению и, в зависимости от результата, вписывать его то с "selected", то без? Ведь это громоздко и крайне неудобно, в случае необходимости редактировать меню?

Но способ есть: Если меню хранить в отдельном файле, то, с случае обработки браузером, его можно включать в страницу по <!--#include virtual="этот_файл" --> (см.  документацию по SSI-директивам). В PHP-варианте, этот файл можно открыть и добавить построчно, циклически проверяя каждую строку: не нужен ли ей атрибут "selected". Таким образом, при необходимости изменения списка (в данном случае, торговых марок), придется менять один этот файл, а не две страницы, его использующие.

Реализация функции пометки, при хранении списка опций в отдельном файле очень проста и не зависит от их количества.

Помещаем такой код, в том месте, где должен объявлятся список:


<?
if(UrlDecode(@$menu) == 'Все' || !@$menu) { // если в меню выбрано "все" или меню еще не определено
      echo "<option selected>Все\r\n";
} else {
      echo "<option>Все\r\n";
}
$filename = "price_option.inc"; // Занесем имя файла в переменную
if (is_readable($filename)) { // если файл читается
  $f=file($filename);      // считать содержимое файла в массив (автоматически откроется)
  for($i=0; $i < count($f); $i++) {
      $optvalue=substr($f[$i],strpos($f[$i],">")+1);
      if (trim($optvalue) == UrlDecode(@$menu)) {
	$thisoption="<OPTION selected>";
      }else { 
	$thisoption="<OPTION>";
      }
      echo "$thisoption$optvalue";
  }
} 
?>

Теперь хорошо бы перевести на язык PHP и счетчик записей – элементарно:


<? // запишем количество столбцов в заголовок таблицы (хоть он и расположен внизу, отобразится. как положено)
if ($kolichectvo < 1) {
  echo "<CAPTION><B><font color=red>Кондиционеров с указаными параметрами не найдено</font></b></CAPTION>";
} else  {

  function SetString($NumString) {
     if (substr($NumString,strlen($NumString)-2,1)==1) // 10 -19 моделей, 110 - 119, и т. д.
     {
	$WriteText=' моделей';
     } elseif (substr($NumString,strlen($NumString)-1,1)==1) // последний символ = 1
     {
	$WriteText=' модель'; // заканчивается на 1
     } elseif (substr($NumString,strlen($NumString)-1,1) > 1 && substr($NumString,strlen($NumString)-1,1) < 5) // заканчивается на 2 или 3, или 4
     {
	$WriteText=' модели';
     } else {
	$WriteText=' моделей'; // все остальные
     }
     return @$WriteText;
  }

  echo "<CAPTION><B>Отобранно: $kolichectvo".SetString($kolichectvo)."</b></CAPTION>";
}
?>

Поскольку количество столбцов скрипт узнает только по окончании заполнения таблицы, CAPTION придется помещать перед ее закрытием.

Это означает что, сумарную информацию мы получим под таблицей?

О, нет. Это же CAPTION, она все равно отобразится на верху!

Отстался один маленький скриптеныш – на кнопке возвращения к исходному состоянию, событие onClick. И его можно убрать, но только не везде кнопка без него будет работать. Но это можно пережить. Эту кнопку вообще можно выкинуть, а вместо нее, добавить на страницу еще одну форму:


<FORM action="<?=$_SERVER["SCRIPT_NAME"]?>" method="get"><INPUT TYPE=SUBMIT VALUE="Снять фильтр"></FORM>

Со скриптом, или с формой, нажатие кнопки «Снять фильтр» означает для браузера возврат к исходной странице, на которую не устанавливались ни какие фильтры, и он просто возьмет ее из кеша, что произойдет очень быстро. Более медленный, но более академический вариант – поместить в скрипт вторую кнопку типа SUBMIT, дав ей некое имя, напрмер «button2», а перед выводом формы, если эта кнопка нажата, очистить все переменные фильтров:


if(@$button2)
{
   $edit1="";
   $edit2="";
   $menu="";
}

Получится вот такой исходный код:

А вот результат его выполнения: Смотреть.


1 Конечно, можно было бы, и это было бы более традиционно, считать базу в массив и, затем обрабатывать массив, но при величине прайса в сотню строк (позиций), выизрыш в скорости не будет заметен, а при больших размерах... Представим себе, что, в среднем, строка прайса имеет длинну 100 символов. Стало быть, прайс в сто строк имеет размер в 10 килобайт. Если на каждом из тысячи сайтов на сервере вашего провайдера открыто по десять таких прайсов или чего-то еще, в этом духе, сто мегабайт оперативной памяти тратятся только на такие массивы. А сколько еще на всякие переменные и процессы? А хватит ли памяти на сервере? Не стоит уповать на мощьности компьютеров – следует делать экономичные программы. Файлы до килобайта, конечно, лучше считать в массив, свыше ста килобайт, лучше использовать обращение к базам, имеющим ключевые поля, базы более мегабайта, лучше обрабатывать через SQL-запросы. А файлы среднего размера (каждый сам решит, что такое средний размер), следует обрабатывать либо по ключам, либо построчно. НО НЕ СЧИТЫВАТЬ ВЕСЬ ФАЙЛ В МАССИВ! Представьте, десять посетителей на каждом из тысячи сайтов, открывших мегабайтную базу в массив – когда это делаете вы в одиночку, на своем компьютере – это ерунда, но на сервере потребуется 10 ГИГАБАЙТ оперативной памяти!

2 Вместо frm.menu[i].innerHTML можно было применить frm.menu[i].innerText, но он не будет работать в Mozilla. Другой способ – frm.menu[i].text – будет работать везде и, более того, не потребует удаления лидирующих пробелов, однако для примера специально выбран более сложный способ, чтобы, заодно, продемонстрировать полезную функцию усечения строки.


 

 

Комментарии к странице

 

 

 

фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт

 


На главную страницу сайта фильтрация данных JavaScript PHP Script скрипт PHP скачать PHP скрипт бесплатно примеры PHP скачать скрипт