当前位置: 首页 > 面试题库 >

在PHP上使用模板

林修真
2023-03-14
问题内容

我为我的网站创建了一个模板文件…

<!-- 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;
}

?>


 类似资料:
  • 我试图在OpenSUSE 42.3上安装带有PHP-FPM 7的OCI8,但扩展没有加载。 我安装了oracle-instantclient12。2-basic和oracle-InstantClient 12。2-devel和RPM 在日志中,有下一个错误: 此外,我尝试了不同的解决方案,但没有任何效果: 选项1:我在文件/etc/sysconfic/apache2中添加了以下几行,并重新启动了服

  • 问题内容: 我正在使用html,css,flask和jinja2创建网站。 我有一个在Flask服务器上工作的页面,显示了按钮和标签等,但是我没有加载CSS样式表。 我如何将样式表链接到jinja2模板。我在互联网上四处张望,但找不到答案。 这是css样式表链接;我应该更改此代码还是python代码? 这是我的烧瓶代码: 这是文件的位置: 问题答案: 所有公共文件(未处理的文件,例如模板或py​​

  • 问题内容: 为什么要在PHP中使用模板系统? 我的问题背后的原因是:PHP本身是功能丰富的模板系统,为什么要安装另一个模板引擎? 到目前为止,我发现的仅有的两个专业人士是: 语法更简洁(有时) 模板引擎通常不足以实现业务逻辑,因此会迫使您分离关注点。使用PHP进行模板化可以吸引您了解模板化原理,并重新开始编写代码。 …与利弊相比,两者都可以忽略不计。 小例子: 的PHP 聪明的 我真的没有任何区别

  • 在模板中使用PHP语法: 该文档正在编写中...

  • 问题内容: 我想将文件上传到给定的文件夹。 错误是: 注意:未定义的变量:第3行的C:\ wamp \ www \ sdg \ import \ ips.php中的HTTP_POST_FILES 问题答案: 以下是一种上传文件的方法,还有许多其他方法。 正如@nordenheim所说,自PHP 4.1.0起已弃用,因此不建议使用。 PHP代码(upload.php) HTML代码启动功能 希望这可

  • 我已经用在我的机器上安装了和。当我在终端中点击时,它返回: PHP7.0。4-7ubuntu2。1(cli)(NTS)版权所有(c)1997-2016 PHP Group Zend Engine v3。0.0,版权所有(c)1998-2016 Zend Technologies与Zend OPcache v7。0.6-dev,版权所有(c)1999-2016,由Zend Technologies出