RGameShow
@RGameShow
В поисках ответов на глупые вопросы

Как создавать страницы в MVC не создавая файлов?

Всем привет! Изучаю PHP и собственно пытаюсь сделать простой сайт на MVC.

Интересует вопрос, как сделать так что бы в БД хранились url например «contacts», и когда человек переходит по ссылки site.ru/contacts, подгружался контент в defaul-шаблоне из таблицы в БД? Хочу добиться результата на подобии WordPress, в админке редактирую, все находится в БД.

Я наверно плохо сформулировал вопрос, но я пытаюсь разобраться как сделать так чтобы выводить страницы из бд, url, контент, SEO теги и тд, а не создавать каждый раз файл contacts.php
Если не хотите давать ответ, так как тип это элементарно и т.д., киньте хотя бы ссылку где я бы мог изучить как это сделать.

P.S. Пытался гуглить, но ничего дельного в ответ не получил. Не исключено, что запрос составлял неправильно

Пример в БД
5c9a5acfec496366572882.jpeg
  • Вопрос задан
  • 195 просмотров
Решения вопроса 1
flapflapjack
@flapflapjack
на треть я прав
Между MVC и "выдавать разные страницы не создавая файлов" огромная пропасть.
Генерация динамических страниц никак не связана напрямую с MVC, нет. Это вообще основы PHP.

Вы до MVC пока не ходите, вы хотя бы в процедурном стиле научитесь программировать.

Ну а вопрос ваш связан скорее именно с роутерами:
Допустим есть у вас скрипт index.php
который выдаёт разное содержимое в зависимости от параметра $_GET['page']

<?php
include 'config.php';
$db= new PDO($dsn,$user, $pass, $opt);
$result=$db->prepare("SELECT content FROM table_name WHERE url=:url");
$result->execute(array(":url" => $_GET['page']));
$page=$result->fetchAll(PDO::FETCH_ASSOC);

print $page[0]['content'];



?>


подключаетесь к базе данных и вытаскиваете из БД нужную вам статью/страницу.

вы можете попасть на разную страницу, обращаясь к одному и тому же скрипту -index.php, но с разным параметром GET:

site.ru/index.php?page=index
site.ru/index.php?page=contacts
site.ru/index.php

Но для того, чтобы превратить URL в нормальный вид, существует понятие ЧПУ - ЧеловекоПонятныйУрл.
Для этого создается файл .htaccess (если сервер apache2)
, и например с таким содержимым:

RewriteEngine On
RewriteRule ^([^/]*)\.html$ /index.php?page=$1 [L]


Этот файл сообщает серверу, что при обращении к сайту site.ru/contacts.html вас направит на index.php?page=contacts.

В итоге мы имеем единую точку входа на сайт - index.php, как вы и хотели.

Далее тут разжёвывать не имеет смысла - это тема не для тостера, это основы основ.

Гуглите:
ЧПУ.

И только после того, как научитесь работать с .htaccess и единой точкой входа, вы можете задуматься о роутерах, MVC и т.д.

Если вас
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@sidni
Php Developer
Гуглите так "Сделать блог на php". Должно получиться
если очень в кратце (так делать нельзя, но если хочется с чего-то начать)
перенаправляете чтобы все запросы обрабатывались файлом index.php (либо htaccess либо настройками nginx)
дальше парсите содержимое $_SERVER['REQUEST_URI'] и в зависимости что у Вас получилось составляете соответствующий запрос к БД и выводите инфу
Ответ написан
@pinokio82
Если брать концепцию вкратце (схему), то:

1. С помощью ЧПУ направляем все url в index.php (через .htaccess)

2. Далее, отправляем переменную url в БД.

3. Если запись в БД присутствует, получаем всю информацию по текущей странице (тип страницы/шаблона), заголовки, метатеги, текст.

4. По типу страницы, подключаем нужный шаблон .php и выводим все наши данные. Как правило, отличаются только шаблоны page, catalog, product.

Очень упрощённая схема.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы