Вы находитесь на странице: 1из 24

Системы сотовой связи назад | содержание | вперёд

Принципы функционирования систем сотовой связи

В системах радиальной или радиально-зоновой УКВ-связи, характерными


представителями которых, в частности, являются широко известная транкинговая система
«Алтай» и ее модификации, максимальная дальность действия зависит от мощности
передатчика, чувствительности приемника и уровня шума и ограничивается
необходимостью прямой видимости между антеннами станций. Передатчики таких (и им
подобных) систем для обеспечения максимальной дальности связи имеют достаточно
большую мощность. Количество передатчиков, работающих в отведенной полосе частот,
ограничено, потому что разнос частот между соседними каналами должен составлять не
менее 12,5 кГц (для передачи сообщений одного абонента требуется один частотный
канал).

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

Деление обслуживаемой территории на соты

Разделить обслуживаемую территорию на ячейки (соты) можно двумя способами: либо


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

Повторное использование частот

Каждая из ячеек обслуживается своим передатчиком с невысокой выходной мощностью и


ограниченным числом каналов связи. Это позволяет без помех использовать повторно
частоты каналов этого передатчика в другой, удаленной на значительное расстояние,
ячейке. Теоретически такие передатчики можно использовать и в соседних ячейках. Но на
практике зоны обслуживания сот могут перекрываться под действием различных
факторов, например, вследствие изменения условий распространения радиоволн. Поэтому
в соседних ячейках используются различные частоты. Обычно антенны базовых станций
имеют круговые диаграммами направленности (передача сигнала одинаковой мощности
по всем направлениям). Пример построения сот при использовании трех частот f 1 - f3
представлен на рисунке 6.1. Именно возможность повторного применения одних и тех же
частот определяет высокую эффективность использования частотного спектра в сотовых
системах связи.
Группа сот с различными наборами частот называется кластером. Определяющим его
параметром является количество используемых в соседних сотах частот. На рисунке 6.1,
например, размерность кластера равна трем. Но на практике это число может достигать
пятнадцати. Базовые станции удалены друг от друга на расстояние В, называемое
«защитным интервалом» (рисунок 6.1).

Смежные базовые станции, использующие различные наборы частотных каналов,


образуют группу из С станций. Если каждой базовой станции выделяется набор из m
каналов с шириной полосы каждого Fк, то общая ширина полосы, занимаемая системой
сотовой связи, составит:

Fс = Fк*m*С                                               (5.1)

Таким образом, величина С определяет минимально возможное число каналов в системе,


поэтому ее часто называют частотным параметром системы, или коэффициентом
повторения частот. Коэффициент С не зависит от числа каналов в наборе и увеличивается
по мере уменьшения радиуса ячейки, следовательно, при использовании ячеек меньших
радиусов имеется возможность увеличения повторяемости частот. Применение
шестиугольных ячеек позволяет минимизировать ширину необходимого частотного
диапазона, поскольку такая форма обеспечивает оптимальное соотношение между
величинами С и В. Кроме того, шестиугольная форма наилучшим образом вписывается в
круговую диаграмму направленности антенны базовой станции, установленной в центре
ячейки. Остановимся более подробно на вопросе выбора размера ячейки (радиуса R). Эти
размеры определяют защитный интервал В между ячейками, в которых одни и те же
частоты могут быть использованы повторно. Заметим, что величина защитного интервала
В, кроме уже перечисленных факторов, зависит также от допустимого уровня помех и
условий распространения радиоволн. В предположении, что интенсивность вызовов в
пределах всей зоны одинакова, ячейки выбираются одного размера. Размер зоны
обслуживания базовой станции, выражаемый через радиус ячейки R, определяет также
число абонентов N, способных одновременно вести переговоры на всей территории
обслуживания. Следовательно, уменьшение радиуса ячейки позволяет не только повысить
эффективность использования выделенной полосы частот и увеличить абонентскую
емкость системы, но и уменьшить мощность передатчиков и чувствительность
приемников базовых и подвижных станций. Это, в свою очередь, улучшает условия
электромагнитной совместимости средств сотовой связи с другими радиоэлектронными
средствами и системами.

Эффективным способом снижения уровня помех может быть использование


направленных секторных антенн с узкими диаграммами направленности. В секторе такой
направленной антенны сигнал излучается преимущественно в одну сторону, а уровень
излучения в противоположном направлении сокращается до минимума. Деление сот на
секторы позволяет чаще применять частоты в сотах повторно. Общеизвестный способ
повторного использования частот в организованных таким образом сотах основан на
применении 3-секторных антенн для каждой базовой станции и трех соседних базовых
станций с формированием ими девяти групп частот (рисунок 6.2). В этом случае
используются антенны с шириной диаграммы направленности 120°. Самую высокую
эффективность использования полосы частот и, следовательно, наибольшее число
абонентов сети, работающих в этой полосе, обеспечивает разработанный фирмой Motorola
(США) способ повторного использования частот, при котором задействуются две базовые
станции. При реализации этого способа каждая частота используется дважды в пределах
кластера, состоящего из 4 ячеек; базовая станция каждой из них может работать на 12
частотах, используя антенны с диаграммой направленности шириной 60°.

Состав системы сотовой связи

Каждая из сот обслуживается многоканальным приемопередатчиком, называемым


базовой станцией. Она служит своеобразным интерфейсом между сотовым телефоном и
центром коммутации подвижной связи, где роль проводов обычной телефонной сети
выполняют радиоволны. Число каналов базовой станции обычно кратно 8, например, 8,
16, 32... Один из каналов является управляющим (control channel), в некоторых ситуациях
он может называться также каналом вызова (call channel). На этом канале происходит
непосредственное установление соединения при вызове подвижного абонента сети, а сам
разговор начинается только после того, как будет найден свободный в данный момент
канал и произойдет переключение на него. Все эти процессы происходят очень быстро и
потому незаметно для абонента. Он лишь набирает нужный ему телефонный номер и
разговаривает, как по обычному телефону.

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

Все базовые станции соединены с центром коммутации подвижной связи (коммутатором)


по выделенным проводным или радиорелейным каналам связи (рисунок 6.3). Центр
коммутации MSC - это автоматическая телефонная станция системы сотовой связи,
обеспечивающая все функции управления сетью. Она осуществляет постоянное слежение
за подвижными станциями, организует их эстафетную передачу, в процессе которой
достигается непрерывность связи при перемещении подвижной станции из соты в соту и
переключение рабочих каналов в соте при появлении помех или неисправностей,
производит соединение подвижного абонента с тем, кто ему нужен в обычной телефонной
сети и др.

 
Алгоритмы функционирования систем сотовой связи

Не смотря на разнообразие стандартов сотовой связи, алгоритмы их функционирования в


основном сходны. Для абонента практически нет разницы, в каком стандарте
осуществляется связь. Если ему нужно позвонить, то он просто нажимает клавишу на
своём телефоне, что соответствует снятию трубки обычного телефона. Когда же
радиотелефон находится в режиме ожидания (состояние "трубка положена" обычного
телефона), его приёмное устройство постоянно сканирует (просматривает) либо все
каналы системы, либо только управляющие. Для вызова соответствующего абонента
всеми базовыми станциями сотовой системы связи по управляющим каналам  передаётся
сигнал вызова. Сотовый телефон вызываемого абонента при получении этого сигнала
отвечает по одному из свободных каналов управления. Базовые станции, принявшие
ответный сигнал, передают информацию о его параметрах в центр коммутации, который,
в свою очередь, переключает разговор на ту базовую станцию, где зафиксирован
максимальный уровень сигнала сотового телефона вызываемого абонента.

Во время набора номера радиотелефон занимает один из свободных каналов, уровень


сигнала базовой станции в котором в данный момент максимален. По мере удаления
абонента от базовой станции или в связи с ухудшением условий распространения
радиоволн уровень сигнала уменьшается, что ведёт к ухудшению качества связи.
Улучшение качества разговора достигается путём автоматического переключения
абонента на другой канал связи. Это происходит следующим образом. Специальная
процедура, называемая передачей управления вызовом или эстафетной передачей (в
иностранной литературе - handover, или handoff), позволяет переключить разговор на
свободный канал другой базовой станции, в зоне действия которой оказался в это время
абонент. Аналогичные действия предпринимаются при снижении качества связи из-за
влияния помех или при возникновении неисправностей коммутационного оборудования.
Для контроля таких ситуаций базовая станция снабжена специальным приёмником,
периодически измеряющим уровень сигнала сотового телефона разговаривающего
абонента и сравнивающим его с допустимым пределом. Если уровень сигнала меньше
этого предела, то информация об этом автоматически передаётся в центр коммутации по
служебному каналу связи. Центр коммутации выдаёт команду об измерении уровня
сигнала сотового радиотелефона абонента на ближайшие к нему базовые станции. После
получения информации от базовых станций об уровне этого сигнала центр коммутации
переключает радиотелефон на ту из них, где уровень сигнала оказался наибольшим.
Переключение производится так быстро, что абонент совершенно не замечает этих
переключений.

Иногда возникает ситуация, когда поток заявок на обслуживание, поступающий от


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

Одна из важных услуг сетей сотовой связи - предоставление возможности использования


одного и того же радиотелефона при поездке в другой город, область или страну, причём
сотовая сеть позволяет не только самому абоненту звонить из другого города или страны,
но и получать звонки от тех, кто ему звонит. В сотовой связи такая возможность
называется роуминг (от англ. roam - скитаться, блуждать). Для организации роуминга
сотовые сети должны быть одного стандарта (например, телефон стандарта GSM не будет
работать в сети стандарта CDMA и т.п.), а центры коммутации подвижной связи этого
стандарта должны быть соединены специальными каналами связи для обмена данными о
местонахождении абонента. Т.е. для обеспечения роуминга в сотовых сетях необходимо
выполнение трёх условий:

- наличие в требуемых регионах сотовых систем стандарта, совместимого со стандартом


компании, у которой подключен данный радиотелефон;

- наличие соответствующих организационных и экономических соглашений о


роуминговом обслуживании абонентов;

- наличие каналов связи между системами, обеспечивающими передачу звуковой и другой


информации для роуминговых абонентов.

При перемещении абонента в другую сеть её центр коммутации запрашивает информацию


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

При организации роуминга не достаточно провести только технические мероприятия по


соединению различных сетей сотовой связи. Очень важно ещё решить проблему
взаиморасчётов между операторами этих сетей.

Различают три вида роуминга:

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


время в любом месте";

- полуавтоматический, когда абоненту для пользования данной услугой в каком-либо


регионе необходимо предварительно поставить об этом в известность своего оператора;

- ручной, по сути, простой обмен одного радиотелефона на другой, подключенный к


