Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Написание движка на PHP

420
28 июня 2006 года
Fobos
197 / / 10.03.2006
Здравствуйте, уважаемые пользователи!
У меня появилась одна задача и мне её обязательно надо выполнить.
Я создаю портал. Портал планируется крупный, на нескольких субдоменах.
Короче, пробовал я пробовал разные CSM, ничего подходящего не нашел. То одно глючит, то другое, ну короче решил я свою CMS написать.
Особо загонного мне ничего не требуется.
Вот конкретно те вещи, которые требуют вашей помощи:
- Написание раздела статей;
- Написание раздела Download;
Всё остальное я сам смогу сделать, но вот в этих вещах мне требуется некоторая помощь. Поэтому, если Вы не против, я периодически буду писать в этой теме вопросы.

Начну я с раздела статей:
Как писать данные в текстовый файл и выводить сообщения из него - я знаю (гостевуху как-то писал, даже оч неплохо получилось :) ).
Вот непойму я одну фишку - как мне зделать возможность создания категорий и подкатегорий???

Буду ОЧЕНЬ благодарен за Ваши ответы!!! :)
Страницы:
8
28 июня 2006 года
mfender
3.5K / / 15.06.2005
Делаешь в БД табличку, что-то типа tbl_Parts с тремя, как минимум, полями: OID - идентификатор раздела, ParentOID - идентификатор родительского раздела, ну и Title - наименование раздела. Поле OID - autoincrement.
Выбирается всё это рекурсивно, т.е. в функцию по ссылке передаётся массив, в который выбирается все "детки" раздела.
И так каждый раздел.
В результате получается очень ветвистое дерево :)

Пример такой рекурсии: http://rio.kbtour.ru/c_list.htm
420
28 июня 2006 года
Fobos
197 / / 10.03.2006
Спасибо, но можно немного поподробнее? Может код подкините, или где-то статья есть хорошая?
420
28 июня 2006 года
Fobos
197 / / 10.03.2006
Честно говоря, я хочу сделать так, чтобы весь контент хранился в текстовых файлах, а MySQL пустить под хранение данных о пользователях. Хотя можно и на MySQL сделать, если это проще. Просто я плохо знаю MySQL (только на уровне администрирования в phpMyAdmin).
15
28 июня 2006 года
shaelf
2.7K / / 04.05.2005
Нужно мыслить многогранно, если говорят "3 поля", значит 3 поля. Но это не значит, что 3 поля в БД. Мой совет, забей на портал и потрать пару недель на чтение "MySQL второе издание. Поль Дебуа". После прочтение книги у тебя будут просто вызывать смешки даже упоминание о таких вопросах. Сам я "специализируюсь" на магазинах (скажем основная масса, что я сделал это инет магазины) и помню прекрасно свой первый магазин... Я на него смотреть теперь даже боюсь... Хотя если хочешь понять как это работает, то можешь представить это массивом.
 
Код:
$cat[firm1][series1] = goods1
$cat[firm1][series2] = goods1

и так далее. Думаю общий смысл ясен. Если не поймёшь, то реально, не пожалей денег и прочти эту книгу...
420
28 июня 2006 года
Fobos
197 / / 10.03.2006
В общем я понял. Пока подумаю, попробую...
19K
29 июня 2006 года
Kiriller
1 / / 29.06.2006
В MySQL со статьями будет легче работать, чем в файлах. Ведь точно же появится необходимость сортировки по дате, автору, выборка новостей за определенный период и другие варианты...
Зачем выдумывать велосипед (тут - функции для сортирвки, выборки поиска по текстовым файлам), когда есть MySQL. Выучить его - день времени. А в будущем - экономия в сотне часов.
И еще. Если надумает кто сказать, что MySQL стоит-де не на всех серверах, тем отвечу, что серьезные порталы на бесплатных хостингах не вешают, а на платных MySQL чаще всего стоит по умолчанию (если речь идет о Юникс-сервере).
420
29 июня 2006 года
Fobos
197 / / 10.03.2006
Да хостинг у меня платный, кстати довольно неплохой (мне лично понравился), и домен платный - http://www.csportal.ru/
Я его, пока CMS делаю, "заморозил". Насчёт MySQL - у меня их можно хоть 9999 делать! :)
Ладнинько, почитаю...
Вот только домен я отдельно регистрировал (поздно хостера нашёл, он их бесплатно раздавал при заказе хостинга), поэтому придётся быстрее шевелиться мне, а то время идёт попусту... Ну это так - лирическое отступление.
В общем спасибо всем отозвавшимся!
Быду пока мускул изучать! :)
15
29 июня 2006 года
shaelf
2.7K / / 04.05.2005
2Kiriller При желании можно особо не чего не изобритать, а один раз написать нормальную библиотеку для работы с файлом и потом не мучаться. У каждого подхода есть свои заморочки. БД стоит на отдельном сервере (как правило) и есть шансы, что она просто выволится (нет коннекта), в то время, как с фалами этого не будет. Для портала наверное это не особо кретично, хотя ценную инфу я бы просто дублировал в XML и когда БД будет отдыхать, черпать инфу из файла.
8
29 июня 2006 года
mfender
3.5K / / 15.06.2005
Ну, несинхрон http-серванта с сервантом БД - дело редкое и из-за этого работать с файлОм - дело нехорошее. А вот скорость работы с файлами, конечно же, намного выше.
Другое дело - релятивность и другие достоинства, присущие БД. С разбегу можно потратить уйму времени на попытки написания файловой конструкции и ворочать массивы... Но, IMHO, зачем, если БД всё же существуют?

Я, кстати, году в 2000м, кажется, что-то такое пытался нарисовать на Perl'е с использованием огромного количества файлов с данными. Ясный пень, ничего не получилось. Потому что не знал ни Perl'а, ни вообще теории баз данных. :)
1.9K
29 июня 2006 года
zorkk
80 / / 22.07.2004
[QUOTE=shaelf]... и потрать пару недель на чтение "MySQL второе издание. Поль Дебуа". [/QUOTE]

Эта книга - хлам. Она поверхностна. Там даже перечень функций и языковых конструкций языка "кривой SQL а-ля MySQL" неполная. Для начинающего она тоже не пойдет, т.к. написана не лучшим образом. ИМХО лучше будет почитать "Создание приложений на PHP+MySQL" - найти ее легко и информации лишней для начинающих там нет.
298
29 июня 2006 года
zatch
622 / / 20.01.2000
По моему надо использовать БД. И даже книга не очень нужна, можно обойтись туториалами. ИМХО.
Если у статьи есть Автор, Дата, Комментарии юзеров, рейтинг или фотки.. То без бд это будет очень тяжело.
15
29 июня 2006 года
shaelf
2.7K / / 04.05.2005
Ты об этом расскажи людям, кто тусуется на sql.ru, mysql.ru и им подобным. Кто на разработке БД денег поднимает. По поводу "Создание приложений на PHP+MySQL". Листал, положил и больше не трогал. Знакомые покупали, читали, потом спрашивали "Что по MySQL почитать". Читали Дюбуа, довольны.
1.9K
30 июня 2006 года
zorkk
80 / / 22.07.2004
[QUOTE=shaelf]Ты об этом расскажи людям, кто тусуется на sql.ru, mysql.ru и им подобным. Кто на разработке БД денег поднимает. По поводу "Создание приложений на PHP+MySQL". Листал, положил и больше не трогал. Знакомые покупали, читали, потом спрашивали "Что по MySQL почитать". Читали Дюбуа, довольны.[/QUOTE]

Я тоже читал Дюбуа и остался недоволен... Хотя наверное это от того что я недолюбливаю саму MySQL
Вопрос исчерпан
15
30 июня 2006 года
shaelf
2.7K / / 04.05.2005
В нашем диалоге - да. За других не отвечай.
420
22 марта 2007 года
Fobos
197 / / 10.03.2006
Ну вот, наконец, я собрался писать (точнее уже усердно пишу) движок.
Пишу на PHP+MySQL
И вот появился вопросик:
Короче, для публикации статей я использую ББ - код (может ещё визуальный редактор добавлю).
Собственно вопрос про парсинг ББ-кода при выводе статьи. :)
Простые теги типо B, I, U, quote и т.п. я понятно, как заменять на HTML-эквиваленты.
Но вот например, если написано:

|quote="А.С. Пушкин"]
Текст цитаты
|/quote]

- это уже сложнее. :)
Необходимо выделить из тега quote имя цитируемого человека.
Пожалуйста подскажите - как это сделать (чует душа моя, что нужно использовать регулярные выражения, но немогу пока въехать (: ).

За ранее благодарен!!! ;)
420
22 марта 2007 года
Fobos
197 / / 10.03.2006
Ну или хотябы подскажите, как заменить строку,находящуюся между одной и второй подстроками?
15
22 марта 2007 года
shaelf
2.7K / / 04.05.2005
По поводу замены:
1. Качаешь любой форум и смотришь как там реализованно.
2. Пользуешься поиском на форуме и читаешь ответы, т.к. тема поднималась уже не один десяток раз.
244
23 марта 2007 года
UAS
2.0K / / 19.07.2006
Не сочтите, но почему-то у меня такое чувство что в итоге закончится все тем, что человек попросит написать все за него! 8-|
Могу и ошибаться

Насчёт \[quote]:
 
