|
Программирование >> Программный интерфейс приложений
содержимое показано в следующем листинге. Во всех примерах для подключения будет использоваться база данных samp db, но функция соединения sampdbconnect () обладает возможностью подключать любую базу данных. Эта функция в случае успешного соединения возвращает идентификатор соединения, при ошибке она возвращает значение FALSE . При ошибке она не вьщает диагностического сообщения или печатает предупреждение: <?php # samp db.inc # samp db общие функции для баз данных # Подключение к серверу MySQL с помощью секретного имени # и пароля function samp db connect () { Slink = @raysql pconnect ( pit-viper.snake.net , paul , secret ); if (Slink 44 mysql select db ( saiip db )) return (Slink); return (FALSE); >? Содержимое файла samp db. inc ограничено тэгами <?php и ?> . Это сделано потому, что интерпретатор РНР начинает считывать (анализировать) включаемые файлы в режиме HTML. Без этих тэгов интерпретатор РНР разошлет файл как простой текст, не интерпретируя его как код РНР. В эти файлы можно включать литеральный HTML-код. Но если файл все же содержит РНР-код, его необходимо заключать в тэги. 4. Обратиться к файлу из сценария можно с помощью следующей строки: include ( samp db.хпс ); Когда интерпретатор РНР встречает такую строку, он ищет такой файл и считывает его содержимое. Все содержимое файла становится доступным следующим частям сценария. Создав и установив наш включаемый файл samp db.inc, мы можем модифицировать страницу Исторической Лиги , вставив включаемый файл, и подключаться к серверу MySQL с помощью вызова функции samp db connect(): <HTML> <HEAD> <TITLE>Иcтopичecкaя Лига CI11A</TITLE> </HEAD> <ВООУ> <Р>Добро пожаловать на Web-уэел Исторической Лиги США. <?pl:ip include ( samp db.inc ) ; samp db connect () or exit (); $result = mysql query { SELECT COUNT(*) FROM member ) or exit { ) ; if {$row = mysql fetch array ($result) ) echo <P>B настоящее время Историческая Лига насчитывает . $row[0] . членов ; mysql free result (Sresult); ?> </BODY></HTML> Сравнение операторов include () и require () Язык PHP имеет в своем арсенале оператор require (), который аналогичен оператору include (). Различие заключается в том, что при выполнении оператора include () файл считывается и интерпретируется при каждом вызове оператора include (). При выполнении оператора require!) файл обрабатывается только один раз (в действительности, происходит замещение оператора require () содержимым файла). Это значит, что применение оператора require о будет более эффективным, если в сценарии эта операция выполняется несколько раз. Однако если каждый раз будет считываться другой файл или есть цикл, в котором считывается набор файлов, лучше использовать оператор include (), так как это позволит присвоить имя файла переменной и потом ею пользоваться. На первый взгляд, может показаться, что во включаемьп! файл можно поместить и побольше информации. Наберитесь терпения. Файл samp db.inc может нам пригодиться также и для других функций, и мы воспользуемся им для хранения другой информации. Действительно, в этот файл даже сейчас уже можно положить другую информацию. В каждом сценарии есть достаточно много повторяющихся частей профаммного кода, таких как HTML-тэги начала и конца Сфаницы. Чтобы не писать их в каждом сценарии, напишем функции html begin() и html end(). Функция html begin() может принять несколько аргументов, определяющих титул страницы и заголовок. Вот профаммный код обеих функций: # Создать начальные тзги для страницы. При наличии # Stifle и $header, предполагается, что они содержат # любые специальные символы, закодированные в # соответствии со стандартом function html begin {Stitle, $header) { print ( <HTML>\n ); print ( <HEAD>\n ); if ($title) print ( <TITLE>Stitle</TITLE>\n ); print { </HEAD>\n ); print ( <BODY>\n ); if (Sheader) print { <H2>$header</H2>\n ); # финальные тэги HTML-страницы. function html end () { print ( </BODY></HTML>\n ); Теперь можно изменить начальную страницу следующим образом. <?php include ( samp db.inc ); $title = Историческая Лига США ; htral begin ($title, $title); ?> <P> Добро пожаловать на Web-узел Исторической Лиги США . <?php sarap db connect() or exit{); $result = raysql query { SELECT COUNT(*) FROM member ) or exit (); if {$row = mysql fetch array (Sresult)) echo <P>B настоящее время Историческая Лига насчитывает . $row[0] . членов ; raysql free result (Sresult); html end(); ?> Обратите внимание, что программный код был разбит на две части: одна с литеральным HTML-кодом. Приветственное сообщение располагается между этими частями. Использование части, генерирующей начальную и финальную части страницы, дает нам одну очень удобную возможность. Изменение кода функции позволит изменить вид заголовка и окончания всех страниц, использующих эту функцию. Любой сценарий, который использует эту функцию, будет задействован автоматически. Например, таким образом можно поместить вверху каждой Web-страницы Исторической Лиги сообщение Copyright USHL . И в этом легко может помочь такая функция, как html end (). Web-страница с простейшим запросом Сценарий, помещенный на Web-странице Исторической Лиги , запускает запрос, возвращающий одну строку. Следующий сценарий демонстрирует обработку многострочного результирующего набора. Он делает выборку и отображение содержимого таблицы member. Это аналог DBI-сценария, разработанного нами в главе 7, Профаммный интерфейс Perl APT. Поэтому назовем его dump meinbers .php. Он отличается от версии DBI тем, что предназначен для работы в Web-окружении, а не из командной строки. Поэтому он должен генерировать вывод в формате HTML, а не простую текстовую таблицу, столбцы которой разделены табуляцией. Сценарий имеет следующий вид:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |