在PHP上使用模板
我为我的网站创建了一个模板文件…
<!-- 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”);
在模板文件上…这时出现错误…例如此连接变量是什么,此连接字符串是什么…等等。它无法到达连接字符串…
顺便说一句,我使用另一个外部连接,如:
<?phpglobal $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的位置,其中我包含了文件,但没有给出任何内容。
回答:
这会将页面分为两个PHP文件:(1)第一个获取数据,(2)第二个显示数据。
获取数据时,不应打印单个字符。
如果发生某些错误,请显示错误页面。
一旦获得所有数据且没有错误-是时候添加模板了。该模板还具有两个PHP文件:该页面本身的模板和该站点中所有页面共同共享的模板。
通过以这种方式对事物进行排序,您将解决当前和将来的所有模板问题。
典型的脚本可能看起来像
<?//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;
}
?>
以上是 在PHP上使用模板 的全部内容, 来源链接: utcz.com/qa/410961.html