在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”);

在模板文件上…这时出现错误…例如此连接变量是什么,此连接字符串是什么…等等。它无法到达连接字符串…

顺便说一句,我使用另一个外部连接,如:

<?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的位置,其中我包含了文件,但没有给出任何内容。

回答:

这会将页面分为两个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

回到顶部