я создаю файл шаблона для моего сайта … это как:
<!-- template.php --> <?php function showheader() { ?> <head><body> <!-- some of style files and menus --> <div class="content"> <?php } ?> <?php function showfooter() { ?> </div></body></html> <?php } ?>
Я использую этот файл в качестве шаблона следующим образом:
<?php include_once("template.php"); showheader(); ?> content text or photo or ... etc. <?php showfooter(); ?>
вот и все … но если я попытаюсь использовать соединение с файлом шаблона, это испортит! Я использовал внешний файл, например:
<?php // // include_once connection file // query strings goes here // do { echo $row_table['id']; //example } while ($row_table = mysql_fetch_assoc($table)); ?>
и я использую этот файл как include_once ("filename.php"); в файле шаблона … в этот момент он дает ошибки … например, что это за переменная соединения, что это за строка соединения … и т. д. она не может достигать строк подключения …
кстати, я использую другое внешнее соединение вроде:
<?php global $hostname_conn,$database_conn,$username_conn,$password_conn,$conn; $hostname_conn = "localhost"; $database_conn = "test"; $username_conn = "****"; $password_conn = "****"; $conn = mysql_pconnect($hostname_conn, $username_conn, $password_conn) or trigger_error(mysql_error(),E_USER_ERROR); mysql_query("SET NAMES 'utf8'"); ?>
Я буду плакать! в чем проблема … и знаете ли вы другой способ использования шаблона … спасибо много …
PS: я меняю переменные на conn.php как глобальные (и он не работал), и я меняю include, include_once, require, require_once, где я включаю файлы, но ничего не дал.
Смотрите, сделайте каждый ваш скрипт из 2-х частей: получение части данных и отображение части данных.
При получении данных не нужно печатать ни одного символа.
Если произошли некоторые ошибки, отобразите страницу с ошибкой.
Как только вы получите все свои данные без ошибок, пришло время включить шаблон. Сам шаблон должен состоять из двух частей: шаблон страницы и шаблон общего сайта. Путем сортировки вещей таким образом вы решите все ваши текущие и будущие проблемы с шаблонами.
Типичный сценарий может выглядеть так:
<? //include our settings, connect to database etc. include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php'; //getting required data $DATA=dbgetarr("SELECT * FROM links"); $pagetitle = "Links to friend sites"; //etc //and then call a template: $tpl = "links.php"; include "template.php"; ?>
где template.php
– ваш основной шаблон сайта, включая общие части, такие как заголовок, нижний колонтитул, меню и т. д .:
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>My site. <?=$pagetitle?></title> </head> <body> <div id="page"> <? include $tpl ?> </div> </body> </html>
и links.php
– это фактический шаблон страницы:
<h2><?=$pagetitle?></h2> <ul> <? foreach($DATA as $row): ?> <li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li> <? endforeach ?> <ul>
простой, чистый и обслуживаемый.
settings.php содержит все общие настройки:
<?php $hostname_conn,$database_conn,$username_conn,$password_conn,$conn; $hostname_conn = "localhost"; $database_conn = "test"; $username_conn = "****"; $password_conn = "****"; $conn = mysql_connect($hostname_conn, $username_conn, $password_conn) or trigger_error(mysql_error(),E_USER_ERROR); mysql_query("SET NAMES 'utf8'") or trigger_error(mysql_error(),E_USER_ERROR); $tpl = "default.php"; $pagetitle = ""; function dbgetarr(){ $a = array(); $args = func_get_args(); $query = array_shift($args); $query = str_replace("%s","'%s'",$query); foreach ($args as $key => $val) { $args[$key] = mysql_real_escape_string($val); } $query = vsprintf($query, $args); $res = mysql_query($query); if (!$res) { trigger_error("dbget: ".mysql_error()." in ".$query); } else { while($row = mysql_fetch_assoc($res)) $a[]=$row; } return $a; } ?>