Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование с нуля - это совсем просто! 95) Смешивание кода HTML и PHP


Школа программирования

95) Смешивание кода HTML и PHP

Сегодня - продолжение курса по PHP. Последний выпуск о PHP был в N 92.

Условный оператор

Синтаксис условного оператора в PHP, как и других операторов этого языка, совпадает с записью, принятой в Си/Си++.

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

  if( a > b ) {
   print "<b> a больше b! </b>";
  } else {
  print "<b> a меньше или равно b! </b>";
  }

Комментарии

Комментарии в программе на PHP записываются, как и в Си, с помощью двух наклонных черт //, вся информация за которыми до конца строки считается комментариями и игнорируется.

  $x = 5; // это комментарий

Если надо выделить комментариями несколько строчек, можно воспользоваться парой условных скобок /* и */ :

  /*
  Комментарий в
  несколько строк. */

Смешивание кода HTML и PHP

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

Например, если от формы получено ненулевое значение, то надо выдать большой раздел исходной HTML-страницы, в противном случае выводится другой раздел. Если обходиться только возможностями PHP, то такая программа (вместе с формой) выглядела бы так:

Форма:

  <html><body>
  <h1>Пример </h1>
  <form action="action.php" method="POST">
  Введите число: <input type="text" name="myval">
  <input type="submit" value="Отправить">
  </form></body></html>

Сценарий:

  <html>
  <body><h1> PHP-скрипт </h1>

  <?php

  if( $_POST["myval"] == 0 ) {

  print "<p>Первый текст";

  } else {

  print "<p>Второй текст";

  }
  ?>

  </body></html>

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

Наш пример можно переписать следующим образом:

  <html>
  <body><h1> PHP-скрипт </h1>

  <?php

  if( $_POST["myval"] == 0 ) {

  ?>

  <p>Первый текст.<p>
  Здесь продолжается HTML-код, который должен быть включен в
  результирующий файл, отсылаемый браузеру, только если значение
  переменной myval равно нулю. Данный текст находится <b>вне</b>
  PHP-сценария!

  <?php

  // снова продолжаем сценарий

  // "прерванный" условный оператор действует, как и раньше:

  } else {

  ?>

  <p>Второй текст.<p>
  Включается, только если myval не равна нулю.

  <?php

  // закрывающую фигурную скобку условного оператора все равно
  необходимо сохранить для соблюдения корректности PHP-кода.

  }
  ?>

  </body></html>

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

То есть общая идея данного приема такова - если в некотором месте PHP-сценария удобнее перейти к HTML-коду, то сценарий "временно" закрывается. Но логика его выполнения не меняется!


(c) 2004-2006 Сергей Бобровский bobrovsky@russianenterprisesolutions.com

Школа программирования с нуля
Все предыдущие выпуски базового курса тут:
http://russianenterprisesolutions.com/sbo/

Дизайн рассылки: Алексей Голубев - Web-дизайн и web-программирование


В избранное