我需要一些帮助来根据用户采取的操作生成动态网页标题页。下面的代码是我在所有页面顶部包含的代码...$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]
可供页面使用。
如何使 $row[comp_bios_position]
可用于我的 HTML 头部部分的 $title
谢谢。
在问我之前,我看到了这个 SO 问题。它没有像我希望的那样回答我的问题。
更新:我将其添加到 header.php 脚本中,但仍然无法正常工作。屏幕上没有显示错误。
<title>
<?php if(isset($row['comp_bios_position'])) {
$title = $row['comp_bios_position'];}
echo $title;
?>
</title>
最佳答案
您遇到的问题是由代码的执行顺序引起的。请记住,PHP 是一个 interpreted language。 ,这意味着变量的内容是从脚本的“自上而下”设置和使用的。用简单的英语来说,这意味着因为你的 <title>
标记(在 header.php
中)出现在您的查询在代码主体中实际运行之前,标题在自定义标题被选中之前就已经设置好了。
基本上,您可以采用两种主要方法来解决此问题:
1) 将查询放在包含 header.php
的行上方这样就可以在实际使用/解释变量之前选择您的动态标题。
2) 重新考虑您的设计模式,这样变量可以在被包含文件的主体中被改变,并且您不必确保如此严格的执行顺序.这可以通过多种方式完成:查看 output control and buffering ,甚至更好,将您的逻辑与输出/表示完全分离(即 MVC),这样您就可以对变量做任何您喜欢的事情,只有在那之后您的页面才会真正吐出。
至于为什么更新后的代码不起作用,那是因为您可能还没有运行 SELECT 查询,但您正在尝试访问它返回的 $row 对象。基本上,您无法访问查询结果,因为 - 在代码中 - 查询甚至还没有发生!
祝你好运!
关于php - 如何使 <title> 标签动态化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12232161/