动态 php 标题取决于页面 ID 和使用 "if (isset"

dynamic php title depends on page id and using of "if (isset"

我正在尝试回显动态 php 标题取决于 seo 目的的页面 ID。

首先,我所有的页面都包含header.php

我的 header.php 就是这样开始的:

include("database.php");

//connect tables in order to echo out titles

//1- connect to categories table if isset get category_id
if (isset($_GET["category_id"])) {
$query = $handler->query("SELECT * FROM categories WHERE category_id = ".$_GET['category_id']." ");
while($r = $query->fetch()) {
  $title = $r["title"];

  }
}

//2- connect to articles table if isset get article_id
if (isset($_GET["article_id"])) {
$query = $handler->query("SELECT * FROM articles WHERE article_id = ".$_GET['article_id']." ");
while($r = $query->fetch()) {
  $title = $r["title"];

  }
}

//3- connect to users table if isset get user_id
if (isset($_GET["user_id"])) {
$query = $handler->query("SELECT * FROM users WHERE user_id = ".$_GET['user_id']." ");
while($r = $query->fetch()) {
  $title = $r["username"];

  }
}

然后我随意回应如下标题:

 <title><?php if (isset($_GET["category_id"])) { echo $title; echo " |"; } 
              if (isset($_GET["article_id"])) { echo $title; echo " |"; } 
              if (isset($_GET["user_id"])) { echo $title; echo " |"; } ?> mypage.com</title>

*

这是结果:

category.php?category_id=1 页面标题是:"Category 1 | mypage.com"

article.php?article_id=1 页面标题是:"Article 1 | mypage.com"

users.php?user_id=1 页面标题是:"Username 1 | mypage.com"

*

我的问题是,我想知道我是否用这种结构过度加载了数据库?

当我在 users.php?user_id=1 时 php 是否仍然执行此代码?:

//1- connect to categories table if isset get category_id
if (isset($_GET["category_id"])) {
$query = $handler->query("SELECT * FROM categories WHERE category_id = ".$_GET['category_id']." ");
while($r = $query->fetch()) {
  $title = $r["title"];

  }
}

或者因为我一开始使用的是 if (isset($_GET["category_id"])) {,所以我没有连接到数据库并且数据库没有过载?

看起来还可以,但是为了摆脱太多的条件,我建议换一种方式。在每个页面上生成标题,将其分配给一个变量(在包含您的 header.php 之前),然后简单地回显标题。

这是一个例子:

category.php:

<?php
    require_once"database.php";
    if(isset($_GET["category_id"])) {
        $query = $handler->query("SELECT * FROM categories WHERE category_id = ".$_GET['category_id']." ");
        while($r = $query->fetch()) {
        $title = $r["title"];
        }
    } else {
        // redirect somewhere else
    }
    include"header.php";
?>
    <body>
        Content goes here
    </body>
</html>

header.php:

<!DOCTYPE html>
<html>
    <head>
        <title><?php echo $title;?></title>
    </head>

对其他文件也做同样的事情。即您的 users.php 文件将如下所示:

<?php
    require_once"database.php";
    if (isset($_GET["user_id"])) {
        $query = $handler->query("SELECT * FROM users WHERE user_id = ".$_GET['user_id']." ");
        while($r = $query->fetch()) {
            $title = $r["username"];
        }
    } else {
        // redirect somewhere else
    }
    include"header.php";
?>
    <body>
        Content goes here
    </body>
</html>

header.php 文件将保持不变。这肯定会节省您的一些服务器资源,因为服务器不需要查找多个条件并且代码也变得更清晰。