сотовой системе другого оператора.

Существующий объём услуг роуминга во многом определяется активностью деятельности


конкретных компаний, так как возникающие при этом технические проблемы у всех
приблизительно одинаковы (хотя в стандарте GSM услуга роуминга была заложена
изначально). Перспективы развития этой сферы услуг зависят уже от распространённости
стандартов.

Например, для создания единой сети стандарта GSM в России, предлагающей услуги
роуминга в национальном масштабе, требуется организация связи с каждым
региональным оператором. Кроме того, для передачи служебных сообщений необходим,
как минимум, выделенный цифровой канал со скоростью передачи информации 64
Кбит/с. 

Сотовый радиотелефон и здоровье


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

Никто не может, категорически утверждать, что нет вреда от радиотелефонов, равно как
никто не может утверждать, что вред есть. Исследования в этой области ведутся с начала
90-х годов. Все учёные единодушно сходятся на том, что электромагнитное излучение
сотовых телефонов, конечно же, влияет на ткани головного мозга.
бличная верстка нынче совсем не в почете. Буквально на каждом углу кричат, что надо
переходить к верстке с помощью слоев, потому что это соответствует стандартам,
правильнее и вообще «прикольно». Почему слои лучше таблиц обычно не сообщают, так
что приходится либо верить на слово, либо решать дилемму самостоятельно. Поэтому
попытаемся объективно решить, что же представляют собой таблицы, где их следует
применять, а где не стоит.

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

Преимущества таблиц
Таблицы довольно долго властвовали в области верстки, поскольку предлагали
достаточно простые методы для размещения разных элементов на веб-странице при
отсутствии явных конкурентов. Благодаря наличию большого числа параметров, особенно
границе нулевой толщины, таблица выступает в роли невидимой модульной сетки,
относительно которой добавляется текст, изображения и другие элементы. Удобство и
широкие возможности верстки — вот основной реверанс в пользу таблиц. И на этом
список не заканчивается, далее рассмотрены и другие плюсы таблиц.

Создание колонок

Одноколонная модульная сетка применяется на сайтах достаточно редко. Действительно,


основной текст и ссылки по сайту удобнее располагать в разных колонках, разделяя их
тем самым. Таблицы же хорошо выступают в качестве многоколонной модульной сетки,
каждая ячейка представляет собой отдельную колонку. Это позволяет легко создавать
двух- и трехколонный макет документа. При изменении размера окна браузера, колонки
сохраняют свой исходный вид, а не переносятся как слои друг под друга. К тому же
высота разных колонок при использовании таблиц остается одинаковой, независимо от
объема их содержимого.

«Резиновый» макет

Таблицы удачно подходят для «резинового» макета, ширина которого привязана к ширине
окна браузера. Благодаря тому, что размер таблицы можно задавать в процентах, она
занимает все отведенное ей свободное пространство. Также можно регулировать и высоту
содержимого. Например, если текста немного, то «подвал» страницы может висеть в ее
середине. Параметрами таблицы можно отрегулировать это так, что при небольшом
тексте «подвал» плотно прилегает к нижнему краю окна браузера, независимо от размеров
окна.

«Склейка» изображений

Рисунки часто разрезают на отдельные фрагменты, а затем собирают их вновь в одно


целое, выкидывая одни фрагменты или заменяя их другими изображениями. Это
требуется для различных дизайнерских изысков вроде создания эффекта перекатывания,
анимации или уменьшения объема файлов. Таблицы позволяют легко обеспечить
«склейку» нескольких рисунков в одно изображение. Каждая картинка помещается в
определенную ячейку, параметры таблицы при этом устанавливаются такими, чтобы не
возникло стыков между отдельными ячейками.

Фоновые рисунки

В ячейки таблицы разрешается добавлять фоновый рисунок, в зависимости от размеров


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

Выравнивание элементов

Содержимое ячеек можно одновременно выравнивать по горизонтали и по вертикали, за


счет чего расширяются возможности по размещению элементов относительно друг друга
и на странице в целом.

Особенности браузеров

Браузеры достаточно вольно толкуют некоторые параметры CSS, поэтому создание


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

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

Долгая загрузка

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

Существуют и способы обхода этого свойства, в частности, разбиение одной большой


таблицы на несколько таблиц поменьше, а также использование стилевого свойства table-
layout.

Громоздкий код

Таблицы содержат сложную иерархическую структуру вложенных тегов, которая


увеличивает объем кода, и повышает сложность изменения отдельных параметров. В
некоторых случаях для достижения желаемого результата приходится вкладывать одну
таблицу внутрь другой, а это также влияет на размер «шелухи», т.е. кода, который не
принимает непосредственного участия в отображении веб-страницы.

Плохая индексация поисковиками


За счет того, что текст располагается в отдельных ячейках таблицы, в коде он может
находиться достаточно далеко друг от друга. Такая раздробленность информации, а также
значительная вложенность тегов затрудняет правильное индексирование страницы
поисковыми системами. Как результат документ не попадает в первую десятку выдачи
запроса по ключевым словам, хотя вполне может и заслуживать это.

Нет разделения содержимого и оформления

В идеале HTML-код должен содержать только теги с указанием стилевого класса или
идентификатора. А все оформление вроде цвета текста и положения элемента выносится в
CSS и модифицируется отдельно. Такое разделение позволяет независимо править код
страницы и менять вид отдельных ее элементов. Хотя к таблицам стиль легко
добавляется, но обилие «лишних» тегов не позволяет действительно просто и удобно
управлять видом отдельных компонентов страницы. К тому же не все параметры таблиц
имеют свой стилевой синоним, поэтому в любом случае приходится обращаться к коду
веб-страницы и править его.

