一个文件多页?

时间:2014-05-05 21:04:13

标签: php html file get

我已经看到大量网站有一个php文件(或没有扩展名文件)和多个页面。 一个例子是:website.com / page.php?id = 4当页面内容不同时,如果有不同的ID号(而不是4 - 例如7),那么页面内容会有所不同。

现实生活中的一个例子是游戏网站,其中标题和游戏对象随着ID号的变化而变化 - 您可以看到herehere

正如你所看到的 - 游戏标题和游戏变化。

此外,我确定您甚至可以意识到YouTube可以执行此操作: youtube.com/watch?v=610XM39EE1o - 不同的视频标题,视频,说明,评论等。 youtube.com/watch?v=LnUGl_A1cYA - 不同的视频标题,视频,说明,评论等。

人们如何做到这一点?如果他们使用数据库,他们会在那里存储WHOLE html代码(即,在其中一个YouTube链接上,右键单击并选择“查看源代码”) - 或者将它们分配给另一个页面(即页面) .php?id = 1会从/files/pages/1.php中检索内容 - 但这在存储上会很糟糕而且毫无意义,如果这就是它的完成方式,那么论坛必须让人感到困惑,如果它们可以有像showtopic这样的东西.PHP ID = 1701&安培;。showpost = 21

这是怎么做到的?请不要申请我尝试使用的代码,因为我不知道从哪里开始!。

提前感谢您的任何答案!如果这可能与任何内容重复,我很抱歉 - 无论如何我都不会理解他们在这里使用答案的一半语言!

2 个答案:

答案 0 :(得分:2)

您基本上只有一个页面,或几个显示模板内容的页面。模板不会更改,但模板中的内容会更改(对应于URL中的参数)。

伪代码:

<?php

$id = isset($_GET['id']) && is_valid_id($_GET['id']) ? $_GET['id'] : null;
if (!isset($id)) {
    // 404!
}

// get data
$sql = "SELECT * FROM forum WHERE id = $id";
// etc...
?>

// display HTML
<p>Welcome to forum: <?php echo $result['title']; ?></p>

有许多不同的方法来整理文件以使其更易于维护,但这是基本的想法。

答案 1 :(得分:0)

马丁先生的答案很好,但我想详细说明一下。请注意,此解释纯粹是概念性的 - 显示的代码仅用于说明,不应视为正确的,甚至是工作的编码技术。

html不存储在数据库中 - 存储html将包含的数据。我们假设您有一个非常基本的博客,其中每个页面都是myblog.php?post=id,其中id是代表该特定博客文章的某个数字。在数据库中,您可能有一个表:

Table: articles
-------------------------------------------------------------------------
| ID       |    Title         |    Content                              |
======================================================================= |
| 1        | My First Article |  This is a story about...blah blah blah |
| 2        | Another Article  |  Blah blah blah story content here      |
| ...      |  ...             |  ....                                   |
| 56       | My 56th Article! |  Here is a great story about blah blah  |
-------------------------------------------------------------------------

然后,您有一个php页面myblog.php,用于检查网址中的id。它使用id从数据库表articles中获取相应的文章。我们假设我们正在使用id=1显示文章,因此网址为myblog.php?id=1

if (isset($_GET['id']))
    $id = $_GET['id'];
else die('No article id found!');

$query = "SELECT title, content FROM articles WHERE id = $id";
// use mysqli or pdo to execute this query, and you'll get an array with that article's data, in this example, article 1...

$data['title'] == 'My First Article';
$data['content'] == 'This is a story about...blah blah blah';

然后,将该数据插入用于显示任何给定文章的html模板

<h1><?=$data['title']?></h1>
<p><?=$data['content']?></p>

所以你看,每篇文章都会有一个标题来显示标题<h1>,以及一个显示文章内容<p>的区域。 myblog.php与每篇文章的布局相同 - 它具有相同的html和css - 但它取决于您想要显示的文章的id,并填写适当的区域。