根据用户采取的操作,我需要一些帮助来生成动态网页标题页面。下面的代码是我在所有页面顶部包含的内容... $title
根据我调用的页面进行更改。
<?php
$title = "Biographies of Company Executives";
require('includes/header.php');
?>
但是,在页面的某个地方,我正在运行数据库查询以获取用户点击查看的公司主管的实际位置
我正在运行的查询示例
$bios = mysql_query( "SELECT *
FROM `comp_bios`
WHERE `comp_bios_id` = '{$id}'") or die(mysql_error());
$row = mysql_fetch_array($bios);
从上面的查询
$row[comp_bios_position]
可供页面使用。 如何在我的HTML
的标题部分$row[comp_bios_position]
中提供$title
谢谢。
在问我之前,我看到了这个问题。它并没有像我一直喜欢的那样回答我的问题。
更新:我将此添加到header.php脚本中,仍然无法正常工作。屏幕上没有显示错误。
<title>
<?php if(isset($row['comp_bios_position'])) {
$title = $row['comp_bios_position'];}
echo $title;
?>
</title>
答案 0 :(得分:1)
您遇到的问题是由于代码的执行顺序造成的。请记住,PHP是interpreted language,这意味着变量的内容是从&#34;从上到下设置和使用的。你的脚本。简单来说,这意味着,因为您的<title>
标记(在header.php
中)出现在您的查询实际在代码主体中运行之前,标题已经在自定义标题之前设置了很久甚至被选中了。
从基本的角度来说,有两种主要方法可以解决这个问题:
1)将查询放在上面包含header.php
的行,以便在实际使用/解释变量之前选择动态标题。
2)重新考虑您的设计模式,以便在包含文件的主体中更改 变量,并且不要必须确保这样严格的顺序执行。这可以通过多种方式完成:查看output control and buffering,甚至更好,将您的逻辑与输出/表示完全分开(即MVC),这样您就可以对变量做任何您喜欢的事情,只有在此之后你的网页实际上吐了出来。
至于为什么你的更新代码不起作用,因为你可能还没有运行SELECT查询,但你正试图访问它返回的$ row对象。基本上,您无法访问查询结果,因为 - 在代码中 - 查询还没有发生!
祝你好运!答案 1 :(得分:0)
我在评论中的回答仍然有效,将选择部分置于require
:
<?php
//Do all the selects:
$bios = mysql_query( "SELECT *
FROM `comp_bios`
WHERE `comp_bios_id` = '{$id}'") or die(mysql_error());
$row = mysql_fetch_array($bios);
//Use this how ever you want: $row[comp_bios_position]
$title = "Biographies of Company Executives : " . $row[comp_bios_position];
require('includes/header.php');
?>
您将在$title
header.php