Я видел множество сайтов с одним файлом php (или без расширения файла) и несколькими страницами. Примером может быть: website.com/page.php?id=4, где содержимое страницы будет отличаться, когда существует другой номер идентификатора (вместо 4 - например, 7).
Пример реальной жизни - это игровой сайт, где название и игровой объект меняются по мере изменения номера идентификатора - вы можете увидеть это здесь или здесь:
Как вы можете видеть - названия игр и изменения игры.
Также я уверен, что вы поймете, что даже YouTube может это сделать: youtube.com/watch?v=610XM39EE1o - другое название, видео, описание, комментарии и т.д. Youtube.com/watch?v=LnUGl_A1cYA - другое название видео, видео, описание, комментарии и т.д.
Как люди это делают? Если они используют базу данных, они хранят там код WHOLE html (например, перейдите по одной из этих ссылок на YouTube, щелкните правой кнопкой мыши и выберите "источник просмотра") - или они назначают его другой странице (например, page.php? Id = 1 будет извлекать контент из /files/pages/1.php), но это было бы плохо при хранении и совершенно бессмысленно, и если это так, то его форумы должны вводить в заблуждение, если они могут иметь что-то вроде showtopic.php? Id = 1 701 & showpost = 21.
КАК это сделано? Пожалуйста, не запрашивайте код, который я пытался использовать, потому что я не знаю, с чего начать !.
Заранее благодарим за любые ответы! И извините, если это возможный дубликат всего - я не понимаю половину языка, который они используют на ответах здесь вообще!
У вас в основном есть одна страница или несколько страниц, отображающих контент в шаблоне. Шаблон не изменяется, но содержимое внутри шаблона (соответствует параметрам в 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>
Существует множество способов организовать ваши файлы, чтобы упростить их поддержку, но это основная идея.
Ответ господина Мартина - хороший, но я хотел немного рассказать. Обратите внимание, что это объяснение должно быть чисто концептуальным - приведенный код просто для иллюстрации и не должен восприниматься как надлежащий или даже рабочий, метод кодирования.
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
в URL- myblog.php
. Он использует этот id
для захвата соответствующей статьи из articles
таблицы базы данных. Предположим, что мы показываем статью с id=1
, поэтому URL-адрес 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 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
статьи, которую вы хотите отобразить, и заполнения соответствующих областей.
id=xxx
, лучше использоватьmysqli_
с подготовленными утверждениями или PDO, если вы хотите продолжить свое исследование.