Несоответствие стандартам

В последнее время стандарты HTML и CSS прочно засели в умах веб-разработчиков.


Этому способствует развитие XHTML и XML, которые более «жестко» относятся к коду
документа, появление новых версий браузеров, придерживающихся спецификации, и
мода на верстку слоями.

Что же говорит спецификация относительно таблиц? А говорит она, что таблицы в


первую и последнюю очередь нужны для размещения табличных данных. Все остальные
способы использования таблиц осуждаются.

Применение таблиц для верстки


Разумеется, и плюсы и минусы таблиц не равнозначны между собой. То, что для одного
сайта может быть простительно, для другого является грубейшей ошибкой. Поэтому
опишем, в каком случае таблицы использовать для верстки логичнее, чем другие средства,
в частности, слои. Итак, таблицы хорошо подходят в некоторых обстоятельствах, которые
описаны далее.

Высота колонок должна быть одинаковой

Таблицы помогают установить колонки одинаковой высоты при разном объеме


содержимого колонок. Разумеется, подобный эффект можно наблюдать только в том
случае, если для колонок применяется фоновая заливка или добавляется рамка.

Макет должен занимать всю высоту окна браузера, независимо от объема


информации

С помощью таблицы можно добиться эффекта, что нижняя часть страницы («подвал»)
выравнивается по нижнему краю окна браузера. Это имеет смысл в том случае, если
объема данных не хватает для увеличения высоты документа. В противном случае часть
страницы будет «висеть» в середине окна. Естественно, для документа достаточного
объема его отображение происходит как обычно.
Нет времени на сложную верстку

Стоит признать, что табличная верстка если не легче, то гораздо привычнее, чем верстка с
помощью слоев. Таблицы используют уже несколько лет и естественно, что приемы
верстки с их помощью стали каноническими. Поэтому, в условиях лимита времени на
создание сайта применение таблиц более чем оправдано. Кстати, многие дизайн-студии,
занимающиеся разработкой сайтов, именно по этой причине отдают предпочтение
табличной верстке. Результат получается планируемым и ожидаемым, а ошибок с
отображением сайта в разных браузерах практически не возникает.

Если подходить критично к способам использования таблиц, то действительной причиной


их популярности является консерватизм разработчиков, привычность и быстрота верстки
сайтов с их помощью. Ясно одно — таблицы постепенно сдают свои позиции в пользу
верстки слоями. Но пройдет еще несколько лет, прежде чем «табличные» сайты станут
раритетом и исчезнут с простора Рунета.

Динамическое управление стилями

Доступ к созданию и изменению стилей документа можно получить, используя DOM.


Причем есть два способа решения этой проблемы. Первый путь это Асбтрактные
инструменты. Принцип работы: мы берем все стили документа как некий массив и
работаем как с элементами массива. Однако это стратегия, а для работы со стилями нужна
тактика то есть изменяемые свойства. Поэтому реализация асбтрактных инструментов
должна проявляться в конкретных инструментах.

Супругом можешь ты не быть, но долг исполнить свой обязан!

Используем Document Object Model (javascript) для управления стилями

Стратегия. Массив таблиц стилей документа styleSheets как абстрактный


инструмент:

//Первая таблица стилей документа document.styleSheets[0] //отключили 1-й


элемент (соответственно false = включение).
document.styleSheets[0].disabled=true; //возвращает URI файла таблицы стилей
для внешних таблиц и null для внутренних таблиц документа
document.styleSheets[0].href; //возвращает количество таблиц стилей (не
изменяемый) document.styleSheets.length;

В общем эти инструменты годятся для получения информации о подключенных таблицах


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

Тактика. Массив операторов CSS cssRules

Работаем опять таки с массивами, но уже с конкретными элементами, пока еще без
привязки по идентификатору. То есть управляем правилами внутри таблиц стилей
используя операторы CSS как элементы массива. Это опять таки удобно при написании
библиотек для динамического управления стилями документов. При этом будет неважно
как дизайнер обозвал селекторы, программист все равно получит нужный результат.

Имеется только одно изменяемое свойство cssText. Оно содержит код указанного
оператора CSS в указанной таблице стилей. Свойство cssText может использоваться как
для создания правил, так и для получения текста существующего оператора.

document.styleSheets[0].cssRules[0].cssText="BODY { color: red }";//присвоит


первое правило первой таблице var
my_css=document.styleSheets[0].cssRules[0].cssText;//получим код оператора в
переменную document.styleSheets[0].deleteRule(0);//удаляет правило с номером
0 document.styleSheets[0].cssRules.length//возвращает количество операторов в
данном списке document.styleSheets[0].insertRule("BODY { color: red }",
0);//вставляет новое правило перед правилом с номером 0
document.styleSheets[0].rules[0].style.cssText="BODY { color: red }";// для
IE document.styleSheets[0].removeRule(0);// для IE
document.styleSheets[0].rules.length;// для IE
document.styleSheets[0].addRule("BODY", "color: red", 0);// для IE

Тактика продолжение. Способы доступа к стилям именованных элементов.

1. Чтение и запись свойств, название свойства и его значение задаются текстовой


строкой согласно правилам CSS; В последних кавычках(третья часть выражения)
задается приоритет(или не задается - оставляем пустые кавычки).

document.body.style.setProperty("background-color", "red", "!


important");
document.getElementById("my_id").style.setProperty("background-color",
"red", "");
document.getElementById("my_id").style.getPropertyValue("background-
color");//чтение этих свойств.

2. Чтение и запись свойств, при которых свойство задается соответствующим


атрибутом объекта CSSStyleDeclaration. Записываем свойство CSS при помощи
синтаксиса ява скрипт = интуитивно понятно:
o css:"background-color";
o javascript:"backgroundColor";
o css:"border-bottom-color";
o javascript:"borderBottomColor";

а его значение задается текстовой строкой согласно правилам CSS.

document.getElementById("my_id").style.backgroundColor = "red";//запись
свойств document.getElementById("my_id").style.backgroundColor;//чтение
этих свойств.

3. Можно использовать cssText

//запись свойств: как параметр атрибута style="код css" нашего элемента


my_id var my_id = getElementById("my_id"); my_id.style.cssText =
"height:100px; width:50px;" my_id.style.cssText;//чтение этих свойств.

4. Можно удалять или вставлять атрибуты

my_id.style.setAttribute("borderBottomWidth", 5, false);//вставили
my_id.style.removeAttribute("borderTopWidth", false);//удалили
XML и электронная коммерция

Для разработчиков web-приложений привычными являются рассуждения о том, что


делают с текстом те или иные теги. Мы привыкли к тому, например, что тег <b> выделяет
соответствующий текст жирным шрифтом. Тем не менее фактически этот тег не имеет
какого-либо собственного значения. Как будет отображен текст, помеченный тегом <b>,
полностью зависит от программы, анализирующей данные. В случае HTML такой
программой обычно является web-браузер. Поскольку документы HTML создаются
обычно в предположении, что их будут читать с помощью web-браузера, многие теги
HTML указывают, как следует форматировать данные, но не содержат никакой
информации для обычного человека. Назначение XML заключается как раз в том, чтобы
отделить данные, содержащиеся в документе, от кода, который задает формат
отображения этих данных. Это свойство XML позволяет извлекать данные из документа
автоматически, то есть с помощью программных средств.

К примеру, предположим, что вы — торговый посредник и занимаетесь продажей


электрических лампочек. На вашем web-сайте приводится самая свежая информация о
ценах на товары от различных производителей. Вместо того чтобы вручную проверять
web-сайты этих производителей и таким образом узнавать информацию о ценах, вы
решаете написать программу, которая автоматически бы считывала цены, добавляла бы 10
% (надбавка для вас) и отображала бы информацию о товарах на вашем web-сайте. Пусть
одним из ваших поставщиков является фирма ABC Lightening. В листинге 1.1 приводится
часть кода HTML для таблицы, содержащей данные о товарах из web-сайта ABC
Lightening [Авторы курса в листингах лекций 1 и 2 приводят вымышленные описания
товаров, которые не следует воспринимать всерьез. — Примеч. перев. ].

Листинг 1.1. Код HTML для таблицы, содержащей информацию о товарах [Все
представленные в курсе тексты программ можно найти на сайте издательства по
адресу www.piter.com. — Примеч. ред. ]

<table>

<tr>

<th>Название товapa</th>

<th>0писание</th>

<th>Ценa</th>

</tr>

<tr>

<td><b>Фонарик</b>

</td>
<td>Свет, который всегда с вами!</td>

<td>$9.95</td>

</tr>

<tr>

<td><b>Неоновая лампа</b></td>

<td>Ничто не скажет слово "класс" так,


как неоновая лампа!</td>

<td>$14.75</td>

</tr>

</table>

Документ HTML только определяет, как должен быть отформатирован данный текст.
Автоматическое извлечение информации из статической страницы HTML даже в лучшем
случае окажется весьма непростой задачей. Если вы хотите написать программу, которая
бы извлекала данные о цене из приведенного кода HTML, вы можете указать, что цена
фонарика присутствует в третьем столбце таблицы в той строке, где в первом столбце
стоит слово «фонарик». Но при этом вы рискуете тем, что ваша программа перестанет
работать, если изменится дизайн web-сайта ABC Lightening или просто поменяется
название данного товара.

Вполне вероятно, что некоторые фирмы-производители динамически создают свои web-


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

В листинге 1.2 приведен пример того, как та же информация может быть представлена с
помощью XML [Catalog — каталог, product — товар, name — название, description —
описание. — Примеч. перев ].

Листинг 1.2.  Документ XML, содержащий информацию о товарах

<?xml version="l.0" standalone="no"?>

<!DOCTYPE ABC_Lighting: catalog SYSTEM "catalog.dtd">

<ABC_Ughting: catalog xmlns:ABC_Lighting = 


"http://www.abclighting.com">

<ABC_Lighting:product>

<ABC_Lighting:name>Фонарик</ABC_Lighting:name>

<ABC_Lighting:description>Cвeт, который всегда с вами!

</ABC_Lighting:description>

<ABC_Lighting:price>$9.95</ABC_Lighting:price>

</ABC_Lighting:product>

<ABC_Lighting:product>

<АВС_Lighting:name>Неоновая лампа</ABC_Lighting:name>

<ABC_Lighting:description>Ничто не скажет слово "класс"


так, как неоновая лампа!</ABC_Lighfmg:description>

 <ABC_lighting:price>$14.75</ABC_Lighting:price>

</ABC_Lighting:product>

</ABC_Lighting:catalog>

Первая строка этого документа — объявление XML, которое содержит информацию,


предназначенную для анализатора XML. Объявление XML (XML declaration)
идентифицирует тип документа и версию XML, которая использовалась при создании
документа. Эта строка не является обязательной, но, как правило, именно с нее начинается
документ XML. Атрибут standalone = "no" означает, что данный документ снабжен DTD.
Следующая строка — это объявление типа документа (document type declaration), которое
указывает, какому DTD соответствует этот документ. В данном случае используется
определение DTD, называемое catalog.dtd. Обратите внимание на то, что, хотя
аббревиатуры совпадают, имеется большая разница между определением типа документа
(сокращенно DTD — Document Type Definition) и объявлением типа документа.
Объявление типа документа используется, чтобы указать, какому определению типа
документа соответствует данный документ XML.

В объявлении типа документа также указывается корневой элемент документа. Корневой


элемент (root element) — это элемент, который включает в себя все остальные элементы
документа. В данном случае корневым является элемент ABC_Lightening:catalog. Часть
имени элемента, расположенная перед двоеточием, идентифицирует пространство имен
тега. Пространства имен не являются обязательными, но их можно использовать для того,
чтобы гарантировать уникальность тегов. Если фирма ABC_Lightening начнет продавать
товары других производителей, то пространства имен помогут избежать возможной
путаницы, связанной с тем, что появятся элементы данных, внешние по отношению к этой
фирме, с теми же названиями, но иначе структурированные.

Ниже показано, как может выглядеть определение catalog.dtd для гипотетического


каталога товаров:

<!ELEMENT ABC_Lightening:catalog (product)>

<!ELEMENT ABC_Lightening:product (name, description?, price+)>


<!ELEMENT ABC_Lightening:name (#PCDATA)>

<!ELEMENT ABC_Lightening:description (#PCDATA)>

<!ELEMENT ABC_Lightening:price (#PCDATA)>

Это DTD показывает, какие элементы могут появиться в каталоге, а также определяет
порядок их следования и число появлений. С использованием данных XML и DTD
автоматическая идентификация и извлечение полезных данных из документа XML
становятся довольно простым делом, в чем вы убедитесь, изучив этот курс.
Связь с базами данных MySQL

СУБД MySQL - одна из множества баз данных, поддерживаемых в PHP. Система MySQL
распространяется бесплатно и обладает достаточной мощностью для решения реальных
задач.

Краткое введение в MySQL


SQL - это аббревиатура от слов Structured Query Language, что означает
структурированный язык запросов. Этот язык является стандартным средством для
доступа к различным базам данных.

Система MySQL представляет собой сервер, к которому могут подключаться


пользователи удаленных компьютеров.

Для работы с базами данных удобно пользоваться средством, входящее в комплект Web-
разработчика: Denwer phpMyAdmin. Здесь можно создать новую базу данных, создать
новую таблицу в выбранной базе данных, заполнить таблицу данными, а также добавлять,
удалять и редактировать данные.

В MySQL определены три базовых типа данных: числовой, дата и время и строчный.
Каждая из этих категорий подразделяется на множество типов. Основные из них:

Тип Описание

INT Целое число

TINYINT Маленькое целое число (-127 до 128 или от 0 до 255)

FLOAT Вещественное число с плавающей точкой

DATE Дата. Отображается в виде ГГГГ-ММ-ДД

TIME Время. Отображается в виде ЧЧ:ММ:СС

DATETIME Дата и время. Отображается в виде ГГГГ-ММ-ДДЧЧ:ММ:СС

YEAR[(2|4)] Год. Можно определить двух- или четырехциферный формат

CHAR(M) Строка фиксированной длины М (M<=255)

VARCHAR(M) Строка произвольной длины до М (M<=255)

TEXT Длинные текстовые фрагменты (<=65535)


BLOB Большие двоичные объекты (изображения, звуки)

Каждый столбец после своего типа данных содержит и другие спецификаторы:

Тип Описание

Все строки таблицы должны иметь значение в этом атрибуте. Если не указано,
NOT NULL
поле может быть пустым (NULL)

Специальная возможность MySQL, которую можно задействовать в числовых


столбцах. Если при вставке строк в таблицу оставлять такое поле пустым,
AUTO_INCREMEN MySQL автоматически генерирует уникальное значение идентификатора. Это
T значение будет на единицу больше максимального значения, уже
существующего в столбце. В каждой таблице может быть не больше одного
такого поля. Столбцы с AUTO_INCREMENT должны быть проиндексированными

Столбец является первичным ключом для таблицы. Данные в этом столбце


PRIMARY KEY
должны быть уникальными. MySQL автоматически индексирует этот столбец

После целочисленного типа означает, что его значение может быть либо
UNSIGNED
положительным, либо нулевым

Создание новой базы данных MySQL осуществляется при помощи SQL-команды


CREATE DATABASE.

CREATE DATABASE IF NOT EXISTS `base`


DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin

Создание новой таблицы осуществляется при помощи SQL-команды CREATE TABLE.


Например, таблица books для книжного магазина будет содержать пять полей: ISBN,
автор, название, цена и количество экземпляров:

CREATE TABLE books (ISBN CHAR(13) NOT NULL,


PRIMARY KEY (ISBN),
author VARCHAR(30),
title VARCHAR(60),
price FLOAT(4,2),
quantity TINYINT UNSIGNED);
Чтобы избежать сообщения об ошибке, если таблица уже есть необходимо изменить первую
строчку, добавив фразу "IF NOT EXISTS":

CREATE TABLE IF NOT EXISTS books ...

Добавление данных в эту таблицу осуществляется при помощи SQL-команды INSERT.


Например:
INSERT INTO books ( ISBN, author, title, price, quantity )
VALUES ('5-8459-0184-7', 'Зандстра Мэт',
'Освой самостоятельно PHP4 за 24 часа', '129', '5');

Для извлечения данных из таблицы служит оператор SELECT. Он извлекает данные из


базы, выбирая строки, которые отвечают заданному критерию поиска. Оператор SELECT
сопровождает немалое количество опций и вариантов использования.

Символ * означает, что необходимы все поля. Например:

SELECT * FROM books;

Для получения доступа только к некоторому полю следует указать его имя в инструкции
SELECT. Например:

SELECT author, title, price FROM books;

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


выбора, который устанавливает конструкция WHERE. Например, чтобы выбрать
имеющиеся в наличии недорогие книги о PHP, надо составить запрос:

SELECT * FROM books WHERE


price < 200 AND title LIKE '%PHP%' AND quantity != 0;
% Соответствует любому количеству символов, даже нулевых
_ Соответствует ровно одному символу

Для того, чтобы строки, извлеченные по запросу, перечислялись в определенном порядке,


используется конструкция ORDER BY. Например:

SELECT * FROM books ORDER BY price;

По умолчанию порядок сортировки идет по возрастанию. Изменить порядок сортировки


на обратный можно с помощью ключевого слова DESC:

SELECT * FROM books ORDER BY price DESC;

Сортировать можно и по нескольким столбцам. Вместо названий столбцов можно


использовать их порядковые номера:

SELECT * FROM books ORDER BY 4, 2, 3;

Для изменения ранее записанных в таблицу значений нужно воспользоваться командой


UPDATE. Например, цену всех книг повысили на 10%:

UPDATE books SET price = price * 1.1;

Конструкция WHERE ограничит работу UPDATE определенным строками. Например:

UPDATE books SET price = price * 1.05 WHERE price <= 250;

Для удаления строк из базы данных используется оператор DELETE. Ненужные строки
указываются при помощи конструкции WHERE. Например, какие-то книги проданы:

DELETE FROM books WHERE quantity = 0;


Связь PHP с базой данных MySQL
Поработав с phpMyAdmin над созданием базы данных, можно приступить к подключению
этой базы данных к внешнему Web-интерфейсу.

Чтобы получить доступ к базе данных из Web, используя PHP, надо сделать следующие
основные шаги:

 Подключение к серверу MySQL.


 Выбор базы данных.
 Выполнение запроса к базе данных:
o добавление;
o удаление;
o изменение;
o поиск;
o сортировка.
 Получение результата запроса.
 Отсоединение от базы данных.

Для подключения к серверу базы данных в PHP есть функция mysql_connect( ). Ее


аргументы: имя компьютера, имя пользователя и пароль. Эти аргументы можно опустить.
По умолчанию имя компьютера = localhost, тогда имя пользователя и пароль не
требуется. Если PHP используется в сочетании с сервером Apache, то можно
воспользоваться функцией mysql_pconnect(). В этом случае соединение с сервером не
исчезает после завершения работы программы или вызова функции mysql_close().
Функции mysql_connect() и mysql_pconnect() возвращают идентификатор подключения,
если все прошло успешно. Например:

$link = mysql_pconnect ();


if ( !$link ) die ("Невозможно подключение к MySQL");

После того, как соединение с сервером MySQL установлено, нужно выбрать базу данных.
Для этого используется функция mysql_select_db(). Ее аргумент: имя базы данных.
Функция возвращает true, если указанная база данных существует и доступ к ней
возможен. Например:

$db = "sample";
mysql_select_db ( $db ) or die ("Невозможно открыть $db");

Для добавления, удаления, изменения и выбора данных нужно сконструировать и


выполнить запрос SQL. Для этого в языке PHP существует функция mysql_query(). Ее
аргумент: строка с запросом. Функция возвращает идентификатор запроса.

Пример 1
<html>
<head>
<title>Добавление записи в таблицу</title>
</head>
<body>
<?php
$db = "sample";
$link = mysql_pconnect ();
if ( !$link )
die ("Невозможно подключение к MySQL");
mysql_select_db ( $db ) or die ("Невозможно открыть $db");
$query = "INSERT INTO books
VALUES ('966-7393-80-1', 'Аллен Вайк',
'PHP. Справочник', '213', '4')";
mysql_query ( $query );
mysql_close ( $link );
?>
</body>
</html>

При каждом выполнении примера 1 в таблицу будет добавляться новая запись,


содержащая одни и те же данные. Разумеется имеет смысл добавлять в базу данные,
введенные пользователем.

В примере 2.1 приведена HTML-форма для добавления новых книг в базу данных.

Пример 2.1
<html>
<head>
<title>HTML-форма добавления новых книг</title>
</head>
<body>
<form aсtion="insert_book.php" method="post">
<table>
<tr><td>ISBN<td><input name=isbn maxlength=13 size=13>
<tr><td>Автор<td><input name=author maxlength=30 size=30>
<tr><td>Название<td><input name=title maxlength=60
size=30>
<tr><td>Цена<td><input name=price maxlength=7
size=7>
<tr><td>Количество<td><input
name=quantity maxlength=3 size=3>
<tr>td colspan=2><input type=submit value="Ввод">
</table>
</form>
</body>
</html>

Результаты заполнения этой формы передаются в insert_book.php.

Пример 2.2
<html>
<head>
<title>Программа добавления новых книг (файл insert_book.php)</title>
</head>
<body>
<?php
if (!$isbn || !$author || !$title || !$price || !$quantity)
die ("Не все данные введены.<br>
    Пожалуйста, вернитесь назад и закончите ввод");
$isbn = trim ( $isbn );
$author = trim ( $author );
$title = trim ( $title ) ;
$isbn = addslashes ( $isbn );
$author = addslashes ( $author );
$title = addslashes ( $title ) ;
$db = "sample";
$link = mysql_pconnect();
if ( !$link ) die ("Невозможно подключение к MySQL");
mysql_select_db ( $db ) or die ("Невозможно открыть $db");
$query = "INSERT INTO books VALUES ('"
.$isbn."', '".$author."', '".$title."', '"
.$price."', '".$quantity."')";
$result = mysql_query ( $query );
if ($result) echo "Книга добавлена в базу данных.";
mysql_close ( $link );
?>
</body>
</html>

В примере 2.2 введенные строковые данные обработаны функцией addslashes(). Эта


функция добавляет обратные слеши перед одинарными кавычками ('), двойными
кавычками ("), обратным слешем (\) и null-байтом. Дело в том, что по требованиям
систаксиса запросов баз данных такие символы дожны заключаться в кавычки.

Для определения количества записей в результате запроса используется функция


mysql_num_rows().

Все записи результата запроса можно просмотреть в цикле. Перед этим с помощью
функции mysql_fetch_array() для каждой записи получают ассоциативный массив.

В примере 3.1 приведена HTML-форма для поиска определенных книг в базе данных.

Пример 3.1
<html>
<head>
<title>HTML-форма поиска книг</title>
</head>
<body>
<form aсtion="search_book.php" method="post">
Ищем по:<br>
<select name="searchtype" size=3>
<option value="author" selected>Автору
<option value="title">Названию
<option value="isbn">ISBN
</select> <br>
Что ищем:<br> <input name="searchterm"> <br>
<input type=submit value="Поиск">
</form>
</body>
</html>

Результаты заполнения этой формы передаются в search_book.php.

Пример 3.2
<html>
<head>
<title>Программа поиска книг (файл search_book.php)</title>
</head>
<body>
<?php
trim ( $searchterm );
if (!$searchterm)
die ("Не все данные введены.<br>
Пожалуйста, вернитесь назад и закончите ввод");
$searchterm = addslashes ($searchterm);
$link = mysql_pconnect ();
if ( !$link ) die ("Невозможно подключение к MySQL");
$db = "sample";
mysql_select_db ( $db ) or die ("Невозможно открыть $db");
$query = "SELECT * FROM books WHERE "
.$searchtype." like '%".$searchterm."%'";
$result = mysql_query ( $query );
$n = mysql_num_rows ( $result );
for ( $i=0; $i<$n; $i++ )
{
$row = mysql_fetch_array($result);
echo "<p><b>".($i+1).". $row[title]</b><br>";
echo "Автор: $row[author]<br>";
echo "ISBN: $row[ISBN]<br>";
echo "Цена: $row[price]<br>";
echo "Количество: $row[quantity]</p>";
}
if ( $n == 0 ) echo "Ничего не можем предложить. Извините";
mysql_close ( $link );
?>
</body>
</html>

Итак, как работает архитектура Web-баз данных:

1. Web-браузер пользователя выдает HTTP-запрос определенной Web-страницы. Например,


пользователь, используя HTML-форму, ищет все книги о PHP. Страница обработки формы
называется search_book.php.
2. Web-сервер принимает запрос на search_book.php, извлекает этот файл и передает на
обработку механизму PHP.
3. PHP выполняет соединение с MySQL-сервером и отправляет запрос.
4. Сервер принимает запрос к базе данных, обрабатывает его и отправляет результат (список
книг) обратно механизму PHP.
5. Механизм PHP завершает выполнение сценария, форматирует результат запроса в HTML.
После этого результат в виде HTML возвращается Web-серверу.
6. Web-сервер пересылает HTML в браузер, и пользователь имеет возможность просмотреть
запрошенный список книг.
Динамические страницы

Веб-страница – определенный участок Интернета, доступ к которому осуществляется с


использованием веб-браузера. Для создания веб-станиц используют языки разметки
XHTML либо HTML. На веб-страницах могут содержаться гиперссылки, предназначенные
для быстрого перехода на другие веб-страницы.  

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


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

Информационные данные, которые содержит веб-страница, называют контентом.


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

В отличие от статичной страницы динамическая веб-страница сгенерирована программно.


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

Сегодня наиболее распространены следующие технологии, применяемые для


создания динамических страниц:

- Java Servlet и JSP, используемые для серверов Tomcat, JBoss, Apache под управлением
различных операционных систем;

- РНР, применяемые для серверов Apache и многих других, находящихся под управлением
GNU/Linux и других UNIX-подобных операционных систем;

- ASP.NET, используемые для серверов Microsoft Windows, под управлением IIS.

На форуме Searchengines есть полезная статья, которая рассказывает о том, как заставить
поисковые системы правильно индексировать генерируемые страницы сайта.
 

Вам также может понравиться