Введение - Создать блог

 

Хотел дописать свою CMS но увы дело это долгое по причине того, что постоянно придумываю что-то еще, и внедряю все новые элементы.. Боюсь что мое, так сказать, «дописывание» может никогда не закончится. Эта небольшая статья будет содержать цель, эдакий план, моего (и Вашего) проекта. Написание статей на блоге помогает мне разобраться в написанном коде, и улучшать его. Тем самым этот цикл статей мне поможет точно, возможно он и поможет Вам, ведь эти статьи можно расценивать как уроки php. Писать будем скрипт блога, то есть нарекаю этот цикл именем «создать блог с нуля»!

 

 

Во время создания скрипта блога мы будем пытаться не смешивать php код с html кодом. Я переписал код своего блога именно так, и скажу с уверенностью, что править такой сайт намного легче. Особенно если нужно сменить дизайн не трогая код.

В цикл войдут такие разделы как базовые навыки html, несколько уроков php, и само собой много много практики Улыбаюсь

Не советую пропускать ни одной из статей, начните с верстки, после почитайте материал из части «уроки php», далее изучите базовый функционал блога (Часть III и IV). Так Вы сможете понять как устроен сам движок. Уже под конец приступайте к самому сложному, это к улучшением. Приятного Вам изучения Улыбаюсь

Вот ссылки на уже написанные статьи:

 

Часть I - Получаем начальные навыки html и css, верстка

 

 

Часть II - Получаем начальные навыки php, уроки php

 

 

Часть III - Разработка пользовательской части блога

 

 

Часть IV - Разработка админ панели блога

 

 

Часть V - Улучшение

 

 

Приложение

 

 

Если у Вас есть какие либо идеи по улучшению проекта ( какая то интересная «фишка» ), с удовольствием выслушаю, и если мне ваша идея по силам, то обязательно опубликую ее на блоге!

 

Возможно Вам будут интересны следующие заметки

Комментарии (107)

Ваше имя *
Сайт
Ваш E-mail *
Ваше сообщение *
 
Отправить комментарий
Илья, 12 Февраля 2012 г. 21:50 пишет:
Читатель
Идея №1.

Вы не представляете, как меня в последнее время раздражают ссылки вида /index.php?blog=2. Ну просто бесит меня это :)
В связи с этим решил как-нибудь исправить это дело. Все конечно же знают (я надеюсь) что значит ЧПУ-ссылки. Именно они как раз бы здесь не помешали. Сейчас у меня ссылки отображаются как указано выше.

Что я сделал:

1) Создал файлик .htaccess и в него записал всего 2 строки:


RewriteEngine On
RewriteRule ^blog/([0-9]+)/? index.php?blog= [QSA,L]


Т.е. первая строка включает включает работу механизма преобразования модуля mod_rewrite, вторая строка представляет собой регулярное выражение, где index.php?blog=$1 мы заменяем на более читабельный адрес blog/([0-9]+)/

2) В файле index.html ОБЯЗАТЕЛЬНО прописать такую фишку:

<base href=" http://ВАШ АДРЕС САЙТА/ "/>

Это сделано для задания абсолютного пути к документам(а именно это касается style.css).


Воооот....согласитесь, что теперь страшно-корявенький URL выглядит более привлекательно:

/index.php?blog=3 --> /blog/3/


НО!!! Как теперь исправить чтобы ссылки у новостей с надписью "Читать дальше" отображали именно новый URL, или ХОТЯ БЫ при нажатии переходили к нему (хотя последний вариант не совсем гуд, т.к. дубликат контента появляется)?

Ждем-с ответа... :)
Rio-Shaman, 12 Февраля 2012 г. 22:13 пишет:
Автор
Уж поверьте мне, я думал об этом =) В проект, которому посвящен мой блог, я обязательно включу ЧПУ, а вот у себя на блоге я пожалуй оставлю, пока что, так как есть. Не очень хочется ковыряться =)))

Что касается кнопки "читать дальше", то тут проблем не должно быть. Небольшие манипуляции с кодомhtml и php для придания нужного вида ссылке и усе =)
Ответ для пользователя: Илья
Илья, 13 Февраля 2012 г. 08:41 пишет:
Читатель
Что ж...тогда будем-с ждать этого приятного поста :)
Ответ для пользователя: Rio-Shaman
Sergey, 16 Февраля 2012 г. 20:17 пишет:
Гость
В принципе неплохо все написано жаль этот сайт не нашел до того как свой движек начал писать можно было время сэкономить )) кстати позаимствовал у вас шаблон знаний html и CSS мне не хватает, надеюсь вы не против ))) если интересно вот что в итоге получилось у меня:
http://gir-cms.com
Rio-Shaman, 16 Февраля 2012 г. 20:24 пишет:
Автор
Нет, не против... даже симпатично выглядит =)
Ответ для пользователя: Sergey
Zafar, 19 Февраля 2012 г. 21:12 пишет:
Гость
Здравствуйте. Возможно ли получить уже собраную версию?
Rio-Shaman, 19 Февраля 2012 г. 21:45 пишет:
Автор
Здравствуйте! Я пишу новые строчки кода вовремя написания постов. К сожалению готового движка еще нет, он еще не дописан =(
Ответ для пользователя: Zafar
Zafar, 19 Февраля 2012 г. 21:54 пишет:
Гость
Если вам не трудно посмотрите что я сделал не так у меня не выводится на главной странице не чего если в index.php (include("templates/default/index.html");) подключено не в начале а если же в начале то новости т.д не выводит вот моя сборка. http://rghost.ru/private/36605105/5bb17ddee486048ab6727480cc01d334
Ответ для пользователя: Rio-Shaman
Rio-Shaman, 19 Февраля 2012 г. 22:33 пишет:
Автор
У меня пару вопросов к Вам:
1. Есть ли у Вас хоть одна запись в базе данных?
2. Видите ли Вы на главной странице графику?
Ответ для пользователя: Zafar
Zafar, 19 Февраля 2012 г. 22:34 пишет:
Гость
1. Да есть
2. В том то и дела что нет :(
Ответ для пользователя: Rio-Shaman
Rio-Shaman, 19 Февраля 2012 г. 22:44 пишет:
Автор
Графики нет потому что у Вас файл style.css не содержит графику. По всей видимости у Вас старый файл с стилями, это нестрашно, если Вы продолжите читать посты в том порядке в котором они были написаны, графика появится =)

Что касается всего остального. У Вас папка модули называется "module". В коде же Вы пишите "moduls". Исправьте либо в коде, либо поменяйте название папки с "module" на "moduls".
Ответ для пользователя: Zafar
Zafar, 19 Февраля 2012 г. 22:57 пишет:
Гость
хах, не заметил спасибо буду продолжать собирать cms :) а так же хотелось бы увидить уроки по созданию форума и уроки по защите системы :)
Ответ для пользователя: Rio-Shaman
Sergey, 24 Февраля 2012 г. 16:42 пишет:
Гость
Я когда свою cms доделал к сожалению понял что с таким количеством конкурентов и качеством ихних продуктов стать хоть немного популярной она сможет только если будет модульной например как wordpress, написать то можно но вот фантазии о том как это должно работать не хватает, есть ли у вас какие нибудь мысли на эту тему ? )
Rio-Shaman, 24 Февраля 2012 г. 20:21 пишет:
Автор
Людей, а именно конечный пользователь, можно разделить на два типа, те кто не знаю язык программирования, и те кто знает. Те кто не знает сами не лезут что либо править в коде, а те кто знают, им по барабану модульная CMS или нет, они все равно сделают с ней то, что хотят ( если конечно захотят =) ). Единственное, что было бы правильно сделать, это создать код таким образом, что бы другой программист в нем мог без труда разобраться.

Что же касается wordpress. Когда то программисты ( не считая разработчиков ) не знали как она работает, стало быть всяких новых, посторонних, возможностей для нее не было. И по сей день, что бы написать новый модуль для wp необходимо обладать не только языком программирования, но и технической информацией. За примером далеко бегать не буду. Я понятие не имею как работает этот популярный движок, и само собой не могу для нее ничего написать.

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

Я до этого проекта писал код "сплошняком". Такой код было очень сложно переделывать, так как был написан сплошным текстом. Сейчас же у меня есть один файл к которому подключаются другие, совершено не зависимые друг от друга, файлы. Разве это не модульность?
Ответ для пользователя: Sergey
Sergey, 25 Февраля 2012 г. 13:12 пишет:
Гость
Еще есть третий тип пользователей, которые не знают язык программирования но все равно лезут что либо править методом тыка )) я именно так и делал раньше )
Ответ для пользователя: Rio-Shaman
Sa1nt, 15 Апреля 2012 г. 02:48 пишет:
Читатель
Когда планиурется ЧПУ скоро ли будет статья))
и как реализовано? Иконка в посте Автор Блога
Rio-Shaman, 15 Апреля 2012 г. 04:42 пишет:
Автор
1. Думаю совсем скоро. Скорее всего сразу после реализации пользовательского модуля галереи.
2. Про "Иконка в посте Автор Блога" не совсем понял вопроса, что за иконка?
Ответ для пользователя: Sa1nt
Sa1nt, 15 Апреля 2012 г. 15:55 пишет:
Читатель
Rio-Shaman ( 15/04/2012 04:42 ) пишет: ТУТ ИКОНКА АВТОР БЛОГА

Как это реализовано?
Дмитрий, 15 Апреля 2012 г. 20:04 пишет:
Читатель
По емайлу определяется наверно.
Ответ для пользователя: Sa1nt
Rio-Shaman, 15 Апреля 2012 г. 20:28 пишет:
Автор
Да, Дмитрий прав. К каждому email'у привязан статус. Статус представляет собой число от нуля до трех:
3 - email находится в бан листе, пользователь не сможет писать комментарии с email'а с данным статусом
2 - Гость блога, отображается иконка гостя (знак вопроса)
1 - Читать блога, отображается иконка читателя (книжечка)
0 - Автор блога, отображается иконка автора (ручка)
Ответ для пользователя: Sa1nt
Sa1nt, 15 Апреля 2012 г. 20:43 пишет:
Читатель
1) А что мешает человеку ввести ругой email? можно и mac адрес и ip добавить бан)
2) Как определяется что читатель блога? =) Я тоже каждый день захожу и читаю тут все новые статьи))
Ответ для пользователя: Rio-Shaman
Rio-Shaman, 15 Апреля 2012 г. 21:44 пишет:
Автор
1. Все эти защиты очень легко обходятся, а вот ввести другой email, так для этого необходимо знать какой именно email. Обязанности любого интернет серфера - прятать свой адрес ящика всеми правдами и не правдами! =)
2. Читателя определяю я, по активности на блоге, или по пожеланию читателя.
Ответ для пользователя: Sa1nt
Алексей, 24 Апреля 2012 г. 22:22 пишет:
Читатель
Слушай, я еще не все статьи прочитал, но ничего подобного не нашел в менюшке о регистрации юзеров. Но на самом деле меня интересует вещь, как вход в админку.Постоянно прописывать путь на совсем удобно. Но, если не ошибаюсь, нам нужно будет писать простой модуль регистрации\входа) Будет ли это реализовано?)
Спасибо за внимание)
Алексей, 24 Апреля 2012 г. 22:34 пишет:
Читатель
примером может быть фишка о скрытии ссылок от простых пользователей)
Rio-Shaman, 24 Апреля 2012 г. 23:01 пишет:
Автор
Алексей, движок заточен под блога, а на блогах, в большинстве случаев, регистрация не используется, поэтому я наврятли в ближайшем будущем буду реализовывать подобный модуль

Что касается ссылки в админку, то тут вопрос можно решить многими способами, от прописи ссылки в футоре, до обычно закладки в браузере, поэтому думаю это не проблема =)
Алексей, 25 Апреля 2012 г. 14:57 пишет:
Читатель
Окей) Найдем что нибудь)
Сергей, 03 Мая 2012 г. 17:16 пишет:
Читатель
Интересует вопрос как сделать комментарии Вконтакте (с возможностью выбора в панели администратирования, что использовать) и блок twitter (ккак чат) в виде модуля
Rio-Shaman, 03 Мая 2012 г. 17:26 пишет:
Автор
Комментарии вконтакте ставятся от самого вк (если я не ошибаюсь), у них виджет (или как то так называется) такой есть, так что если немного поковыряться в их документации то можно вставить.

Что касается твиттера, чатов я не видел, видел просто несколько последних твиттов аккаунта администратора. Вы про это говорите?
Ответ для пользователя: Сергей
Sa1nt, 05 Мая 2012 г. 12:35 пишет:
Читатель
Вывод последних твитов))
Как все подключать я знаю) Вопрос в том как организовать выбор в панели администратирования)) Например сделать раз и на основе этого и все остальное переделать)) так как в программировании не очень силен
Например потом и сделать выбор редактора)) bbcode или WYSIWYG
Rio-Shaman, 05 Мая 2012 г. 14:28 пишет:
Автор
Понимаете в чем дело, внедрение лишнего функционала может привести к полному краху, ибо от этого движок становится тяжелым, начнет "жрать" очень много ресурсов. Сейчас, если включить все возможности движка, получаем приблизительно (подчеркиваю, приблизительно) такие же затраты ресурсов как у стандартного (не напичканного) движка wordpress.

Установка таких прелестей как комментарии от соц сетей, и вывод твиттов, делается ручками в шаблоне, инструкций в интернете полным полно. Создавать автоматическое внедрение этих чудо штук, значит создавать дополнительную нагрузку.

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

P.S.: Для начала я допишу функционал, который уже есть на блоге, а после подумаю о созданиях модулей, так что Ваша идея не пропадет даром =) я скорее всего реализую такую возможность, но не в скором будущем...
Ответ для пользователя: Sa1nt
Sa1nt, 05 Мая 2012 г. 17:21 пишет:
Читатель
Просто хотелось бы все настройки держать в файле или в БД (в бд проще переделать будет)
Но тогда и все переписывать придеться что бы и title и email для формы отправки указывать, хотя если что получиться, напишу здесь о своих достижениях может подправите так как самостоятельно не соображу правильно ли все сделал хоть может и будет работать
Sa1nt, 08 Июня 2012 г. 02:10 пишет:
Читатель
Какие дальнейшие планы на модификацию движка?
Rio-Shaman, 08 Июня 2012 г. 11:34 пишет:
Автор
Создадим модули опроса, последних комментариев, читаемых постов, случайных постов категории, парсер для подсчета подписчиков RSS ленты и твиттера, навигации и форму настроек блога в админ панели. На этом скорее всего все
Ответ для пользователя: Sa1nt
Sa1nt, 12 Июля 2012 г. 12:10 пишет:
Читатель
Странно что активность спала)) Спасибо потихоньку учусь хотя иногда делаю по своему))
Надеюсь на дольнейшее развитие, даже если я не комментирую, но я каждый день посещаю и смотри не появилоось ли что нибудь новенькое))
Rio-Shaman, 12 Июля 2012 г. 17:10 пишет:
Автор
В такую жару я как овощ, нет сил писать =(
Ответ для пользователя: Sa1nt
Sa1nt, 12 Июля 2012 г. 18:26 пишет:
Читатель
Знай у тя есть полконики творчества, которые твой блог не покидают)
Ответ для пользователя: Rio-Shaman
HIPM, 19 Августа 2012 г. 12:23 пишет:
Читатель
Будете ли вы применять Ajax в своем проекте?
Rio-Shaman, 19 Августа 2012 г. 14:21 пишет:
Автор
Лишь однажды, в админ панели. Но я не буду описывать эту возможность в глобальном цикле статей. Скорее всего опубликую отдельный пост где покажу как работает самый простейший аякс запрос.
Ответ для пользователя: HIPM
SerJ, 09 Октября 2012 г. 13:15 пишет:
Читатель
Давайте напишем "Хлебные крошки" ;)
NiunCMS, 21 Ноября 2012 г. 18:09 пишет:
Гость
Оцените что я создал с помощью вашей документации + подправил некоторое:
http://skripter.info/cms/raznoe/4930-niuncms-v-10.html
MIB, 03 Декабря 2012 г. 11:03 пишет:
Гость
Ох какая прелесть!
Наконец-таки я отыскал буквально "по-пунктам" разложенное руководство по принципиальному созданию CMS. Огромное спасибо автору за проделанный труд!
svisst, 10 Февраля 2013 г. 07:32 пишет:
Гость
отличное объяснение все понятно все работает респект автору)
Александр, 10 Февраля 2013 г. 07:34 пишет:
Гость
и все таки сделай пожалуйста с ajax-запросами)
mef-t, 22 Мая 2013 г. 14:21 пишет:
Гость
Как на счет перевода на HTML5?
Алексей, 22 Мая 2013 г. 15:00 пишет:
Автор
Я очень плохо ( если быть точнее - вообще ) знаю возможности HTML5. Времени нет почитать что-нить умное на данную тему...
Ответ для пользователя: mef-t
mef-t, 22 Мая 2013 г. 15:19 пишет:
Гость
Спасибо.
Я мало знаком с PHP, но изучал другие языки.
Я начал читать Ваши статьи (уроки) по созданию блога (CMS) и заметил много "некрасивых" (неприемлемых мастерами) моментов. В этом большой минус, уж извините за открытость. НО!!!
Я выражаю Вам огромную благодарность, т.к. подобного описания этапов создания CMS мне еще не доводилось встречать в столь развернутом виде.
Я не отрицаю их существования, я не утверждаю, что Ваше описание лучше всех остальных, но... я нашел Ваше, и не нашел других. А это значит, что у Вас хорошо подобраны ключевые слова, или же подобных описаний на русском языке действительно нет.
Еще раз спасибо. Читаю.
Ответ для пользователя: Алексей
Серега, 02 Июня 2013 г. 18:56 пишет:
Гость
Привет Рио Шаман.
Решил реализовать количество просмотров и комментариев в кратких и полных постах.

Про количеству просмотров я добавил в news.php в функции function index_page($chpu,$scin):

строчку (там где замена идентификаторов на переменные из базы данных)
$edd_tamp = str_replace("[_views_col]",$myrow_index[loock],$edd_tamp);

как оказалось все работает

А как мне это реализовать уже по количеству комментариев?
(подумывал создать новую ячейку в таблице blog, при добавление комментария он бы посылал запросы и туда, ну плюсовал +1 к тому значению что там есть)
Или было бы удобно создать отдельно модуль?

Буду очень благодарен если реализуете данную возможность!

на переменную $scin в функции не обращайте внимание - это я создал свой собственный рабочий шаблонизатор :-)
Алексей, 02 Июня 2013 г. 20:14 пишет:
Автор
Здравствуйте. Тот вариант который Вы предложили, самый что не наесть адекватный. Подобный подход позволяет не подсчитывать кол-во комментариев, а просто выводить его.
Ответ для пользователя: Серега
Серега, 02 Июня 2013 г. 21:04 пишет:
Гость
Походу такое не реализовать (доп. ячейка в табле blog), надо еще учитывать удаленные комментарии:

пробывал начать с этих строчек в comm.php (попал бесконечный цикл)

$view_comms = mysql_query ("SELECT view_comms FROM blog");
for($i=$view_comms;$view_comms;$i++){
mysql_query ("UPDATE blog SET view_comms='$view_comms'");
}


Буду писать функцию подсчета.

Не подскажете с чего начать?
Алексей, 03 Июня 2013 г. 10:35 пишет:
Автор
Циклом for Вы пытаетесь листать указатель на результат запроса. Для того что бы получить выборку в виде ассоциативного массива используйте функцию mysql_fetch_assoc().

То есть Ваш код должен выглядеть приблизительно вот так:
$view_comms_rec = mysql_query ("SELECT view_comms FROM blog");
$view_comms = mysql_fetch_assoc($view_comms_rec);

while($view_comms = mysql_fetch_array($view_comms_rec))
{
    mysql_query("UPDATE blog SET view_comms='".$view_comms['view_comms']."'");
}
Ответ для пользователя: Серега
Серега, 03 Июня 2013 г. 18:42 пишет:
Гость
Еще вопрос -->

Вроде бы на сколько я помню модуля меню по выборки статей для определенной категории(пункта меню) не было,

может чегото я пропустил( проблемма вот вчем:
1. в аднинпанели в разделе навигация создал новый пункт меню, на сайте он отобразился.
2. Иду в раздел Добавить пост, добавляю бла-бла-бла в посту - также выбираю ту самую категорию, ту которую создал.
3. ну все правильно и в базе все есть
4. но только как я нажимаю на новый пункт меню, поебляется ошибка 404 (я знаю что это значит что он лезет в каталог с именем категории), а мне нужно чтобы он показал только эту/эти статью, для этой категории?

У вас на сайте все это прекрасно работает, как мне сделать тоже самое?

и по модулс комментам, я что-то вас не понят причем тут функция mysql_fetch_assoc() (можно по подробнее?)?

Алексей, 03 Июня 2013 г. 23:04 пишет:
Автор
Вы читали вот эту заметку:
http://rio-shaman.ru/razrabotka-cms/razrabotka-bloga/menju-i-mini-novosti/

По поводу функции mysql_fetch_assoc(). Вы сказали, что у Вас там какой-то бесконечный цикл. Я ответил, что он у Вас бесконечный по той причине, что Вы пытаетесь листать указатель на результат запроса, а не выборку запроса (т.е. сам результат).
mysql_query() возвращает указатель, а mysql_fetch_assoc() по указателю вытаскивает выборку в виде ассоциативного массива.
Ответ для пользователя: Серега
Серега, 03 Июня 2013 г. 23:21 пишет:
Гость
теперь все заработало просто поменял == на != в menu.php в строчке
//Замены идентификаторов на переменные из базы данных
if($commMASS[$i][2] != ""){
а как мне теперь убрать в конце категорий .html ?
все перепробовал ничего не помогает
и в .htaccess менял и в addmenu.php менял
include("translit.php");
    $addnameurl_p = translit($addname_p).".html";
на
include("translit.php");
    $addnameurl_p = translit($addname_p);
где то надо менять что-то в cat.php вот только не могу понять что?
Алексей, 06 Июня 2013 г. 10:26 пишет:
Автор
Вроде больше ничего и не надо. Распознания ЧПУ происходит в .htaccess, а запись ЧПУ в БД происходит в addmenu.php.
На всякий случай почитайте вот эту заметку:
http://rio-shaman.ru/razrabotka-cms/uluchshenija/funkcija-chpu/
Там описаны регулярные выражения, по которым движок определяет правильный URL или нет. В проверку правильности, как раз, входит расширение .html. Думаю если его убрать из регулярок, то все заработает
Ответ для пользователя: Серега
Богдан, 10 Июля 2013 г. 12:48 пишет:
Гость
Статьи отличные, хорошо разобраны и поданы)) Маленький совет, если позволите - на этом блоге было бы здорово иметь кнопочку "Вверх" для быстрого возврата к началу статьи, очень удобно)) Автору респект)
CoopeR, 31 Июля 2013 г. 11:28 пишет:
Читатель
Алексей добрый день, можете подсказать как вывести дату публикации статьи в формате: число, месяц, и время в разных местах, отдельно друг от друга (мне для верстки надо)

Вот как это сделал я, но у меня ошибка где то(( везде одна и та же дата высвечивается 1 января

В модуле news.php
после
  $datePOST = date("d",$myrow_index['date_b']); //выводит число даты публикации
добавил
  $datePOSTf = date("F",$myrow_index['date_f']); //выводит месяц публикации
  $datePOSTh = date("H:i",$myrow_index['date_h']); //выводит время публикации статьи
после
  $edd_tamp = str_replace("[_date_b]",$datePOST,$edd_tamp); //Дата размещения, день
добавил
  $edd_tamp = str_replace("[_date_f]",$datePOSTf,$edd_tamp); //Дата размещения, месяц
  $edd_tamp = str_replace("[_date_h]",$datePOSTh,$edd_tamp); //Дата размещения, время
и в шаблоне в файл news.tpl.php подставил [_date_f] и [_date_h] туда куда мне надо
высвечивается и дата, и месяц, и время но не те которые в базе(((
В базе менял тип даты(date_b) на data (был varchar(255))

вот пример как это выглядит www.webadmin.kz
Алексей, 31 Июля 2013 г. 12:09 пишет:
Автор
Если у Вас даты хранятся в формате: 2011-10-02 22:54:00
То Вам, прежде чем использовать функцию date(), необходимо перевести дату в секунды. Для этого используйте функцию mktime()
http://www.php.su/mktime
Ответ для пользователя: CoopeR
Tooltip, 14 Августа 2013 г. 08:36 пишет:
Гость
Ребят спасибо за статью но вот на одном сайте видел счётчик который отображает сколько опубликовано комментариев по E-Mail и можете просветить как это вообще сделать? дайте плиз кодик...заранее респект :)
Tooltip, 14 Августа 2013 г. 13:18 пишет:
Гость
Ну плиз помогите пож киньте пож код
Алексей, 14 Августа 2013 г. 13:21 пишет:
Автор
Я совершенно не понял вопроса. Особенно вот эту строчку:
"отображает сколько опубликовано комментариев по E-Mail"
Ответ для пользователя: Tooltip
Tooltip, 14 Августа 2013 г. 13:31 пишет:
Гость
Ну вот смотрите например вот если пользователь оставил комментарий ведь его E-Mail остаётся в базе и вот
при каждом его комментарии показывать на странице где он его оставляет отображается счётчик например:

Группа: Гость *(Ну это уже есть)*
Сообщений: 100500
Добавил: 14 августа 2013г. 13:21 (ну это уже есть)
Ответ для пользователя: Алексей
Алексей, 14 Августа 2013 г. 13:58 пишет:
Автор
Самый простой вариант это подсчитать, сколько комментариев оставил пользователь, с помощью SQL функции COUNT
SELECT
	COUNT(*)
	FROM
		*ТАБЛИЦА С КОММЕНТАРИЯМИ*
	WHERE
		*поле email* = '*email пользователя*'
;
Например если мы имеем вот такие данные:

Таблица с комментариями: table_comments
Поле email: user_email
Емайл пользователя: test@mail.ru

То запрос будет вот такой:
SELECT
	COUNT(*)
	FROM
		table_comments
	WHERE
		user_email = 'test@mail.ru'
;
Естественно данный подход будет тыкаться в БД столько раз, сколько комментариев на странице, поэтому правильнее было бы объединить данный запрос с запросом на вывод комментариев (сложный запрос)

Например если мы имеем вот такие данные: (Я привожу выдуманную структуру таблицы с комментариями)

Таблица с комментариями: table_comments
Поле id: comment_id
Поле имя пользователя: user_name
Поле email: user_email
Поле текста комментария: comment_text

То запрос будет приблизительно вот такой
SELECT
	comments.id			AS comment_id,
	comments.user_name		AS user_name,
	comments.user_email		AS user_email,
	comments.comment_text	AS comment_text,
	
	(
		SELECT COUNT(comment.id)
			FROM
				table_comments comment
			WHERE
				comment.user_email = comments.user_email
	)	AS comment_qty
	FROM
		table_comments comments
;
Таким образом, когда Вы прогоните данный запрос через функции mysql_query() и mysql_fetch_assoc() то получите многомерный массив. В элементе $массив[Ключ от нуля до N]['comment_qty'] будет лежать нужное Вам число
Ответ для пользователя: Tooltip
Алексей, 14 Августа 2013 г. 14:00 пишет:
Автор
Да и SQL запросы примерные, я их не тестировал, так как нет при себе нужных таблиц в БД с нужными данными
Ответ для пользователя: Tooltip
Tooltip, 14 Августа 2013 г. 14:11 пишет:
Гость
В файле comm.php где функция: comm($blog,$error,$mess,$chpu,$server_root)
после:
$result_index = mysql_query("SELECT * FROM comm WHERE blog='$blog' AND status < '3' ORDER BY id");

$myrow_index = mysql_fetch_array($result_index);
вставил:
$result_comment = mysql_query("SELECT COUNT comm FROM email WHERE user_email = '$myrow_index['email']' ");

$myrow_index = mysql_fetch_array($result_comments);
И думаю что неправильно? и код нерабочий :(
Ответ для пользователя: Алексей
Алексей, 14 Августа 2013 г. 14:20 пишет:
Автор
У Вас email пользователя есть в таблице comm?
Ответ для пользователя: Tooltip
Tooltip, 14 Августа 2013 г. 14:25 пишет:
Гость
да, конечно.
скрин: http://rghost.ru/48109363/image.png
Ответ для пользователя: Алексей
Алексей, 14 Августа 2013 г. 14:41 пишет:
Автор
Если на скриншоте все поля, и таблица называется comm, то удалите то что Вы написали:
$result_comment = mysql_query("SELECT COUNT comm FROM email WHERE user_email = '$myrow_index['email']' ");

$myrow_index = mysql_fetch_array($result_comments);
и замените вот эти сточки:
$result_index = mysql_query("SELECT * FROM comm WHERE blog='$blog' AND status < '3' ORDER BY id");

$myrow_index = mysql_fetch_array($result_index);
На вот такие:
$sql = ""
	."SELECT"
		." table_comm.id			AS id,"
		." table_comm.author			AS author,"
		." table_comm.email			AS email,"
		." table_comm.site			AS site,"
		." table_comm.text			AS text,"
		." table_comm.data_comm			AS data_comm,"
		." table_comm.blog			AS blog,"
		." table_comm.comm			AS comm,"
		." table_comm.status			AS status,"
		." table_comm.view			AS view,"
		." table_comm.loock			AS loock,"
		
		." ("
			." SELECT"
				." COUNT(qty_comm.id)"
			." FROM"
				." comm qty_comm"
			." WHERE"
				." table_comm.email = qty_comm.email"
		." ) 					AS qty"
	." FROM"
		." comm table_comm"
	." WHERE 1=1"
		." AND table_comm.blog 		= '".$blog."'"
		." AND table_comm.status 	< '3'"
		
		." ORDER BY table_comm.id"
;

$result_index	= mysql_query($sql);
$myrow_index	= mysql_fetch_array($result_index);
Нужно число должно быть в массиве $myrow_index['qty']

Если появится ошибка, сообщите ее мне, может я в синтаксисе ошибся
Ответ для пользователя: Tooltip
Tooltip, 14 Августа 2013 г. 14:48 пишет:
Гость
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in N:\\home\\oswalls.ru\\www\\source\\modules\\comments.php on line 137

Строка: $myrow_index = mysql_fetch_array($result_index);
Ответ для пользователя: Алексей
Алексей, 14 Августа 2013 г. 14:49 пишет:
Автор
не правильно назвал поле date_comm. Я назвал datA_comm а нужно datE_comm. Так что вот правильный запрос:
$sql = ""
    ."SELECT"
        ." table_comm.id			AS id,"
        ." table_comm.author			AS author,"
        ." table_comm.email			AS email,"
        ." table_comm.site			AS site,"
        ." table_comm.text			AS text,"
        ." table_comm.date_comm			AS date_comm,"
        ." table_comm.blog			AS blog,"
        ." table_comm.comm			AS comm,"
        ." table_comm.status			AS status,"
        ." table_comm.view			AS view,"
        ." table_comm.loock			AS loock,"
        
        ." ("
            ." SELECT"
                ." COUNT(qty_comm.id)"
            ." FROM"
                ." comm qty_comm"
            ." WHERE"
                ." table_comm.email = qty_comm.email"
        ." ) 					AS qty"
    ." FROM"
        ." comm table_comm"
    ." WHERE 1=1"
        ." AND table_comm.blog 		= '".$blog."'"
        ." AND table_comm.status 	< '3'"
        
        ." ORDER BY table_comm.id"
;

$result_index	= mysql_query($sql);
$myrow_index	= mysql_fetch_array($result_index);
Ответ для пользователя: Tooltip
Tooltip, 14 Августа 2013 г. 14:50 пишет:
Гость
И комментарии теперь вообще не отображаются
Ответ для пользователя: Алексей
Алексей, 14 Августа 2013 г. 14:53 пишет:
Автор
В запросе не правильное поле. Я ниже опубликовал переделанный SQL запрос, попробуйте его
Ответ для пользователя: Tooltip
Алексей, 14 Августа 2013 г. 14:56 пишет:
Автор
Если переделанный запрос не поможет, то я вечером (после работы) посмотрю, что да как
Ответ для пользователя: Tooltip
Tooltip, 14 Августа 2013 г. 14:56 пишет:
Гость
Всё решил проблему спасибо вам за код!
Ответ для пользователя: Алексей
dlegame, 14 Августа 2013 г. 15:07 пишет:
Читатель
Поставил на сайт вроде робит, спасибо пригодилось.
Ответ для пользователя: Алексей
Tooltip, 15 Августа 2013 г. 14:37 пишет:
Гость
Ребят, а как в комментариях организавать рейтинг комментатара?
например если у ползователя 1 до 50 сообщения то отобразилась бы так:
Рейтинг: Новобранец
если от 50 до 100 то:
Рейтинг: Стажер
если от 100 до 150 то:
Рейтинг: Баклажан
ну и т.д...подскажите кодом как арганизавать плис?
Ответ для пользователя: Алексей
Tooltip, 16 Августа 2013 г. 06:54 пишет:
Гость
Ребят! плис помогите а?
Ответ для пользователя: Алексей
Алексей, 16 Августа 2013 г. 10:20 пишет:
Автор
Не вижу в чем проблема. Я бы это реализовал приблизительно вот так:
if ($myrow_index['qty'] >= 1 AND $myrow_index['qty'] < 50)
	$rating = 'Новобранец';
elseif ($myrow_index['qty'] >= 50 AND $myrow_index['qty'] < 100)
	$rating = 'Стажер';
elseif ($myrow_index['qty'] >= 100 AND $myrow_index['qty'] < 150)
	$rating = 'Баклажан';
Ответ для пользователя: Tooltip
Tooltip, 16 Августа 2013 г. 11:53 пишет:
Гость
Да что-то неработает :(
сделал так:
		if ($myrow_index['qty'] >= 1 AND $myrow_index['qty'] < 50)
        $rating = 'Новобранец';
        elseif ($myrow_index['qty'] >= 50 AND $myrow_index['qty'] < 100)
        $rating = 'Стажер';
        elseif ($myrow_index['qty'] >= 100 AND $myrow_index['qty'] < 150)
        $rating = 'Баклажан';
		$edd_tamp = str_replace("[rating]",$rating,$edd_tamp);
и результат 0
Ответ для пользователя: Алексей
Алексей, 16 Августа 2013 г. 12:18 пишет:
Автор
Если в массиве $myrow_index['qty'] лежит число комментариев определенного пользователя, то должно все работать...
Ответ для пользователя: Tooltip
Tooltip, 16 Августа 2013 г. 12:42 пишет:
Гость
К сожилению не работает :(
так пробывал:
        if($myrow_index['qty'] >= 1 AND $myrow_index['qty'] < 50){$rating = 'Новобранец';}
        $edd_tamp = str_replace("[rating]",$rating,$edd_tamp);
так тоже не работает
Ответ для пользователя: Алексей
Tooltip, 16 Августа 2013 г. 13:35 пишет:
Гость
Ну что помогите решить проблему а?
Ответ для пользователя: Алексей
Алексей, 16 Августа 2013 г. 14:11 пишет:
Автор
Для начала посмотрите что у Вас лежит в массиве $myrow_index['qty']
echo $myrow_index['qty']."<br>";
Ответ для пользователя: Tooltip
Tooltip, 16 Августа 2013 г. 14:46 пишет:
Гость
Вывело 5 <br>
Ответ для пользователя: Алексей
Алексей, 16 Августа 2013 г. 17:04 пишет:
Автор
Теперь попробуйте посмотреть что находится в переменной rating. Для этого сразу после
if ($myrow_index['qty'] >= 1 AND $myrow_index['qty'] < 50)
$rating = 'Новобранец';
elseif ($myrow_index['qty'] >= 50 AND $myrow_index['qty'] < 100)
$rating = 'Стажер';
elseif ($myrow_index['qty'] >= 100 AND $myrow_index['qty'] < 150)
$rating = 'Баклажан';
Вставить вот такую строчку:
echo $rating; die();
Ответ для пользователя: Tooltip
Tooltip, 16 Августа 2013 г. 17:38 пишет:
Гость
Пустая страница
Ответ для пользователя: Алексей
Алексей, 16 Августа 2013 г. 17:52 пишет:
Автор
Последние что я могу порекомендовать, это написать вот так:
$myrow_index['qty'] = intval($myrow_index['qty']);

if ($myrow_index['qty'] >= 1 AND $myrow_index['qty'] < 50)
	$rating = 'Новобранец';
elseif ($myrow_index['qty'] >= 50 AND $myrow_index['qty'] < 100)
	$rating = 'Стажер';
elseif ($myrow_index['qty'] >= 100 AND $myrow_index['qty'] < 150)
	$rating = 'Баклажан';
Ответ для пользователя: Tooltip
Tooltip, 16 Августа 2013 г. 18:06 пишет:
Гость
Короче чувак решил я проблему так:
		$commMASS[$i][9] = intval($commMASS[$i][9]);

        if ($commMASS[$i][9] >= 1 AND $commMASS[$i][9] < 50)
        $rating = 'Новобранец';
        elseif ($commMASS[$i][9] >= 50 AND $commMASS[$i][9] < 100)
        $rating = 'Стажер';
        elseif ($commMASS[$i][9] >= 100 AND $commMASS[$i][9] < 150)
        $rating = 'Баклажан';
		
        $edd_tamp = str_replace("{rating}",$rating,$edd_tamp);	
Могу поинтересоватся для чего intval?
Ответ для пользователя: Алексей
Алексей, 16 Августа 2013 г. 18:25 пишет:
Автор
Функция intval() позволяет принудительно преобразовать значение переменной в число
Ответ для пользователя: Tooltip
Tooltip, 16 Августа 2013 г. 18:30 пишет:
Гость
А вот у меня достигло более 150 комментариев и вот надпись Баклажан исчезает как можно сделать чтобы она осталась хоть миллион я добавил сообщений?
Ответ для пользователя: Алексей
Алексей, 16 Августа 2013 г. 18:38 пишет:
Автор
Вот тут отредактировать условие
elseif ($commMASS[$i][9] >= 100 AND $commMASS[$i][9] < 150)
        $rating = 'Баклажан';
на вот такое
elseif ($commMASS[$i][9] >= 100)
        $rating = 'Баклажан';
Ответ для пользователя: Tooltip
Tooltip, 16 Августа 2013 г. 18:53 пишет:
Гость
Спасибо! работает!
Ответ для пользователя: Алексей
Артем, 29 Августа 2013 г. 14:41 пишет:
Гость
Здравствуйте, очень нравиться ваш блог, хотелось бы увидить в будущем, уроки по созданию интернет магазина.
особенно интересует вопрос, по созданию каталога товара и вывод через админ панель.
Алекс, 04 Ноября 2013 г. 22:29 пишет:
Читатель
На блоге полезная информация. Подписался по RSS. Жду ссылку на движок CMS. Заранее благодарю!
Александр, 02 Февраля 2014 г. 23:49 пишет:
Гость
Огромное спасибо за бесценные уроки! Это просто сказка для начинающего! Раньше всегда делал сайты на CMS, но тут все таки решил плотно заняться собой, подтянуть знания языка и создать свой блог своими ручками)
Но вот вопрос такой) Скорее всего в какой то из статей это есть, но еще не дошел по ходу... И в списке не могу найти подобного урока. Есть ли у вас статья, в которой показано, как загружать, например, в анонс статьи картинку? Как ее загружать на сервер и хранить адрес в базе данных к ней. Или может тут без БД можно обойтись...
Спасибо большое заранее за ответ!
Алексей, 03 Февраля 2014 г. 14:12 пишет:
Автор
Ответ для пользователя: Александр
Александр, 04 Февраля 2014 г. 21:27 пишет:
Гость
Спасибо!
Ответ для пользователя: Алексей
Alex Jobs, 17 Февраля 2014 г. 00:24 пишет:
Гость
Здравствуйте, Алексей(тёска =) ). Я новичок в пхп, сейчас делаю свой сайт на вашем кмс, пока что очень туго все идет.. но думаю это нормально для не опытного)
Хотел сразу Вас поблагодарить, за выложенную информацию которая очень полезная.
Но, у меня возник вопрос. Хочу реализовать вывод количества новостей в каждой категории в списке категорий. Вот как у Вас здесь
Прошу связаться со мной по мейлу или скайп ialexjobs, а если не хотите. Прошу помочь прям здесь) Заранее благодарен!
Алексей, 17 Февраля 2014 г. 13:32 пишет:
Автор
Вот в этой статье мы реализовывали древовидное меню на публичной части блога. Давайте на примере этой реализации я подскажу где что поправить.
Во-первых у самой функции menu() необходимо подправить SQL запрос, приблизительно вот так:
function menu()
{
	$sql = ""
		."SELECT"
			." m.id		AS id,"
			." m.name		AS name,"
			." m.href		AS href,"
			." m.position	AS position,"
			." m.podmenu	AS podmenu,"
			." ("
				."SELECT"
					." COUNT(*)"
				." FROM"
					." blog b"
				." WHERE"
					." b.cat = m.id"
			." )			AS count"
		." FROM"
			." menu m"
	;
	
	$result_index	= mysql_query($sql);//Выводим из базы данных все пункты меню
	$myrow_index	= mysql_fetch_array($result_index);
	
	// логика которую я в данном примере опускаю
}
Далее необходимо новое поле, которые мы получаем от нового SQL запроса, перенести в массив с пунктами. Делается это в цикле do while в этой же функции (в функции menu())
do//Цикл do while
{
    $commMASS[$i] = array(
		$myrow_index['id'],//0 - ID пункта
        $myrow_index['name'],//1 - Имя пункта
        $myrow_index['href'],//2 - Ссылка (# - нет ссылки; Пустота - Категория; "http://site.ru/page2.html" - Прямая ссылка)
        $myrow_index['podmenu']),//3 - ID родительного пункта
        $myrow_index['count']);//4 - кол-во заметок в категории
    
	$i++;//при каждом цикле меняем элемент многомерного массива на единицу
}
while($myrow_index = mysql_fetch_array($result_index));
Ну и на по следок, нам остается вставить новое значение в пункт меню (в тег <a>). Это уже делается в функции station()
function station($stat, $commMASS, $temp, $BC)
{
	for($i=0;isset($commMASS[$i]);$i++)//глобальный цикл for
		if($commMASS[$i][3] == $stat)//если podmenu пункта равно переменной stat
    	{
			// логика которую я в данном примере опускаю
        	
			//Замены идентификаторов на переменные из базы данных
        	if($commMASS[$i][2] == "")
				// тут вставляю кол-во заметок в скобках
				$href = "<a href=\"index.php?cat=".$commMASS[$i][0]."\">".$commMASS[$i][1]." (".$commMASS[$i][4].")</a>";	//если нет ссылки то генерируем категорию
        	else//если поле href не пусто
        	{
            	if($commMASS[$i][2] != "#")
					$href = "<a href=\"".$commMASS[$i][2]."\">".$commMASS[$i][1]."</a>";//если поле href не содержит значок "#" значит генерируем прямую ссылку
            	else
					$href = $commMASS[$i][1];//если содержит значок "#" значит пункт является не ссылкой, поэтому выводим только имя
        	}
			
			// логика которую я в данном примере опускаю
		}
		
	// логика которую я в данном примере опускаю

}
p.s.: Будьте аккуратнее. Я привел лишь части кода, а не все функции целиком
Ответ для пользователя: Alex Jobs
Alex Jobs, 17 Февраля 2014 г. 19:51 пишет:
Гость
Дело в том что у меня нет подменю, а просто вывод Категорий, собственно вот код:
<?php 
function leftmenu()
{
	$result_index = mysql_query("SELECT * FROM cat LIMIT 41");
	$myrow_index = mysql_fetch_array($result_index);
	if($myrow_index != "")//Проверяем есть ли в базе данных записи
	{
	$sm_read = file_get_contents("templates/tpl_leftmenu.html");
	preg_match("#\[_divcat\](.*?)\[_divcat\]#s",$sm_read,$div_cat);
	do{
	   
	   
		$edd_tamp = $div_cat[1];  
		
		//Замены идентификаторов на переменные из базы данных
		if($myrow_index[href] == "") $href = "?cat=".$myrow_index[id];
		else $href = $myrow_index[href];
		
		$edd_tamp = str_replace("[_link]", $myrow_index[name],$edd_tamp);
		$edd_tamp = str_replace("[_href]", $href,$edd_tamp);
		$edd_tamp = str_replace("[_nnews]", $count_news,$edd_tamp);
		
		
		$leftmenu .= $edd_tamp;
	}
	while($myrow_index = mysql_fetch_array($result_index));
	$leftmenu = preg_replace("#\[_divcat\].*?\[_divcat\]#s",$leftmenu,$sm_read);
	}
	else $leftmenu = "";
	return $leftmenu;

}
Ответ для пользователя: Алексей
Алексей, 19 Февраля 2014 г. 10:24 пишет:
Автор
Примерно вот так
function leftmenu()
{
	$sql = ""
        ."SELECT"
            ." c.id			AS id,"
            ." c.name		AS name,"
            ." c.href		AS href,"
            ." ("
                ."SELECT"
                    ." COUNT(*)"
                ." FROM"
                    ." blog b"
                ." WHERE"
                    ." b.cat = c.id"
            ." )			AS count"
        ." FROM"
            ." cat c"
        ." LIMIT 41"
    ;
	
	$result_index	= mysql_query($sql);
	$myrow_index	= mysql_fetch_array($result_index);
	
	if($myrow_index != "")//Проверяем есть ли в базе данных записи
	{
		$sm_read = file_get_contents("templates/tpl_leftmenu.html");
		
		preg_match("#\[_divcat\](.*?)\[_divcat\]#s", $sm_read, $div_cat);
		
		do{
			$edd_tamp = $div_cat[1];  

			//Замены идентификаторов на переменные из базы данных
			$href 		= ($myrow_index['href'] == "") ? "?cat=".$myrow_index['id'] : $myrow_index['href'];

			$edd_tamp 	= str_replace("[_link]", 	$myrow_index['name'].( ($myrow_index['count'] > 0) ? " (".$myrow_index['count'].")" : "" ),	$edd_tamp);
			$edd_tamp 	= str_replace("[_href]",	$href,																						$edd_tamp);
			$edd_tamp 	= str_replace("[_nnews]",	$count_news,																				$edd_tamp);


			$leftmenu .= $edd_tamp;
		}
		while($myrow_index = mysql_fetch_array($result_index));
		
		$leftmenu = preg_replace("#\[_divcat\].*?\[_divcat\]#s",$leftmenu,$sm_read);
	}
	else
		$leftmenu = "";
	
	return $leftmenu;
}
Ответ для пользователя: Alex Jobs
Sa1nt, 04 Марта 2014 г. 13:00 пишет:
Читатель
Сорри что продублировал, понял что не там написал...
Собственно возник вопрос по поводу RS-BLOG,
Как создать категорию? (категория это пункт меню?)
и самый основной вопрос))
делаю публикацию в название пишу Галерея и т.д.
Создаю а в списке публикаций нет заголовка, если создаю и везде вбиваю test то норм отображает
Предыдущая запись "Добро пожаловать в CMS RS-BLOG v2" нормально показывается в списке
Егор, 23 Марта 2014 г. 17:31 пишет:
Читатель
Здравствуйте! А можно попросить у Вас готовый архив блога?
А то у меня что то не получается
Rio-Wordpress, 06 Января 2015 г. 20:13 пишет:
Гость
Здравствуйте Всем! Мне хотелось поделиться с вами, довольно не плохим а можно сказать и самый лучший бесплатный виртуальный хостинг.web-times.ru Этот хостинг можно так сказать, для тех кто не хочет покупать и платить за дорогой хостинг, но а RS-Blog нужно где-то протестировать. Если конечно на локальном хостинге Вам не интересно.
Сдесь я приведу его не все, но самые главные преимущества.
- PHP (версия на выбор)
- MySQL
- Дисковое пространство: 2000MB
- Сайт-билдер
- Быстрая установка WordPress, Joomla, Drupal, phpBB, SMF и других скриптов
- UpTime: 99.9%
- Несколько субдоменов на выбор
- Хостинг на мощных серверах Intel Xeon, Debian
- Файловый менеджер прямо из Панели Управления
- Cron
- Zend Optimizer
- несколько сайтов на одном аккаунте
- быстрая регистрация доменов
- система тикетов и тех. поддержки
Также в панели управлении можно купить платные VPS/VDS и услуги платного вирт. хостинга.
Арсен, 10 Января 2015 г. 07:59 пишет:
Гость
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\test1.ru\www\moduls\menu.php on line 5 такая ошибка
Алексей, 10 Января 2015 г. 17:02 пишет:
Автор
Скорее всего у Вас не правильно настроено подключение к БД. Проверьте логин, пароль и имя БД
Ответ для пользователя: Арсен
ильгиз, 09 Декабря 2015 г. 13:54 пишет:
Читатель
Где найти блог со всеми исходниками.
Алексей, 09 Декабря 2015 г. 16:46 пишет:
Автор
Отправил копию Вам на почту
Ответ для пользователя: ильгиз