За последние 24 часа нас посетили 37898 программистов и 1734 робота. Сейчас ищут 867 программистов ...

Реализация динамических страниц

Тема в разделе "PHP для новичков", создана пользователем gix, 5 дек 2014.

  1. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    Всем добрый день. Занимаюсь php пару месяцев, написал небольшой сайтец аля homepage и потихоньку осваиваю фрейм CI. Учу для себя, от н.хер делать, поэтому вступать в полемику кто круче программист и т.п. не хочу.
    А вопрос такого характера-суть пхп это формирование дин. страниц. Насколько я понимаю отличие от обычного html в том что страница генерируется в зависимости от входных параметров со стороны пользователя и формируется не лету, так сказать. Иначе можно было б все на html сделать ручками и через ссылки выдавать,(ну может почти все). Вот, но у меня все структура сайта и вообщее мое видение так и получается через if($_Request['что']-ну доступ к разделам через ссылки фактически) -> подгружаем страничку такую то(и эта страничка уже лежит сверстанная в нужной директории). Отсюда у меня вопрос-где ж тогда эта динамика. Ладно у меня там на сайте с десяток пунктов меню и всё, хотя даже и так простынь приличная получается с if $_Request ..... А что будет если это будет нечто интернет магазина что ли. Да я понимаю что я могу просто передать переменныt через массив в html но это мне не даст получение новой страницы с другим интерфейсом. Ну думаю я выразился понятно. Но навсяк случай резюмирую кратко- неужели сайт строить на по логики if get[..] include!!! И даже вот пример такого говнокода
    Код (Text):
    1.  
    2. <?php
    3. echo "<div class='homepage' align='center'>Домашняя страничка</div>";
    4. require_once "scripts/auth_form.php";
    5. if(isset($_SESSION['login']))
    6. {
    7.     include_once "scripts/online.php";
    8.     echo "<div  align='right'>Добро пожаловать ".$_SESSION['login']."</div>";
    9.     echo "<div class='menu' align='right'><a href='?out'>Выйти</a></div><br>";
    10.     include_once "templates/r.html";
    11.     if(isset($_REQUEST['main'])){echo "<div class='f'align='center'><img src='images/me.gif' width='250'>
    12. <p style='width: 200;'>Это мой первый сайт.</p></div>";}
    13.     if (isset($_REQUEST['backbond'])) {?><div align="center"><?php include_once "scripts/guestbook2.php";}?></div><?php
    14.     if (isset($_REQUEST['contacts'])) echo "<div align='center' class='contacts'>
    15.        Кому надо, тот знает</div>";
    16.     if(isset($_REQUEST['products']))
    17.     {
    18.         include_once "scripts/pagination.php";
    19.     }
    20.     if (isset($_REQUEST['forum']))
    21.     {
    22.         include_once "scripts/forum.php";
    23.     }
    24.     if(isset($_REQUEST['video']))
    25.     {
    26.         echo "<div align='center' style='color: cyan'>Текст......<img src='images/smile.gif'></div>";
    27.         echo "<div align='center'> <embed class='video' src='images/me.mp4'></embed></div>";
    28.  
    29.     }
    30.     function out()
    31.     {
    32.         $_SESSION=array();
    33.         session_destroy();
    34.     }
    35.     if(isset($_REQUEST['out'])) {out(); header('Location:r.php');}
    36. }
    37. else
    38. {
    39.     include_once "templates/auth_form.html";
    40.     include_once "templates/r.html";
    41.     echo "<div align='center' class='contacts'>
    42.         Страница доступна только авторизованным пользователям</div>";
    43.     echo "<embed hidden='true' src='images/Untitled.mp3'></embed>";
    44. }
    45. include "scripts/reminder.php";
    46. ?>
    Добавлено спустя 2 минуты 26 секунд:
    то есть или я абсолютно не понимаю концепцию php либо скажите как правильно надо.
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    хз что ты хотел сказать, но правильно начинать с основ и не перепрыгивать через 10 ступенек.
    люди понимают только внятный короткий вопрос — работай над этим.
     
  3. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    печально что ты не понял вопрос, несмотря на то что я для "особых" форумчан резюмировал вопрос в предпоследнем предложении. Думаю тебе пока лучше потренировать память, перед тем как приступать к таким сложным технологиям как форум, несмотря на то что ты зарегистрирован с 2010 года(((((( работай над этим
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    бабке своей хами.

    концепцию ты не понял, потому что пхп может быть где угодно и соотв. вся страница может собираться динамически, а не только выбирать что с харда где считать.
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    а сто́ит? я просто кликаю "Добавить в недруги" и форум за меня помнит — лишнего говна не показывает.
     
  6. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    я могу твоей бабке похамить..........и не только. давай координаты

    Добавлено спустя 1 минуту 57 секунд:
    странно, был задан обычный вопрос реализации формирования страниц на похапе и даже написано предупреждение что меряться х.ями я не собираюсь, и тем не менее все равно тролли залезли. делать что ли нечего.......
     
  7. irobot

    irobot Новичок

    С нами с:
    15 ноя 2014
    Сообщения:
    88
    Симпатии:
    0
    В блоге, интернет магазине, или где либе ещё, контент храниться в базе данных, а в виде таблиц. Например, таблица post хранит названия поста, и содержание. Страница, которая отображает пост одна. Она просто подгружает из базы нужные данные.
    Учите mysql, и ООП
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты реально хочешь стрелу со мной забить чтоли? я ж не один приеду, а с друзьями, на чёрных бэхах, и мы тебя отмудохаем как бомжа. Ты здоров?

    Добавлено спустя 3 минуты 35 секунд:
    ************* =) ты с Украины съехал чтоли? Рашка давит твой любимый город? Иди там кулаками помаши.
     
  9. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    о, хоть один конструктивный ответ. php и mysql учил но пока не на том уровне видимо чтоб это все реализовывать полностью. Моих знаний в mysql хватает только для написания гостевых книг, регистрация и т.п.

    Добавлено спустя 1 минуту 25 секунд:
    маладэц ты меня вычислил, тепер буду не спать бояться))))))))))))))))
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    у Андрея был конструктивный ответ: хочешь говорить с людьми - говори на их языке. Для этого надо чуток подучить терминологию. У меня был конструктивный ответ: пхп может сформировать страницу налету. Всю. Целиком всю. То что ты там что-то подгружаешь с харда - это твоё частное решение. Можно и без этого.

    нафиг ты мне нужен. А вот твоё "давай координаты" в тусовке программистов совсем неуместно. Хочешь чтобы люди делились с тобой знаниями, если уж книжки читать тебе лень, то будь вежлив.

    Хотя судя по request тебе не лень читать, но читаешь ты что-то старое очень. Эта переменная давно не используется в практике.

    Добавлено спустя 14 минут 33 секунды:
    Вот темка с книгами
    viewtopic.php?f=13&t=4537
     
  11. dapperkop

    dapperkop Активный пользователь

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    Воу-воу-воу, шайтан, как ты это делаешь? Я бы понял, если бы ты загуглил, но в гуглах по запросу gix немного-то накопаешь... Как ты это делаешь, а?
    [​IMG]
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    он просто админит...
     
  13. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    подскажите тогда как еще можно наладить связь с пользователем если не через тот же request. то есть как сигнализировать скрипту что если нажал на это то запусти это?
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    что значит не через реквест? пользователь на клиенте, пых на сервере. пользователь нажал на что-то - браузер делает ЗАПРОС к серверу и тот уже в свою очередь запускает пхп машину, которая в свою очередь запускает подходящий скрипт. реквест это и есть запрос от одной точки к другой. в данном случае от клиента к серверу. а если ты про суперглобальный массив то игорь прав - что-то очень древнее ты читаешь. есть контекстные суперглобальные массивы. реквест это салат из них же, но поскольку ключи уникальны - будут данные из последнего в очереди объявления.
     
  15. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    я имею ввиду следующее-представь у меня есть страница на которой 30 ссылок на что либо. То есть что писать 30 раз if request-я про это, то есть как можно такиее вещи писать более компактно, вот вопрос.поэтому спрашиваю как такие вещи реализуются в современном мире.
    P.S. читаю щас нативно котерова

    Добавлено спустя 59 секунд:
    ну и речь конечно идет про суперглобальный массив, где ключ-это имя ссылки
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    $_GET и $_POST теперь используются вместо $_REQUEST, вот о чем я.

    Добавлено спустя 2 минуты 19 секунд:
    Ты давай ссылки на разные пхп файлы или сделай обработку всех урлов в индекс.пхп.
     
  17. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    спасибо за ответы. разговор вошел в норм русло. ну если честно не вижу(читай не знаю) как разница принципиальная между get и request, то есть объем кода не поменяется все равно, если я просто заменю $_request на $_get, в обеих случаюх данные в строке url будут отображаться. Post юзаю когда нужно передать личные данные аля пароль логин и т.п. Ну а вообщем так и получается что я даю ссылки на скрипты через get/request.Мне товарищ (матерый программер) рассказывал что через какие то фактори все делается но я пока хз что это
     
  18. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Пришел к понимаю того что необходимо структурировать код. Взял фреимворк, гуд.
    В приложение должен быть роутинг который получая тот или иной урл определял какой класс какой метод вызывать, и разделяй html от php да бы в твою сторону не посыпались проклятия от виртуозов пыха.

    Посмотри в гугле как написать простой mvc фреимворк, а дальше думай практикуйся.
     
  19. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    спс за совет. я как раз сейчас и занимаюсь нечто подобным
    Код (Text):
    1.  
    2. class Article extends CI_Controller
    3. {
    4.     public function __construct()
    5.     {
    6.         parent::__construct();
    7.         $this->load->model('articles');
    8.     }
    9.     public function index()
    10.     {
    11.         $data=array(
    12.             'title'=>'news_3',
    13.             'text'=>'Это статья про новости культуры и спорта'
    14.         );
    15.         $this->articles->insert_data($data);
    16.     }
    17.     public function show_news()
    18.     {
    19.         $this->articles->show_data();
    20.     }
    21. }
    Добавлено спустя 54 минуты 44 секунды:
    ну я это понимаю что все делается динамически, ибо сделать даже какой нибудь простой проект с моей методикой нереально(или ацкей гемор).Другое дело что мне не хватает знаний как это на практике сделать. Хотя я понимаю суть ООП(еще на c# практиковал немного), знаю базовые запросы sql но этого недостаточно.Я понимаю как там с бд вытащить какой то текст и за.башить типа раздел новостей который удачно показывается в мануале CI, НО КАК запихнуть в бд полностью клиентскую часть, дизайн, картинки и прочую херь хз, то есть смена визуализации при переходе на разные страницы. И книги и всякие статьи я постоянно читаю и там же научился этой хрени с html-ю аля href=?puk if $_request['puk'] то....примеров же другой реализации пока не встречал.

    Добавлено спустя 14 минут 4 секунды:
    ну я это понимаю что все делается динамически, ибо сделать даже какой нибудь простой проект с моей методикой нереально(или ацкей гемор).Другое дело что мне не хватает знаний как это на практике сделать. Хотя я понимаю суть ООП(еще на c# практиковал немного), знаю базовые запросы sql но этого недостаточно.Я понимаю как там с бд вытащить какой то текст и за.башить типа раздел новостей который удачно показывается в мануале CI, НО КАК запихнуть в бд полностью клиентскую часть, дизайн, картинки и прочую херь хз, то есть смена визуализации при переходе на разные страницы. И книги и всякие статьи я постоянно читаю и там же научился этой хрени с html-ю аля href=?puk if $_request['puk'] то....примеров же другой реализации пока не встречал.
     
  20. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Перед тем, как пытаться что-то сделать на MVC-фрейморке, неплохо бы почитать, что такое mvc :) В бд всю клиентскую часть никто не пихает - на это есть часть view и шаблоны для неё. Ты, к примеру, вытаскиваешь из базы текст поста (этим занимается слой под названием Модель), передаёшь его в вьюху (это контроллер), а она уже отображает всё, что поста не касается... Картинки спокойно себе лежат на жёстком диске сервера... https://ru.wikipedia.org/wiki/Model-View-Controller
     
  21. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    ты наверное хотел сказать что модель вытащила данные, передала в контроллер, контроллер подгрузил вьюху и загрузил в неё данные обработанные моделью. насколько я знаю алгоритм работы этого патерна такой

    Добавлено спустя 1 минуту 3 секунды:
    модель и view не должны взаимодействовать напрямую, все через логику контроллера
     
  22. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Модель не передаёт данные в контроллер по своей инициативе - контроллер просит её это сделать. Может у меня в посте и не так сформулировано. Если ты это понимаешь, то почему хочешь пихать в базу всё, что может прийти в голову?
     
  23. gix

    gix Новичок

    С нами с:
    28 окт 2014
    Сообщения:
    168
    Симпатии:
    0
    я ничего не собираюсь, я просто задаю вопросы людям, которые предполагается хорошо шарят предмет, и пытаюсь может для себя что то новое выяснить, в части оптимизации кода и т.п.
    P.S.
    даже не представляю как модель может что то делать по своей инициативе, если я ее подгружаю в контроллер и из него вызываю те методы модели которые мне нужны.

    Добавлено спустя 4 минуты 1 секунду:
    вообщем судя по ответам я сделал такие выводы-взаимодействие с клиентом либо через get/request либо роутинг. текстовая часть хранится в базе данных и подргужается в шаблон(он же вью), остальное же все верстается ручками, ну либо скрипты подгружается, короч смотря что надо вывести.
     
  24. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Не, ну тут всё зависит от того, какой сайт делается. Если у меня сайт с автомобильными объявлениями, то в базе хранится не текст, а все поля, какие должны быть заполнены для таких объявлений - т.е. тип коробки передач, тип кузова, количество дверей и пр. А вьюха уже преобразует это дело в html для вывода клиенту.