gpt4 book ai didi

php - 在 PHP 上使用模板

转载 作者:行者123 更新时间:2023-12-03 19:37:43 25 4
gpt4 key购买 nike

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

<!-- 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 文件:页面本身的模板和站点中所有页面共享的模板。

通过以这种方式对事物进行排序,您将解决所有当前和 future 的模板问题。

一个典型的脚本可能看起来像

<?
//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 - 在 PHP 上使用模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3988627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com