Код:
$regexp='~\[quote="?(.{1,400})"?\](.+)\[/quote\]~isU';
// далее читай мануал. под \\1 будет ник, под \\2 текст цитирования
# элементарно. написал на скорую руку, chr коды символов не помню(((
420
23 марта 2007 года
Fobos
197 / / 10.03.2006
Цитата: shaelf

По поводу замены:
1. Качаешь любой форум и смотришь как там реализованно.


Смотрел phpBB - черт ногу сломит :) . Так и не разобрался.

Цитата: shaelf

2. Пользуешься поиском на форуме и читаешь ответы, т.к. тема поднималась уже не один десяток раз.


И всегда отвечали "Пользуйся поиском!" :)
Шутка... Поищу.

[QUOTE=UAS]
Не сочтите, но почему-то у меня такое чувство что в итоге закончится все тем, что человек попросит написать все за него!
[/QUOTE]
Ну почему же всё!??? Я что прошу весь движок за себя написать!???
Это лишь одна мелочь, которая поможет мне разобраться со всеми подобными проблемами и не задавать подобных вопросов более (BB-тегов ведь много :) ).

ЗЫ. Спасибо за код.

420
23 марта 2007 года
Fobos
197 / / 10.03.2006
Цитата: shaelf
По поводу замены:
2. Пользуешься поиском на форуме и читаешь ответы, т.к. тема поднималась уже не один десяток раз.


Поискал. Даже по простому запросу bb код в подфоруме Web программирование ответ "Извините, нет совпадений. Попробуйте указать другие темы."
Видать всетаки не поднималась тема, или Вы меня не так поняли...

420
23 марта 2007 года
Fobos
197 / / 10.03.2006
[QUOTE=UAS;181955]Не сочтите, но почему-то у меня такое чувство что в итоге закончится все тем, что человек попросит написать все за него! 8-|
Могу и ошибаться

Насчёт \
Цитата:
:
 
Код:
$regexp='~\[quote="?(.{1,400})"?\](.+)\[/quote\]~isU';
// далее читай мануал. под \\1 будет ник, под \\2 текст цитирования
# элементарно. написал на скорую руку, chr коды символов не помню(((



Блин, а я кажется въезжать начал! :) Очень похоже на то как псевдостатику через mod_rewrite делают! :)
Я просто с регулярными выражениями ещё почти не работал.

244
23 марта 2007 года
UAS
2.0K / / 19.07.2006
Цитата:
Смотрел phpBB - черт ногу сломит . Так и не разобрался.


Ты издеваешься или как???

У меня ушло ровно 11сек. 7 на открытие папки с исходником phpBB, 4 сек на поиск файли с BB-кодами... includes/bbcode.php

420
23 марта 2007 года
Fobos
197 / / 10.03.2006
Цитата: UAS
Ты издеваешься или как???

У меня ушло ровно 11сек. 7 на открытие папки с исходником phpBB, 4 сек на поиск файли с BB-кодами... includes/bbcode.php


:)))
Ну я нимагу!!!
Ну конечно же я нашел файл!!! Я просто с кодом этого файла не разобрался (хотя сейчас потихоньку врубаться начинаю).

Просто мне нужно где-нибудь почитать про регулярные выражения в ПХП, где это подробно написано.

Вы уж меня совсем за идиота не держите! :) Лучше посоветуйте мануал - где про регулярные выражения подробно изложено.

Насчёт цитирования - все работает.

Только объясните пожалуйста, какую роль в выражении играют ~ и ~isU??? Нигде не нашёл о них ни слова. Всё остальное понятно.

244
23 марта 2007 года
UAS
2.0K / / 19.07.2006
Цитата:
Лучше посоветуйте мануал - где про регулярные выражения подробно изложено.


Читаем:
http://ru.php.net/manual/ru/reference.pcre.pattern.syntax.php
http://ru.php.net/manual/ru/reference.pcre.pattern.modifiers.php
Так же не забываем читать комментарии к статьям=)))

420
23 марта 2007 года
Fobos
197 / / 10.03.2006
Спасибо Вам большое за ссылочки и за помощь!!!
Я думаю, если появятся ещё вопросы, я смогу их сдесь задать?
13K
30 марта 2007 года
NomadicDMB
85 / / 20.03.2007
При написании движка и как сделать админ панель, хотелось бы чтобы все управление сайтом и его содержимым было там
337
30 марта 2007 года
shine
719 / / 09.06.2006
Цитата: NomadicDMB
При написании движка и как сделать админ панель, хотелось бы чтобы все управление сайтом и его содержимым было там


Начать с поиска готовых решений. Как ты думаешь сколько готовых движков сейчас в инете? Неужели ты все просмотрел и ни один тебе не подошел?

