如何使<title>标签动态</title>

时间:2012-09-01 23:10:16

标签: 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]

可供页面使用。 如何在我的HTML

的标题部分$row[comp_bios_position]中提供$title

谢谢。

在问我之前,我看到了这个问题。它并没有像我一直喜欢的那样回答我的问题。

Similar Question

更新:我将此添加到header.php脚本中,仍然无法正常工作。屏幕上没有显示错误。

<title>
      <?php if(isset($row['comp_bios_position'])) {
               $title = $row['comp_bios_position'];} 
               echo $title; 
      ?>
</title>

2 个答案:

答案 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