Привет, Гость!
home login register
[+] Купить Рекламу
Хостинг для тебя! Заходи не пожалеешь
Что мы делаем полезного на официальном сайте WAP-поддержки? Подробно ...
Вступайте в нашу группу ВКОНТАКТЕ
Поздравляем, новичка с ID:1000
Как самомусделать QR-код
IT новости: в Windows новая опасная уязвимость
Проблемы восприятия IT
Как подтвердить авторство в Google

Учебник PHP #12
<< 1 ... 3 4 5 6 >>
|

<a href="index.html.php?letter=o">0</a> |

<a href="index.html.php?letter=p">P</a> |

<a href="index.html.php?letter=q">Q</a> |

<a href="index.html.php?letter=r">R</a> |

<a href="index.html.php?letter=s">S</a> |

<a href="index.html.php?letter=t">T</a> |

<a href="index.html.php?letter=u">U</a> |

<a href="index.html.php?letter=v">V</a> |

<a href="index.html.php?letter=w">W</a> |

<a href="index.html.php?letter=x">X</a> |

<a href="index.html.php?letter=y">Y</a> |

<a href="index.html.php?letter=z">Z</a>

</td></tr>

<tr><t

bgcolor="#c0c0c0">

<b>Fries.Bobby</b>

</td></tr>

<tr><td>

<b>(212) 563-5678</b>

</td></tr>

<tr><td> "

<b>

<a href="mailto.html:bobby@fries.com">bobby@fries.com</a>

</b>

</td></tr>

<tr><td bgcolor="#c0c0c0">

<b>Frenchy.Pierre</b>

</td></tr>

<tr><td>

<b>002-(30)-09-7654321</b>

</td></tr>

<tr><td>

<b><a href = "mailto:frenchy@frenchtv.com">
frenchy@frenchtv.com</a></b>

</td></tr>

</table>

</body>

</html>

Как видно из приведенного листинга, в адресной книге хранятся записи двух лиц, фамилии которых начинаются с буквы F: Bobby Fries и Pierre Frenchy. Соответственно в таблицу вставляются данные двух записей.

Дизайнерская часть проекта адресной книги завершена, и я перехожу к роли программиста. Возможно, вас удивит тот факт, что класс tempiate. class (см. листинг 12.7) практически не изменился, если не считать появления одного нового метода — address_sql( ). Код этого метода приведен в листинге 12.11.

Листинг 12.11. Обработка данных, полученных в результате запроса

class template {

VAR $files = array( );

VAR $variab!es = array( ):

VAR $sql = array();

VAR $opening_escape - '{';

VAR $closing_escape = '}';

VAR $host = "localhost";

VAR $user = "root";

VAR $pswd = "";

VAR $db = "book";

VAR $address table = "addressbook";

function address_sql($file_id, $vanable_name, $letter) {

// Подключиться к серверу MySQL и выбрать базу данных

mysql_connect($this->host, $this->user, $this->pswd)

or die("Couldn't connect to MySQL server!");

mysql_select_db($this->db) or die('Couldn't select MySQL database!");

// Обратиться с запросом к базе данных

$query = "SELECT last_name, first_name, tel, email

FROM $this->address_table WHERE lastjiame LIKE '$letter%' ";

$result = mysql_query($query);

// Открыть файл "rows.addresses"

// и прочитать его содержимое в переменную

$fh - fopen("$variable_name", "r");

$file_contents = fread($fh, filesize("rows.addresses") ):

// Заменить имена переменных в ограничителях

// данными из базы.

while ($row = mysql_fetch_array($result)) :

$new_row = $file_contents;

$new_row=str_replace($this->opening_escape.
"last_name".$this->closing_escape.

$row["last_name"]. $new_row);

$new_row=

str_replace($th1s->opening_escape.
"first_name".$this->closing_escape.

$row["first_name"], $new_row);

$new_row=str_replace($this->opening_escape.
"telephone".$this->closing_escape.

$row["tel"], $new_row);

$new_row = str_replace($this->opening_escape.
"email".$this->closing_escape,

$row["email"],

$new_row);

// Присоединить запись к итоговой строке замены

$complete_table .= $new_row;

endwhile;

$sql_array_key = $variable_name;

$this->sql[$sql_array_key] = $complete_table;

// Включить ключ в массив variables для последующего поиска

$this->variables[$file_id][ ] = $variable_name;

// Закрыть файловый манипулятор fclose(lfh);

Комментариев, приведенных в листинге 12.11, вполне достаточно для того, чтобы вы разобрались в происходящем, однако я должен сделать несколько важных замечаний. Во-первых, обратите внимание на то, что файл rows.addresses открывается только один раз. Возможен и другой вариант — многократно открывать и закрывать файл rows.addresses, каждый раз производя замену и присоединяя его содержимое к переменной $complete_table. Впрочем, такое решение будет крайне неэффективным. Потратьте немного времени и разберитесь в том, как новые данные таблицы в цикле присоединяются к переменной $complete_table.

Второе, на что следует обратить внимание при просмотре листинга 12.11, — появление пяти новых атрибутов класса: $host, $user, $pswd, $db и $address_table. В этих атрибутах хранится информация, необходимая для сервера SQL. Полагаю, смысл каждого атрибута понятен без объяснений, а если нет — вернитесь и повторите материал главы 11.



Рис. 12.1. Страница адресной книги

Все, что осталось сделать — написать файл index.php, инициирующий обработку шаблонов, Код этого файла приведен в листинге 12.12. Если щелкнуть на одной из ссылок (index.php?letter=буква) на странице book.html (см. листинг 12.8), загружается страница index.php, которая, в свою очередь, заново строит book.html с включением новой информации.

Листинг 12.12. Обработчик шаблонов index.php

include("Listing12-11.php"); $page_title = "Address Book";

// По умолчанию загружается страница с фамилиями,

// начинающимися с буквы 'а' if (! isset($letter) ) :

$letter = "а";

endif ;

$tpl = new template;

$tpl->register_file("book", "book.html");

$tpl->register_variables("book", "page_title.letter");

$tpl ->address_sql("book", "rows.addresses", "$letter");

$tpl ->file_parser("book");

$tpl->phnt_fil("book");

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

Итоги

В этой главе была представлена концепция, особенно важная как для РНР, так и для web-программирования в целом, — применение шаблонов. Глава началась с обзора двух схем; упоминавшихся ранее, — простой замены переменных средствами РНР и логическим делением страницы при помощи включаемых файлов. Затем мы познакомились с третьей схемой применения шаблонов, позволяющей полностью отделить программирование от дизайна страницы. Оставшаяся часть главы была посвящена анализу класса, построенного для реализации шаблонов такого рода. Главу завершает пример практического использования шаблонов в адресной книге на базе Web. В частности, в этой главе рассматривались следующие темы:

для чего нужны шаблоны;
простой шаблон № 1: внедрение РНР в HTML;
простой шаблон № 2: разделение компонентов страницы при помощи включаемых файлов;
нетривиальное использование шаблонов для полного разделения программирования и дизайна;
класс для работы с шаблонами;
регистрация файлов;
регистрация переменных;
подстановка значений переменных в файл;
вывод файла в браузере;
недостатки шаблонов;
адресная книга, расширяющая стандартный класс шаблона за счет применения запросов SQL.

В следующей главе мы продолжим знакомство с разработкой динамических web-приложений. Вы узнаете, как при помощи cookie и отслеживания
Комментарии (0)
<< 1 ... 3 4 5 6 >>
Скачать Java книгу

»php/mysql/pdo/js
В библиотеку

На главную

Сообщество wap разработчиков I HwapCMS официальный сайт поддержки


RSS-лента
Генерация: 0.0073 сек.