13K
30 марта 2007 года
NomadicDMB
85 / / 20.03.2007
Просто иногда хочется сделать что нибудь самому. Все равно своё это своё, что ни говори
13K
31 марта 2007 года
NomadicDMB
85 / / 20.03.2007
Так с чего же начать при разработке движка для сайта?
622
31 марта 2007 года
nilbog
507 / / 19.12.2006
почитать что умные люди пишут
13K
31 марта 2007 года
NomadicDMB
85 / / 20.03.2007
И так вот всю ветку прочел и прощу помощи ведь тут нет ни чего по этому поводу:-(
244
01 апреля 2007 года
UAS
2.0K / / 19.07.2006
Чем ты хочешь чтоб тебе помогли??? Берешь ручку, тетрадку и начинаешь писать что ты хочешь получить от КМС своей. Потом прикидываешь какими средствами все это писать. Потом пишешь... Что ты ещё хочешь?
239
05 апреля 2007 года
Dolonet
1.7K / / 20.05.2000
Простите за оффтопик, конечно, но мне будет интересно взглянуть потом на пару сайтиков, написанных на этой КМС-ке.. :)
420
13 апреля 2007 года
Fobos
197 / / 10.03.2006
Цитата: NomadicDMB
Так с чего же начать при разработке движка для сайта?


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

Потом приступай к отработке каждого раздела более чательно:
раздел "статьи" (что должен будет юзер видеть читая статью, какие доп. инфу и т.д.) на базе такого анализа придумай имя табличке БД и её структуру.
Затем разработай скрипт публикации статьи в админке параллельно со скриптом просмотра юзером на сайте.

Ну и т.д.

Вообще в 2-х словах конечно трудно объяснить.
Да и сразу полностью готовый движок не напишешь. Всеравно потом баги вылазить начнут. Скоро это и меня постигнет... Когда свой допишу. :)

А вот у меня опять по регуляркам вопрос:
Почему конструкция:

$view_text = preg_replace("~\[HTMLcode\](.+)\[/HTMLcode\]~isU", str_replace("{tag_br}", "символ", "\\1"), $view_text);

не работает???

Поидее ведь все вхождения {tag_br} в строке \\1, выщемленной из $view_text с помощью preg_replace, должны заменяться на строку "символ"!?!?

10K
14 апреля 2007 года
jwagra
62 / / 23.08.2006
оффтоп:
2Fobos
не должно там ничо заменятся.
сначала str_replace() выполняется потом ужо прег_реп
\\1 лишь сигнализируют како образца строку выдать
сделай свою ф-ию
420
19 апреля 2007 года
Fobos
197 / / 10.03.2006
Ну вот что-то выдал, хотя как-то коряво, наверное... Зато работает!
Код:
if (substr_count($view_text, '[HTMLcode]')>0)
            {
               for ($i=0; $i <= substr_count($view_text, '[HTMLcode]')+1; $i++)
               {
                  $buffer="";
                  preg_match("~\[HTMLcode\](.*)\[/HTMLcode\]~isU", $view_text, $array_str);
                     $buffer = str_replace("[br]", "\n" , $array_str[1]);
                     $buffer = str_replace("&lt;", "<" , $buffer);
                     $buffer = str_replace("&gt;", ">" , $buffer);
                     $buffer = str_replace("&one_quote;", "'" , $buffer);
                     $buffer = str_replace("&quot;", '"', $buffer);
                     $buffer = str_replace(" ", ' ', $buffer);
                  $view_text = preg_replace("~\[HTMLcode\](.+)\[/HTMLcode\]~isU", $buffer, $view_text, 1);
               }
            }
253
19 апреля 2007 года
Proger_XP
1.5K / / 07.08.2004
Для замены HTML-сущностей есть функция html_entity_decode(). И еще советую посмотреть функцию preg_match_all()
92
19 апреля 2007 года
Тень Пса
2.2K / / 19.10.2006
Цитата: Dolonet
Простите за оффтопик, конечно, но мне будет интересно взглянуть потом на пару сайтиков, написанных на этой КМС-ке.. :)



+1. интересно что у народа получается :)

420
19 апреля 2007 года
Fobos
197 / / 10.03.2006
Во!
Посмотрите, конечно. :) (Только ломать не надо :) )

Вот ещё хочу подсветку синтаксиса в статьях для разных языков зделать (ну простенько, хотябы не полно, пока).

Вот кусок для Delphi кода:
Цитата:

$buffer = eregi_replace("uses", "<b>uses</b>", $buffer);
$buffer = eregi_replace("type", "<b>type</b>", $buffer);
$buffer = eregi_replace("class", "<b>class</b>", $buffer);
$buffer = eregi_replace("private", "<b>private</b>", $buffer);


Но как-то неправильно то, что например если переменная или что-то иное в коде будет называться classicalVariable будет выделяться жирным кусок переменной: classicalVariable.
Нужно каието альтернативы искать...
Воотще я по правильному пути иду?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог