Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Вариант первой из обещаных статей  (Прочитано 39571 раз)
0 Пользователей и 10 Гостей смотрят эту тему.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« : 18-10-2004 09:17 » 

Создание динамического веб-сайта, с использованием ПХП(часть первая).

В этой статье я опишу способ создания простейшего сайта с использованием скриптового языка программирования ПХП. В чём же преимущество этого способа перед обыкновенным созданием статических ХТМЛ страниц ? А вот в чём :

ХТМЛ
В ХТМЛ страницах есть много элементов, которые одинаковы на всех страницах. Например "шапка"(хедер) и низ(футер), а также пункты меню и т.д. Поэтому при увеличении количества статических ХТМЛ страниц, соответственно в каждой из них нужно копировать повторяющиеся элементы, что затрудняет и увеличивает расход времени на внесение изменений в какой-нибудь из повторяющихся элементов, потому что эти изменения надо вносить во все имеющиеся статические страницы.

ПХП
В ПХП для этого можно просто отделить все повторяющиеся элементы дизайна в отдельные файлы, что существенно облегчает редактирование и внесение изменений, ведь придётся отредактировать нужный элемент дизайна всего один раз!

Для начала, сделаем простенький ХТМЛ код для того, чтобы продемонстрировать то что описано выше.
index.html
Код:
<html>
<head>
<meta http-equiv="Content type" content="text/html; charset=windows-1251">
<title>::: PHP Site :::</title>
</head>
<body topmargin="0" leftmargin="0" bottommargin="0" rightmargin="0" bgcolor="#EFEFEF">
<table width="100%" border="0" cellpadding="2" cellspacing="2">
<tr><td width="100%" align="center" colspan="2">LOGO + BANNER</td></tr>
<tr>
  <td width="40%" align="center" valign="top">MENU</td>
  <td width="60%" align="center" valign="top">DATA</td>
</tr>
<tr><td width="100%" align="center" valign="middle" colspan="2">FOOTER</td></tr>
</table>
</body>
</html>

А теперь отделим редко изменяющиеся части дизайна в отдельные ПХП файлы :
так как часть шапка в нашем случае не изменяется, то и вынесем её в отдельный файл также.
shapka.php
Код:
<html>
<head>
<meta http-equiv="Content type" content="text/html; charset=windows-1251">
<title>::: PHP Site :::</title>
</head>
<body topmargin="0" leftmargin="0" bottommargin="0" rightmargin="0" bgcolor="#EFEFEF">
header.php
Код:
<?php
print 
"LOGO + BANNER";
?>

menu.php
Код:
<?php
print 
"MENU";
?>

data.php
Код:
<?php
print 
"DATA";
?>

footer.php
Код:
<?php
print 
"FOOTER";
?>


Далее, соответственно переименуем наш index.html в index.php и перепишем так :
Код:
<?php require_once("shapka.php"); ?>
<table width="100%" border="0" cellpadding="2" cellspacing="2">
<tr><td width="100%" align="center" colspan="2"><?php require_once("header.php"); ?></td></tr>
<tr>
  <td width="40%" align="center" valign="top"><?php require_once("menu.php"); ?></td>
  <td width="60%" align="center" valign="top"><?php require_once("data.php"); ?></td>
</tr>
<tr><td width="100%" align="center" valign="middle" colspan="2"><?php require_once("footer.php"); ?></td></tr>
</table>
</body>
</html>

В итоге получаем то что и требовалось. Если надо изменить какой то пункт меню, то изменяем его ОДИН раз в файле menu.php, соответственно то же самое и с другими файлами.

Так в чём же всётаки динамичность ? А вот в чём : теперь, если нам нужно выводить в части DATA различную информацию, то нам не надо заново создавать новый файл с полностью тем же дизайном что и был. Теперь нас волнует только изменяющаяся часть. Для этого сделаем простенький "движок", который и даст нам "динамичность".

Отредактируем файл menu.php, и добавим туда несколько пунктов меню :
menu.php
Код:
<table width="100%" border="0" cellpadding="2" cellspacing="2">
<tr>
   <td width="100%" bgcolor="#FFFFFF">
   <a href="index.php?action=about">О Нас</a>
   </td>
</tr>
<tr>
   <td width="100%" bgcolor="#FFFFFF">
   <a href="index.php?action=contacts">Контакты</a>
   </td>
</tr>
</table>

Поясню запись : index.php?action=contacts . Сдесь, action и будет нашей переменной, по значению которой мы и будем определять какие данные выводить в раздел DATA

Теперь соответственно перепишем файл data.php так, чтобы по нажатию на нужный пункт меню выводились нужные данные :
data.php
Код:
<?php
switch($_GET[&#39;action&#39;]) { //получаем значение переменной action
   
case "about" :
      require_once(
"about.php"); // выводим данные О Нас
   
break;
   case 
"contacts" :
      require_once(
"contacts.php"); // выводим данные Контакты
   
break;
   default : 
// если значение переменной action не указано, либо её не существует, либо нет искомого значения
      
print "Данных нет";
   break;
}
?>


Теперь осталось создать файлы about.php и contacts.php с соответствующими данными.
about.php
Код:
<?php
print 
"Сдесь содержатся данные О Нас!";
?>

contacts.php
Код:
<?php
print 
"Сдесь содержатся данные Контакты!";
?>


Ну вот, мы и создали простейший динамический сайт на ПХП. В следующей статье, я покажу как это всё связать с базой данных MySQL для ещё большей автоматизации вывода данных.

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Собственно САБЖ. Посмотрите и скажите достойно ли это называться вводной статьёй ? Если да, то поместим в раздел Статьи.
« Последнее редактирование: 19-12-2007 19:24 от Алексей1153++ » Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #1 : 18-10-2004 09:45 » 

ИМХО вполне достойно. Надо продвигать эту тему, а то мы ее совсем забросили....
Записан

А птичку нашу прошу не обижать!!!
Серж
Гость
« Ответ #2 : 18-10-2004 09:55 » 

MOPO3, а ты не хочешь предварить курс предисловием или введением,
или кратким обзором, какие средства существуют для разработки сайтов, и почему выбран именно PHP, а не ASP, ASP.NET, продукты Macromedia  и т.п.
А потом уже собственно про PHP. Более уместным названием для данной главы было бы, по моему мнению, "Препроцессорные возможности PHP", под динамическими свойствами, по-моему, понимается нечто другое, хотя может быть, я и ошибаюсь. А для второй, после вводной, очень достойная статья.
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #3 : 18-10-2004 11:13 » 

Серж, Нет, не хочу Улыбаюсь Не стоит задача так Улыбаюсь  То что ты предлагаеш - это отдельная обобщённая статья. Тем более что мой опыт с ASP.NET ограничивается чуть ли не "Здравствуй Мир!".
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 18-10-2004 11:14 » 

Серж, вот не надо о достоинствах и сравнениях - на защите дипломов слышал - очень вымученно выглядит.

MOPO3, всё это хорошо, но может начать лучше с самого языка... что собой представляет интерпретатор, как оно работает (то, что на лету преобразует код php в чмстый html, который уже выдаётся клиенту), потом основные конструкции языка и общая структура php-скрипта (что он с заголовка начинается, как код php от кода html отличается и т.п.) и только потом уже о методах проектирования в вебе вообще и с примерами.

Я, например, о php очень смутное представление имею именно как о языке, о его синтаксисе и всяких организационных моментах. Короче говоря, хотелось бы видеть "Hello world!", под которым понимается не только print("Hello world!");, но и как создать, куда загрузить, как запустить на исполнение и т.п.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #5 : 18-10-2004 11:27 » 

dimka, загляни в раздел "Статьи", там есть пара моих статей на тему ПХП, а в частности на тему : основные конструкции языка.

Да и есть ли смысл писать о том что такое интерпретатор и так далее ? Ведь ничего нового я не смогу написать, а всё это уже валом лежит в интернете.

ЗЫ. Ну ежели найдутся ещё желающие, тогда я обещаю над этим подумать.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #6 : 18-10-2004 11:30 » 

Я согласен с МОРОЗом - всего валом, а тут концептуальная статья....
Записан

А птичку нашу прошу не обижать!!!
Серж
Гость
« Ответ #7 : 18-10-2004 11:48 » 

MOPO3, я не специалист в сайтоводстве, а всегда хочется попробовать, хотя и некогда, поэтому и интересно, почему народ пишет на PHP, а не на Pitone c Zopoм и наоборот. Хотя понимаю, что для развитого инструментария, это скорее вопрос вкуса или привычки.
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #8 : 18-10-2004 11:57 » 

Цитата: Серж
Хотя понимаю, что для развитого инструментария, это скорее вопрос вкуса или привычки.


Ты абсолютно прав. ИМХО я думаю что ПХП выбирают чаще всего из за простоты языка и быстроте обучения ему. На сегодняшний день, ПХП обладает огромным набором функций для работы практически во всех сферах веб строительства.

ЗЫ. Когда то я писал и на АСП и на Колд Фьюжене, но ПХП меня увлёк гораздо сильнее.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Lex
Специалист

ru
Offline Offline

WWW
« Ответ #9 : 18-10-2004 14:18 » 

Вполне приемлимая первая глава какой-нить большой книги Улыбаюсь

ДЛя большей наглядности я бы добавил пример из 3-4 страниц на голом  хтмл и то же самое в динамическом варианте. А в конце задание добавить еще один пунк меню в оба варианта. Или поменять шапку.
Записан

Megabyte be with you!
Jarlyk
Помогающий

ee
Offline Offline

« Ответ #10 : 18-10-2004 17:40 » 

П-моему это самая что ни есть лучшая статья. Даже я, почти ничего не смыслящий в РНР, понял =)
Записан

Бедные маленькие мышки плакали и кололись,
но все равно продолжали жрать кактус.
Jarlyk
Помогающий

ee
Offline Offline

« Ответ #11 : 18-10-2004 19:02 » 

только один вопрос - почему-то когда я пытаюсь писать содержание на русском, то потом вместо русских букв на сайте отображаются вопросительные знаки. В чем дело?
Записан

Бедные маленькие мышки плакали и кололись,
но все равно продолжали жрать кактус.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 18-10-2004 19:26 » 

MOPO3, маленькая поправочка:
Цитата
ХТМЛ
В ХТМЛ страницах есть много элементов, которые одинаковы на всех страницах. Например "шапка"(хедер) и низ(футер), а также пункты меню и т.д. Поэтому при увеличении количества статических ХТМЛ страниц, соответственно в каждой из них нужно копировать повторяющиеся элементы, что затрудняет и увеличивает расход времени на внесение изменений в какой-нибудь из повторяющихся элементов, потому что эти изменения надо вносить во все имеющиеся статические страницы.
Есть такая штука, если не ошибаюсь называется, SSI, - позволяет, поставив определенного вида комментарий в странице, при запросе браузер сканирует страницу и подменяет эти комментарии соотв. файлами.
PHP, все таки, нечто больше, чем подстановка header/footer. Правильнее было сказать, что он позволяет динамически создать (или заполнять) страницу.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #13 : 18-10-2004 19:27 » 

Jarlyk, не забывай прописывать
Код:

<head><meta http-equiv="Content type" content="text/html; charset=windows-1251"></head>
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #14 : 18-10-2004 19:32 » 

Lex, дополню Улыбаюсь
RXL, ну статья расчитана в принципе на чайников, и не стоит ИМХО забивать её терминами типа SSI Ага Приму к сведению твоё замечание и перепишу эту часть статьи.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Lex
Специалист

ru
Offline Offline

WWW
« Ответ #15 : 18-10-2004 21:13 » 

Цитата

Есть такая штука, если не ошибаюсь называется, SSI, - позволяет, поставив определенного вида комментарий в странице, при запросе браузер сканирует страницу и подменяет эти комментарии соотв. файлами.
PHP, все таки, нечто больше, чем подстановка header/footer. Правильнее было сказать, что он позволяет динамически создать (или заполнять) страницу.


RXL, почти все что писал МОРОЗ можно и на SSI сделать и будет работать. На сколько я понял МОРОЗ, он пытался показать сам принцип построения сайта, а не конкретную реализацию на PHP.
Записан

Megabyte be with you!
Jarlyk
Помогающий

ee
Offline Offline

« Ответ #16 : 19-10-2004 03:23 » 

Блин, все ясно, просто Dreamweawer почему-то не хочет на русском сохранять текст. Придется опять в старый добрый блокнот переходить...
Записан

Бедные маленькие мышки плакали и кололись,
но все равно продолжали жрать кактус.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #17 : 19-10-2004 04:31 » new

Lex, да, именно сам принцип построения сайта, а точнее один из возможных вариантов.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #18 : 19-10-2004 04:32 » 

Jarlyk, Dreamweawer прекрасно должен понимать русский. Копайся в настройках.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Jarlyk
Помогающий

ee
Offline Offline

« Ответ #19 : 19-10-2004 04:46 » 

Буду копаться...  Он при сохранении почему-то русский в вопросы переводит.
Записан

Бедные маленькие мышки плакали и кололись,
но все равно продолжали жрать кактус.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #20 : 19-10-2004 05:17 » 

Jarlyk, посмотри в настройках редактора, в какой кодировке он сохраняет документы. Такая фишка должна быть полюбому где-нибудь в опциях
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Void
Гость
« Ответ #21 : 17-12-2004 05:02 » 

Нормальная статья.
Напиши еще как это внедряется в шаблоны.
И засилье новоиспеченных веб дизайнеров потопит интернет
новыми сайтами.

А еще неплохо было бы расписать как нормально обустроить
footer и header на тему размещения кодов ротации банеров.
Думаю это лучше размещать в отдельных файлах.

Прикрутить редактор содержимого, чтобы уже и править на страничке.
Что с глобалными переменными типа $copyright="Co. Mega Vasia Pupkin"  чтобы можно было вызывать на страницах и в статьях.
Наверное тоже в отдельный файл? Типа config.php
Это мы плавно подходим к написанию простой CMS.
Записан
Jarlyk
Помогающий

ee
Offline Offline

« Ответ #22 : 19-12-2004 21:34 » 

кстати, че-то не видно второй статьи...  Улыбаюсь
Записан

Бедные маленькие мышки плакали и кололись,
но все равно продолжали жрать кактус.
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #23 : 20-12-2004 16:55 » 

Мороз,Просьба такая, нельзя, когда будеж писать про связь с базой данных, поподробнее пожайлуста и можно поглубже, не только начальный уровень. Просто скоро очень потребуется. Кстати когда ждать выхода.
Записан

ещё один вопрос ...
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #24 : 12-05-2005 08:30 » 

Исходя из того, что статья эта всё же пользуется каким то спросом, помещю её в раздел статей на сайте клуба.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
DET
Гость
« Ответ #25 : 10-08-2005 15:03 » 

Код:
while ($RR=mysql_fetch_array($res))
{
require_once("pages/razd.php");
}
Почему не работает конструкция такого вида?
Те, цикл не работает с функцией require_once?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #26 : 10-08-2005 16:06 » 

DET, прочти свой вопрос. Ты бы понял, о чем речь? - "не работает" - слишком растяжимое понятие.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
DET
Гость
« Ответ #27 : 10-08-2005 18:52 » 

Эта функция должна печатать значения из бд, а она печатает только первое значение, а дольше цикл не работает с этой функцией.
Те в таблице например три значения
номер 1
номер 2
номер 3
Код:
while ($RR=mysql_fetch_array($res))
{
print("$RR");
}
Выдаёт:
номер 1номер 2номер 3
а
Код:
while ($RR=mysql_fetch_array($res))
{
require_once("pages/razd.php");
}
где в razd.php
Код:
<?php
print ("$RR");
?>

выдаёт:
приме 1
а всё остального нет.
Как с этим справиться?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #28 : 10-08-2005 19:13 » 

Уже намного лучше.

Во-первых, include_once() не ф-ия - это оператор языка, хотя внешне напоминает.
Делает следующее: вставляет указанный файл в текущее место при условии, что этот файл не был подключен ранее. Чтобы файл включался более одного раза нужно использовать include().
Вот, собственно, и вся загадка.
Мой совет: читай документацию и учи английский (смысл оператора понятен и без документации).

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

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #29 : 10-08-2005 19:24 » 

В дополнение ко всему тому что тебе уже разъяснил RXL, я тебе разъясню ещё чуточку, раз у тебя проблемы с мануалом.
Привожу тебе свой дословный перевод :
require_once() - нужно_единожды(один раз!)
Надеюсь теперь понятней :
Как с этим справиться?
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines