php - 如何使 <title> 标签动态化

标签 php mysql html dynamic title

我需要一些帮助来根据用户采取的操作生成动态网页标题页。下面的代码是我在所有页面顶部包含的代码...$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 问题。它没有像我希望的那样回答我的问题。

Similar Question

更新:我将其添加到 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 - 如何使 &lt;title&gt; 标签动态化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12232161/

相关文章:

javascript - 如何创建覆盖 div 以适合屏幕的其余部分

php - PHP 中的 MYSQL 查询匹配日期范围的记录

php - 不同日期有不同数据

php - 在 Blade 部分中未找到类 'Carbon\Carbon\Carbon'

MySQL:如何检查提供的值是数字/整数还是字母?

javascript - 如果用户更改为不同的 SVG 路径,则取消当前语音

php - 如何从 Google Analytics API 读取事件?

部署在kubernetes中的MySql服务器响应很慢

MYSQL:如果具有 OR 条件和 REGEXP 匹配

php - 如何从ajax数据发送上传pdf到服务器(使用jsPDF)