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

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

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

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

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

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

Пример в БД
5c9a5acfec496366572882.jpeg
  • Вопрос задан
  • 194 просмотра
Решения вопроса 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.

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
25 апр. 2024, в 14:44
10000 руб./за проект
25 апр. 2024, в 14:44
250 руб./в час