Люди добрые, подскажите пожалуйста, если кто знает какой нибудь похожий обучающий сайт, где всё будет разложено по полочкам, для новичка, но только создание сайта САМОМУ, без каких либо готовых конструкций и движков. Просьба, не давать ссылки на разные видеоуроки.
Надеюсь что кто нибудь сможет помочь. Заранее всем спасибо!
Спустя 14 минут, 9 секунд (8.03.2011 - 23:53) DmitryOpalev написал(а):
Как раз таки там все своими руками, и объясняется подробно. Я тоже, бывает, путаюсь во всех сложных названиях-связках, но начну читать - все просто
P.S. тут можно обсуждать, что не понятно
P.S. тут можно обсуждать, что не понятно
Спустя 19 минут, 19 секунд (9.03.2011 - 00:12) Andrey65 написал(а):
Евгений А что вы подразумеваете "писать с нуля?" В данных уроках как раз-таки все начинается с -10 для самых маленьких и домохозяек, с создания index.php-первого файла. И ничего готового не было, все самостоятельно создается.
Цитата |
я был очень расстроен тем, что снова начинается не понятно что |
О каких тогда Вы говорите пару своих проектов? Если этого не понимаете.
Цитата |
Ну не хочу я категорически пользоваться никакими готовыми движками |
А никто Вас и не заставляет готовым пользоваться, приводится пример не просто готового сайта, а со структурой разделения и архитектурой MVC. (если не так выразился поправьте)
Цитата |
Люди добрые, подскажите пожалуйста, если кто знает какой нибудь похожий обучающий сайт, где всё будет разложено по полочкам, для новичка, но только создание сайта САМОМУ, без каких либо готовых конструкций и движков. |
Опять 25! А здесь по вашему роботы это ядро создали??? Создается впечатление что вы ленитесь и хотите прыгнуть выше головы. Проще обьяснит г-н Twin http://irbis-school.com
Спустя 16 минут, 2 секунды (9.03.2011 - 00:28) Guest написал(а):
Я извиняюсь, если кого то обидел, я не хотел , простите. Мне как раз и не понятна такая структура MVC. Для чего так извращаться? Нельзя просто разбить страничку на 4 файла, например 1- хедер, 2- навигация, 3- футер, 4- контент, где и будет сам скрипт вывода страницы, формы или ещё чего либо? Ну и конечно прикрутить к ним файл стилей, файл функций, файл конфига. Здесь же как я понял, для ОДНОЙ страницы index.php, создаётся АЖ целых 3 файла с именем index.php. Разве это не путаница, для чего так сделано, объясните пожалуйста, не пойму. И на счёт движка, встречаются слова, где автор говорит что то типа "Возьмём за основу скрипт". Я конечно не видел его, не скачивал, но разве это скрипт не из готового движка? По поводу созданных мной проектов, так это партнёрская программа, написанная полностью с нуля, ну и я почти закончил с новым сайтом, который к сожалению приходится переделывать полностью, т.к я не доволен его структурой, он вообще получился карявый. Про партнёрку могу сказать тоже самое. Она хоть и работает , но держится "на костылях", лишь бы не было ошибок. Если кто нибудь посмотрит исходники этой партнёрки, придёт в ужас от написанных мной "кодов". Больше, чем уверен, загляни я сам сейчас в них (я писал её полгода назад), я сам там не смогу понять ничего в своём же коде. Громоздкие конструкции на switch case и if-else. Новый сайт который я делал, я старался сделать более оригинальным, но почему то он получился ещё хуже . Вот и хотелось бы научиться писать красивые читабельные коды и знать в какой момент какую из (примерно 4000 функций) в какое время нужно применить, чтобы сделать код более лёгким и изящным, а главное правильным. Вообще мне этот сайт очень понравился, за пару часов чтения, я понял те вещи, которых никак не мог понять в течение ГОДА . Автору респект, побольше бы таких сайтов. Но вот кто нибудь ещё помог бы в моей проблеме, научиться писать красивые коды . Понимаю что нужен опыт, который приходит с годами, но не могу ничего хорошего сделать, т.к толком не знаю что как устроено и как лучше разместить код по файлам, чтобы они и в 1 прекрасно склеивались и были читабельны и понятны.
Спустя 11 минут, 42 секунды (9.03.2011 - 00:40) Andrey65 написал(а):
Цитата |
но разве это скрипт не из готового движка? |
Нет, не из готового. Все делается своими ручками. И забудьте слово ядро. Необходимо сначала разобраться со структурой MVC. Пусть вас не пугает количество файлов, это для оптимизации, разделения и гибкости проекта.
Спустя 1 час, 24 минуты, 56 секунд (9.03.2011 - 02:05) inpost написал(а):
Guest
Ты говоришь, что тебе лишь бы так, как Попов рассказывал?! =) Нет уж, его рассказы не тянут даже на дет.садовский уровень. Если хочешь уметь программировать, то прийдется рано или поздно освоить структуру MVC. И там не работа над чем-то крупным, а создание своего ядра под свой сайт. Если тебе интересно, то я воспользовался этими курсами, только немного переделал в упрощенный вид.
Смотри, мне тоже было тяжело понять, пока сам не начал писать по этой структуре, что и тебе советую. Напиши сам всё то, что там говорится, пойми каждый шаг, тогда и легче будет.
MVC и ядро - оптимизатор веб-сайтов, где можно разделять работу между несколькими программистами и верстальщиками так, чтобы они друг-друга не трогали! В нём очень просто вносить любые изменения в дальнейшем и очень подходит как шаблон для всех.
Любой сайт имеет ядро, есть ядро дураков (хедер-футер-боди), есть ядро профи, всё это расписано на irbis-team.com. Конечно же я не говорю, что разделять на хедер-фудер не правильно, но это уже вторая часть разделения, а первую не стоит проходить.
Как было раньше сказано, Вас напугал объем и Вы ленитесь вникать в суть каждого скрипта, в этом то и проблема Ваша.
Ты говоришь, что тебе лишь бы так, как Попов рассказывал?! =) Нет уж, его рассказы не тянут даже на дет.садовский уровень. Если хочешь уметь программировать, то прийдется рано или поздно освоить структуру MVC. И там не работа над чем-то крупным, а создание своего ядра под свой сайт. Если тебе интересно, то я воспользовался этими курсами, только немного переделал в упрощенный вид.
Смотри, мне тоже было тяжело понять, пока сам не начал писать по этой структуре, что и тебе советую. Напиши сам всё то, что там говорится, пойми каждый шаг, тогда и легче будет.
MVC и ядро - оптимизатор веб-сайтов, где можно разделять работу между несколькими программистами и верстальщиками так, чтобы они друг-друга не трогали! В нём очень просто вносить любые изменения в дальнейшем и очень подходит как шаблон для всех.
Любой сайт имеет ядро, есть ядро дураков (хедер-футер-боди), есть ядро профи, всё это расписано на irbis-team.com. Конечно же я не говорю, что разделять на хедер-фудер не правильно, но это уже вторая часть разделения, а первую не стоит проходить.
Как было раньше сказано, Вас напугал объем и Вы ленитесь вникать в суть каждого скрипта, в этом то и проблема Ваша.
Спустя 21 минута, 58 секунд (9.03.2011 - 02:27) Guest написал(а):
На счёт курсов Попова, я их не видел и наверное слава богу , почитал о них на данном сайте, стало достаточно . В общем из всего прочитанного про MVC я понял так: В корневой директории сайта я располагаю файл index.php (главной страницы сайта), для которой в отдельных папках создаю файлы CSS, шаблоны и т.д. (Думаю что файл функций и конфига тоже можно в отдельную папку переместить). Происходит следующее. Загружается файл index.php, подключает в себе CSS (+ всё что нужно), затем подключается шаблон для этой индексной страницы и сам обработчик, который будет соединяться с БД, брать значения и пихать их в шаблон, который уже будет подключен в основной файл index.php. Если же я делаю другую страницу, например для вывода каких либо новостей, то в корневой директории создаю к примеру файл news.php, в котром снова подключаю css, опять же шаблон (который уже может быть отличен от индексного), и опять же скрипт обработчик, который будет соединяться с БД, брать данные и пихать в шаблон этой страницы новостей. В общем всё остаётся также, как сделано и у меня (т.е для каждой отдельной страницы свой скрипт(файл)), только все они находятся не в корневой директории, а как бы разделены на шаблоны страниц, исполняемые файлы и файлы которые всё собирают в одну кучу и формируют тем самым страницу. Я правильно понял? Просто сначала до меня не дошло для чего создаётся к примеру папка second, видно как раз для другой страницы. Если не прав в чём то, объясните пожалуйста.
Спустя 7 часов, 34 минуты, 11 секунд (9.03.2011 - 10:01) twin написал(а):
Твоя беда как раз в том, что ты пытаешься рассматривать материал, как руководство по изготовлению сайта. Сам же этого не хочешь, и сам же так воспринимаешь.
Там нет никакой догмы, там просто живые примеры, как можно сделать структуру сайта, не сваливая все файлы в одну кучу. А как именно построить структуру - дело хозяйское. Причем тут один вариант, а тут другой.
Если не нравится такая структура, придумай свою. Вот лично я на каждом новом сайте обязательно что то меняю, так как специфика сайтов разная и структуры тоже разные.
Эти курсы не для того, чтобы научить делать сайты. Они для того, чтобы научить мыслить структурно. А сделать это лучше всего на практике.
И плох тот программист, который будет делать сайты, тупо повторяя данные материалы. Обязательно нужно подстраивать под себя, изменять и улучшать.
В новых курсах сейчас готовится ряд статей, где это освещено гораздо глубже.
Там нет никакой догмы, там просто живые примеры, как можно сделать структуру сайта, не сваливая все файлы в одну кучу. А как именно построить структуру - дело хозяйское. Причем тут один вариант, а тут другой.
Если не нравится такая структура, придумай свою. Вот лично я на каждом новом сайте обязательно что то меняю, так как специфика сайтов разная и структуры тоже разные.
Эти курсы не для того, чтобы научить делать сайты. Они для того, чтобы научить мыслить структурно. А сделать это лучше всего на практике.
И плох тот программист, который будет делать сайты, тупо повторяя данные материалы. Обязательно нужно подстраивать под себя, изменять и улучшать.
В новых курсах сейчас готовится ряд статей, где это освещено гораздо глубже.
Спустя 33 минуты, 5 секунд (9.03.2011 - 10:34) gaserge написал(а):
а мне нравится сайт крутой.
я предыдущие два года пытался освоить пхп, гуглил, но не находя нормального учебника бросал это дело. потом набрел на этот сайтик и поперло)
я предыдущие два года пытался освоить пхп, гуглил, но не находя нормального учебника бросал это дело. потом набрел на этот сайтик и поперло)
Спустя 4 часа, 2 минуты, 31 секунда (9.03.2011 - 14:37) Евгений_77777 написал(а):
Цитата (twin @ 9.03.2011 - 07:01) |
Твоя беда как раз в том, что ты пытаешься рассматривать материал, как руководство по изготовлению сайта. Сам же этого не хочешь, и сам же так воспринимаешь. |
Вы не поняли меня. Я понимаю что это не руководство по построению сайта и не собираюсь делать такую же структуру. Я спросил на счёт того, правильно ли я понял разбиение страницы на части по Вашей схеме? Я спрашивал "Происходит следующее. Загружается файл index.php, подключает в себе CSS (+ всё что нужно), затем подключается шаблон для этой индексной страницы и сам обработчик, который будет соединяться с БД, брать значения и пихать их в шаблон, который уже будет подключен в основной файл index.php. Если же я делаю другую страницу, например для вывода каких либо новостей, то в корневой директории создаю к примеру файл news.php, в котром снова подключаю css, опять же шаблон (который уже может быть отличен от индексного), и опять же скрипт обработчик, который будет соединяться с БД, брать данные и пихать в шаблон этой страницы новостей. ". Правильно ли я понял принцип работы всей такой системы? Т.е другими словами я разбиваю страницу на 4 части. В 1 файле будет шаблон для страницы, на 2-м например шаблон для чего нибудь ещё, в 3-ем файле будет обработчик, ну а 4 файл будет все эти файлы склеивать в один. Так? Сам принцип и смысл я правильно понял, или нет?
Спустя 58 минут, 55 секунд (9.03.2011 - 15:36) inpost написал(а):
Guest
index.php - это и есть шаблон. В зависимости от $_GET параметров передаётся значение, какую страницу подгрузить. в news.php - находится лишь внутреннее тело сайта. Шапка,футер,настройки и конфигурации соединения - всё это в index.php. В news.php - вывод новостей в центральное поле.
На примере это делается так:
index.php?page=news - в скрипт: index.php приходит $_GET['page'], запускается switch и проверяет, какую страницу подгружать, мы знаем, что это news, поэтому include './modules/news/router.php'; Подгруженный роутер проверяет второй параметр $_GET (rem), если пустой - то загрузка обычная.
2 простых примера: index.php?page=news&rem=read и index.php?page=news&rem=show , в зависимости от rem подключаем из папки modules/news/ нужный файл: read.php или show.php , где в read идёт вывод всех новостей, а в show.php - одна новость, это к примеру.
Но там идёт не вывод новости, а обработка, то есть соединение с БД, формирование текста и её анализ. Получается в show.php $new = 'бла-бла-бла, html код';
Далее в роутере, подключается вторая часть из шаблонов: /skins/tpl/news/show.tpl . в ней находится HTML-разметки и в нужном месте вывод: echo $new; Больше ничего.
При добавлении новой странице добавляется лишь в папке modules - новый модуль, в tpl - новый вид для модуля, а в index.php указывается её путь.
index.php - это и есть шаблон. В зависимости от $_GET параметров передаётся значение, какую страницу подгрузить. в news.php - находится лишь внутреннее тело сайта. Шапка,футер,настройки и конфигурации соединения - всё это в index.php. В news.php - вывод новостей в центральное поле.
На примере это делается так:
index.php?page=news - в скрипт: index.php приходит $_GET['page'], запускается switch и проверяет, какую страницу подгружать, мы знаем, что это news, поэтому include './modules/news/router.php'; Подгруженный роутер проверяет второй параметр $_GET (rem), если пустой - то загрузка обычная.
2 простых примера: index.php?page=news&rem=read и index.php?page=news&rem=show , в зависимости от rem подключаем из папки modules/news/ нужный файл: read.php или show.php , где в read идёт вывод всех новостей, а в show.php - одна новость, это к примеру.
Но там идёт не вывод новости, а обработка, то есть соединение с БД, формирование текста и её анализ. Получается в show.php $new = 'бла-бла-бла, html код';
Далее в роутере, подключается вторая часть из шаблонов: /skins/tpl/news/show.tpl . в ней находится HTML-разметки и в нужном месте вывод: echo $new; Больше ничего.
При добавлении новой странице добавляется лишь в папке modules - новый модуль, в tpl - новый вид для модуля, а в index.php указывается её путь.
Спустя 6 минут, 57 секунд (9.03.2011 - 15:43) Евгений_77777 написал(а):
Примерно понял. Спасибо!
Спустя 3 часа, 53 минуты, 33 секунды (9.03.2011 - 19:36) Евгений_77777 написал(а):
Вроде всё сделал как положено, разместил все файлы на своих местах, так как понял. Всё работает, страница "собирается" нормально. Но вот проблема. Пробую создать запрос к базе, выбрать оттуда записи и вывести их в цикле через подключаемый файл шаблона. Написал вот такой код
//Создаём запрос к базе
$ret= query("SELECT `id`, `title` FROM `text` ORDER BY `id`", __FILE__, __LINE__);
//Запускаем функцию буферизации
ob_start();
//Подключаем шаблон формы
require_once './template/views/index.tpl';
//Делим массив на ключ=> значение
foreach($ret as $k=> $v) {
//Выводим в цикле форму, подставляя в неё значения
$content = ob_get_contents();
}
//Закрываем буферизацию
ob_end_clean();
В файле index.tpl у меня форма и у value полей проставлены значения например <?=$v['title']; ?> Поправьте пожалуйста что я не правильно делаю.
//Создаём запрос к базе
$ret= query("SELECT `id`, `title` FROM `text` ORDER BY `id`", __FILE__, __LINE__);
//Запускаем функцию буферизации
ob_start();
//Подключаем шаблон формы
require_once './template/views/index.tpl';
//Делим массив на ключ=> значение
foreach($ret as $k=> $v) {
//Выводим в цикле форму, подставляя в неё значения
$content = ob_get_contents();
}
//Закрываем буферизацию
ob_end_clean();
В файле index.tpl у меня форма и у value полей проставлены значения например <?=$v['title']; ?> Поправьте пожалуйста что я не правильно делаю.
Спустя 13 минут, 8 секунд (9.03.2011 - 19:49) inpost написал(а):
__FILE__, __LINE__); - вот это что такое и зачем?
Спустя 18 минут, 51 секунда (9.03.2011 - 20:08) Евгений_77777 написал(а):
Это для функции. У меня запрос идёт через пользовательскую функцию, она выводит сообщения об ошибках на какой строке и в каком файле. Не особо нужны конечно но тем не менее, она работает и не мешает. У меня все запросы через неё проходят, не обращайте внимания. Да и немного не так я по-моему написал код. Вот переделанный[php]
$ret= query("SELECT `id`, `title` FROM `text` ORDER BY `id`", __FILE__, __LINE__);
ob_start();
require_once './template/views/index.tpl';
$content = ob_get_contents();
ob_end_clean();
foreach($ret as $k=> $v){
echo $content;
}
НО, в этом случае я получаю нотайсы, что якобы $v не определена, т.е как я понимаю это потому, что эта переменная не попадает в буфер и не может подставиться в шаблон. Как быть?
$ret= query("SELECT `id`, `title` FROM `text` ORDER BY `id`", __FILE__, __LINE__);
ob_start();
require_once './template/views/index.tpl';
$content = ob_get_contents();
ob_end_clean();
foreach($ret as $k=> $v){
echo $content;
}
НО, в этом случае я получаю нотайсы, что якобы $v не определена, т.е как я понимаю это потому, что эта переменная не попадает в буфер и не может подставиться в шаблон. Как быть?
Спустя 25 минут, 42 секунды (9.03.2011 - 20:34) inpost написал(а):
Евгений_77777
$content = ob_get_contents(); - все содержание тут!
ob_end_clean();
А потом в нужном месте echo $content;
$content = ob_get_contents(); - все содержание тут!
ob_end_clean();
А потом в нужном месте echo $content;
Спустя 5 часов, 52 минуты (10.03.2011 - 02:26) Guest написал(а):
Мой совет автору: если пока совсем не понимаешь суть mvc и не было никогда надобности в чем-то подобном - то лучше отложи это на время, пока не созреешь, и продолжай изучать php дальше.
(Чтобы не появлялись мысли, что все сложно, и не осилишь) Просто всему свое время.)
(Чтобы не появлялись мысли, что все сложно, и не осилишь) Просто всему свое время.)
Спустя 16 дней, 11 часов, 8 минут, 58 секунд (26.03.2011 - 13:35) n0_odLe написал(а):
Ты сначала подключил шаблон. Как я понял у тебя в нем на выводе стоят переменнчая $v.
Но объявляешь их ты только после занесения твоего шаблона в переменную $content.
Чтоб не запутаться возьми и вместо буфферизации вставь кусок код шаблона, тогда и увидишь что ты выводишь переменную $v, которая еще даже не объявленна.
Вот так примерно должно быть:
$text_array = query(_ТВОЙ_ЗАПРОС_) ; // массив id и title твоей таблицы
// Он имеет вид
/*
[id_1]* => title_1;
[id_2]* => title_2;
и т.д.
*/
// Если у тебя index.tpl это шаблон каркаса твоего повторяющегося блока вида
/*
<a href="?id=<?=_ВЫВОД ID ДЛЯ ССЫЛКИ_?>">
<?=_ВЫВОД ТЕКСТА ССЫЛКИ_?>
</a>
<br />
*/
// То тебе нужен вот такой код
ob_start();
foreach ($text_array as $this_id => $this_title)
{
include "_ТВОЙ ШАБЛОН_";
}
$content = ob_get_clean();
/*
В шаблоне повторяющегося блока вместо вывода id напишеш $this_id, а вместо названия ссылки $this_title
в $content у тебя вернется html код с некоторым кол-вом ссылок разделенными <br /> Который ты в главном шаблоне и выведеш.
Если у тебя будет больше полей в БД, навпример create_date, то тогда придется при выводе указывать какое поле вывести.
*/
Констркуция <?=$this_id?> равноценна <? echo $this_id ?>, на всякий случай =D
Но объявляешь их ты только после занесения твоего шаблона в переменную $content.
Чтоб не запутаться возьми и вместо буфферизации вставь кусок код шаблона, тогда и увидишь что ты выводишь переменную $v, которая еще даже не объявленна.
Вот так примерно должно быть:
$text_array = query(_ТВОЙ_ЗАПРОС_) ; // массив id и title твоей таблицы
// Он имеет вид
/*
[id_1]* => title_1;
[id_2]* => title_2;
и т.д.
*/
// Если у тебя index.tpl это шаблон каркаса твоего повторяющегося блока вида
/*
<a href="?id=<?=_ВЫВОД ID ДЛЯ ССЫЛКИ_?>">
<?=_ВЫВОД ТЕКСТА ССЫЛКИ_?>
</a>
<br />
*/
// То тебе нужен вот такой код
ob_start();
foreach ($text_array as $this_id => $this_title)
{
include "_ТВОЙ ШАБЛОН_";
}
$content = ob_get_clean();
/*
В шаблоне повторяющегося блока вместо вывода id напишеш $this_id, а вместо названия ссылки $this_title
в $content у тебя вернется html код с некоторым кол-вом ссылок разделенными <br /> Который ты в главном шаблоне и выведеш.
Если у тебя будет больше полей в БД, навпример create_date, то тогда придется при выводе указывать какое поле вывести.
*/
Констркуция <?=$this_id?> равноценна <? echo $this_id ?>, на всякий случай =D
Спустя 1 час, 4 минуты, 49 секунд (26.03.2011 - 14:40) inpost написал(а):
n0_odLe
Все рекомендуют полный вывод:
Все рекомендуют полный вывод:
<?php echo $this_id; ?>
Спустя 1 день, 17 часов, 26 минут, 39 секунд (28.03.2011 - 07:06) n0_odLe написал(а):
short_open_tag на всех нормальных хостингах всегда включен, так что не вижу какой-либо опасности в использовании краткой формы =D Да и букав меньше =D
Спустя 4 часа, 13 минут, 18 секунд (28.03.2011 - 11:20) KonstantinK написал(а):
Евгений_77777 Оформляйте код пожалуйста как положено , а то так неудобно читать
Не совсем понятно как вы обрабатываете результат запроса обычно используют
а с foreach какая-то лабуда получается
Не совсем понятно как вы обрабатываете результат запроса обычно используют
while($v=mysql_fetch_assoc($ret)){,
}
а с foreach какая-то лабуда получается
Спустя 1 минута, 51 секунда (28.03.2011 - 11:22) KonstantinK написал(а):
Ага тут уже по отвечали пока я гулял ладно не обращай внимания