Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Генерируем страницы из базы данных и пишем в HTML-файл?
 
 автор: Boris   (19.04.2006 в 07:24)   письмо автору
 
 

Доброго всем!
Есть мысли сделать CMS, похожую на описанну в книге PHP5 - практика создания web сайтов.
Но я хочу чтобы страница
не генерировалась на лету в браузере, а сохранялась в HTML-файл на сервере.

Можно ли это сделать средствами PHP?
Буду признателен за рекомендации к действию. За что зацепиться?

   
 
 автор: Радосвет   (19.04.2006 в 07:37)   письмо автору
 
   для: Boris   (19.04.2006 в 07:24)
 

Интересный вопрос, присоединяюсь! Интересно, в какой момент будет создаваться эта html-страница?

   
 
 автор: Boris   (19.04.2006 в 07:50)   письмо автору
 
   для: Радосвет   (19.04.2006 в 07:37)
 

После того, как я добавлю структурные блоки страниц (параграф, картинка, ссылка, заголовок - ну как в вышеописанной книге), нажимаю кнопку "создать страницу" и создается html - файл.
Для повторного редактирования этой страницы, вызывается редактор (в нем изменятся/добавляются составные блоки страницы (как при создании), порядок их следования и т.д. и по завершении - перезаписывается HTML - файл этой страницы.

   
 
 автор: Радосвет   (19.04.2006 в 09:01)   письмо автору
 
   для: Boris   (19.04.2006 в 07:50)
 

И ещё нужна функция, чтобы генерировала автоматически ссылки и вместо articles/index.php?id_article=1 показывала файл из папки articles/(id раздела или его имя латинскими буквами)/1.html , либо так: articles/(id раздела)/(имя раздела латинскими буквами)001.html

Вот так в идеале я хотел бы получить... Но пока кроме mod_rewrite ничего в голову не приходит...

   
 
 автор: Boris   (19.04.2006 в 09:05)   письмо автору
 
   для: Радосвет   (19.04.2006 в 09:01)
 

Зачем?
Просто в БД будет содержаться название файлов HTML и соответствующие им пункты меню (Товары - goods.html, Главная - index.html, Контакты - kontakt.html)
А скрипт отображения меню будет инклюдится (простите за сленг) в каждую HTML - страницу.

   
 
 автор: Радосвет   (19.04.2006 в 09:23)   письмо автору
 
   для: Boris   (19.04.2006 в 09:05)
 

А эти названия в базу ручками заносить? Или через форму добавления раздела (вставить дополнительное поле name, в котором прописывать эти goods.html и index.html ?

Ну и опять же, хранятся в базе эти названия, а CMS динамически генерирует список именно в виде

echo "<li><font id=idlinks><a href=http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?id_article=".$articles['id_article'].">".$articles['name']."</a></font><br>".

что выдаст список с адресами ./article/index.php?id_article=(*)
Свою проблему я изложил в теме по ссылке ниже:

http://softtime.ru/forum/read.php?id_forum=1&id_theme=16162&page=1

   
 
 автор: Boris   (19.04.2006 в 09:43)   письмо автору
 
   для: Радосвет   (19.04.2006 в 09:23)
 

Ну почти ручками.
алгоритм создания новой страницы на сайте:
1). вводим имя будущего файла
2). вводим соответствующее название страницы для отображения в меню и выбираем страницу - родитель( например для станицы Пылесосы, родителем будет страница Товары, т.е. будет многоуровневое меню)
3). непосредственно создание страницы из заготовок, как в книге
4). сохранение в БД этих кусочков, генерирование и запись HTML - файла на сервер

   
 
 автор: Gnusmas   (19.04.2006 в 15:22)   письмо автору
 
   для: Boris   (19.04.2006 в 09:43)
 

Здравствуйте,
Вот вроде то что Вам нужно


<?php
$filename 
"$pagename.html"//Имя файла
if (!file_exists($filename)) {
touch($filename);
 
chmod($filename,0666);// Устанавливаем CHMOD на страницу
}
//Дизайн страници которую создаёш
$string "<HTML>
<title>
$pagename-$textpage</title> 
$pagename-$textpage
</body>
</HTML>"
;
$file fopen("$filename","w");
fputs($file,$string);
fclose($file);
}
?>
<form method="POST" action="code.php">
Имя страници:<p><input type="text" name="pagename" size="20"> </p>
Текст внутри страници: <p><textarea method="POST" name="textpage"  rows="15" cols="80"></textarea> </p>
        <p><input type="submit" value="Саздать"></p>


Вот собствено и всё.
Может также сделать чтоб страници создавались в нужном каталоге, для этого надо строчку


$filename = "$pagename.html"; //Имя файла


изменить на


$filename = "catalog/$pagename.html"; //Имя файла

   
 
 автор: boris   (19.04.2006 в 15:56)   письмо автору
 
   для: Gnusmas   (19.04.2006 в 15:22)
 

Спасибо за отклик!
Насколько я понял, этот скрипт создает Html - файл из того, что я ввожу в поле формы...
А как быть когда имеется обработчик БД, который формирует html страницу (со своей логикой и запросами к MySQL), а результат его деятельности нужно сохранить в файл?

   
 
 автор: Loki   (19.04.2006 в 18:01)   письмо автору
 
   для: boris   (19.04.2006 в 15:56)
 

На самом деле, технология довольно простая: проверяем дату последнего обновоения страницы, проверяем наличие сгенерированного файла. Если есть более свежие данные - генерируем страницу и сохраняем ее, если нет - берем сгенерированную страницу и просто отдаем ее пользователю.

   
 
 автор: Радосвет   (19.04.2006 в 17:38)   письмо автору
 
   для: Gnusmas   (19.04.2006 в 15:22)
 

Что-то не работает та форма у меня...
И где текст обработчика формы? здесь указан файл code.php ...

   
 
 автор: Boris   (19.04.2006 в 17:49)   письмо автору
 
   для: Радосвет   (19.04.2006 в 17:38)
 

Я ее не пробовал (взял у друга комп без PHP и прочего).
Насколько я понял, обработчик выше, т.е. все в одном файле - вызывает сам себя, а code.php надо удалить.
Это пример, идея.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования