2010-01-08 29 views
1

的header.php動態標題最好的方式?

<?php 

$conn = mysql_connect('localhost', '-', '-'); 
@mysql_select_db('accmaker', $conn) or die("Unable to select database"); 

?> 

<html> 
<head> 
<title>Mysite.com - <?php isset($pageTitle) ? $pageTitle : 'Home'; ?></title> 
</head> 
<body> 

profile.php

require 'header.php'; 

$q = mysql_query("SELECT * FROM users WHERE username = '$username'"); 

$r = mysql_fetch_assoc($q); 

$pageTitle = "Profile of $r[username]"; 

我想你明白我想要什麼

我不能包括的header.php查詢後,因爲我不會連接到MySQL

你是否建議除了在每一頁上都有連接片段

回答

4

我有什麼建議? MVC(模型 - 視圖 - 控制器)框架,如Kohana。如果你不想去的路線,打破你的連接關到自己的文件:

<?php 

    # connect 
    require_once("connection.php"); 

    # load page data array 
    require_once("page-data.php"); 

?> 
... 
<title><?php print $page["title"]; ?></title> 

注意我這裏怎麼有一個$page陣列的數據。這在稍後調試時會有幫助,而不是有多個獨立變量。隨着頁面數據的數組,我可以快速地看到所有的任何給定的頁面佈局的信息:

print "<pre>"; 
print_r($page); 
print "</pre>"; 

確定您的標題應在page-data.php來完成,而不是在頁面上:

$config["site_name"] = "Bob's Shoe Mart"; 
$config["admin_email"] = "[email protected]"; 

/* query to get $row['title'] */ 

$page["title"] = (!empty($row["title"])) ? $row["title"] : $config["site_name"] ; 
+0

呀,勢必要找到一個很好的MVC框架......但如果你堅持工作的遺留系統上......嗯,你只是運氣不好的時候。 – 2010-01-08 15:22:40

+0

要添加的另一件事(框架已經這樣做):緩衝你的輸出。所以,腳本在輸出開始之前結束。 因此,您不會有0.5s或更多的數據庫連接打開客戶端需要下載頁面。 – Arkh 2010-01-08 15:53:48

0

不確定「最佳」解決方案,但我們目前包含多個文件。我們有連接到數據庫的「utilities.php」文件,並提供了一些很好的功能。然後,我們設置頁面標題,然後包含佈局部分「top.php」。除了帶有一點PHP的HTML以外,它沒有任何東西用於顯示目的。看起來是這樣的:

include "utilities.php"; 
$pageTitle = "Welcome"; 

include "top.php"; 
相關問題