За последние 24 часа нас посетили 16589 программистов и 1292 робота. Сейчас ищут 1017 программистов ...

Открытие разных ссылок в одном DIV

Тема в разделе "PHP для новичков", создана пользователем Paxan-1, 12 сен 2024.

  1. Paxan-1

    Paxan-1 Активный пользователь

    С нами с:
    26 окт 2017
    Сообщения:
    14
    Симпатии:
    1
    Всем привет!
    Был у меня старенький сайт из 3-х Frame -ах.(1меню, 2основной_контент и 3новости). Решил переделать на Div-ах.
    Все сделал, но не понял, как открывать ссылки на php файлы в одном и том же Dive?
    То есть раньше у меня все ссылки в фрейме меню имели таргет на открытие в фрейме 2.
    А как теперь сделать также на DIV ?
    Изначально в Div основоной_контент указана общая инфа, а если нажать на другую ссылку из меню нужно чтобы эта инфа заменилась на другой контент (там будет инклуд php файла).

    Наверно, коряво изложил, но думаю суть понятна.
     

    Вложения:

  2. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    409
    Симпатии:
    78
    Адрес:
    Бавария, Германия
    Добрый день!
    Если Вы имете страрый сайт, в котором ссылки открывались в iframe, а хотите в одном div
    то можно сделать просто на JS
    HTML:
    1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    2. <title>Test</title>
    3. #view_frame{display: none}
    4. #content{
    5.     border: 1px solid black;
    6.     margin-top: 20px;
    7. }
    8. </head>
    9. <div>
    10. <a href="start.html"   target = "view_frame">Oсновной_контент</a>
    11. <a href="page1.html"   target = "view_frame" >Страница 1</a>
    12. <a href="page2.html"   target = "view_frame" >Страница 2</a>
    13. <a href="page3.html"   target = "view_frame" >Страница 3</a>
    14. </div>
    15. <div id="content"></div>
    16. <iframe src="" name="view_frame" id="view_frame" ></iframe>
    17. </body>
    18. viewFrm = document.getElementById("view_frame");
    19. viewDiv = document.getElementById("content");
    20. viewFrm.src="start.html";
    21. viewFrm.onload = (event) => {
    22.     viewDiv.innerHTML = view_frame.document.body.innerHTML;
    23. };
    24. </html>
    start.html
    HTML:
    1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    2. <title>Untitled Document</title>
    3. </head>
    4. Основной контент
    5. </body>
    6. </html>
    page1.html
    HTML:
    1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    2. </head>
    3. Страница 1
    4. </body>
    5. </html>
    page2.htm
    HTML:
    1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    2. </head>
    3. Страница 2
    4. </body>
    5. </html>
    page3.html
    HTML:
    1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    2. </head>
    3. Страница 3
    4. </body>
    5. </html>
    Удачи!
     

    Вложения:

    • test_ifr.zip
      Размер файла:
      1,8 КБ
      Просмотров:
      0
    #2 Vladimir Kheifets, 12 сен 2024
    Последнее редактирование: 12 сен 2024
  3. Paxan-1

    Paxan-1 Активный пользователь

    С нами с:
    26 окт 2017
    Сообщения:
    14
    Симпатии:
    1
    Спасибо за ответ,
    только возник вопрос, а вот весь контент, который на страницах 1,2,3 он загружается сразу? А потом только отображается при нажатии на конкретную ссылку? Дело в том, что на этих страницах у меня большие списки информации, а страниц таких около 30, и не хотелось бы, чтобы все это грузило сервер, а чтобы было так, что инфа загружалась только та, на которую нажал пользователь.


    Еще нашел такой скрипт, меняющий контент Div:
    Код (Text):
    1. <div id="myDiv">
    2. <table>  <tr><th> Добро пожаловать!</th></tr></table>
    3. </div>
    4.  
    5. <button onclick="changeText()">Change Text</button>
    6.  
    7. <script>
    8.  
    9. function changeText() {
    10.  
    11.   const myDiv = document.getElementById("myDiv");
    12.  
    13.   myDiv.innerHTML = "<table><tr>  <th>Основной Контент </th></tr></table>";
    14.  
    15. }
    16.  
    17. </script>
    Но он в строке myDiv.innerHTML = "<table><tr> <th>Основной Контент </th></tr></table>"; вставляет только HTML данные, а код PHP не вставляет, а у меня там должно быть вставка include "сontent.php"
     
  4. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    409
    Симпатии:
    78
    Адрес:
    Бавария, Германия
    Добрый день!
    Контент не загружается сразу, а только стартовая страница start.html
    Код (Javascript):
    1. viewFrm.src="start.html";
    Если эту строку убрать, то странницы будут загружаться только по клику.
    Если страницы на PHP, то на сервере создаётcя и отправляется в браузер HTML документ.
    Например, если такой start.php
    PHP:
    1. <?PHP
    2. $la = $_SESSION["la"];
    3. $str["ru"]="Oсновной контент";
    4. $str["en"]="Main content";
    5. ?>
    6. <html>
    7. <head>
    8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    9. <title>Untitled Document</title>
    10. </head>
    11. <body>
    12. <? echo $str[$la] ?>
    13. </body>
    14. </html>
    Если есть такой content.php
    PHP:
    1. <?
    2. echo $str[$la]
    то есно можно заменить на include
    PHP:
    1. <?PHP
    2. $la = $_SESSION["la"];
    3. $str["ru"]="Oсновной контент";
    4. $str["en"]="Main content";
    5. ?>
    6. <html>
    7. <head>
    8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    9. <title>Untitled Document</title>
    10. </head>
    11. <body>
    12. <? include("content.php") ?>
    13. </body>
    14. </html>
    В Вашем примере строку
    Код (Javascript):
    1. myDiv.innerHTML = "<table><tr> <th>Основной Контент </th></tr></table>";
    можно в PHP записть так
    PHP:
    1. Но он в строке myDiv.innerHTML = "<? include('content.php')?>";
    Если в content.php
    PHP:
    1. echo "<table><tr> <th>Основной Контент </th></tr></table>";
    Удачи!
     
    #4 Vladimir Kheifets, 13 сен 2024
    Последнее редактирование: 13 сен 2024
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.828
    Симпатии:
    651
    @Vladimir Kheifets, на форуме PHP в разделе «PHP для новичков» сразу уводить ТС'а на JS – это западло. С таким подходом лучше постить на киберфоруме. Там JS сейчас в почете, а пых задвинули.

    @Paxan-1, то что вы спрашиваете – это основы работы PHP. Данный раздел предназначен все же для новичков, а не «нулевичков». Будет лучше, если вы с основами познакомитесь самостоятельно, а потом уже мы вам поможем. Либо, если вникать самому не интересно, можно попросить сделать за вас. Там халява предполагается, но особо не приветствуется.
    --- Добавлено ---
    P.S. Ваш хостинг поддерживает PHP/MySQL? Если да, лучше сделать нормально на PHP/MySQL, чем как попало на JS.
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.828
    Симпатии:
    651
    Если вникать самому не интересно и тем более не интересно платить за разработку, можно взять почти любую бесплатную CMS или какой-нибудь простой движок для морды сайта, например G-Drive. Там все просто:
    Код (Text):
    1. INSERT INTO `site_categories` (`id`, `name`, `content`, `bits`) VALUES
    2. ('', 'Home', '<h1>It works!</h1>\r\n<p>This is a home page.</p>', 0),
    3. ('page-1', 'Страница 1', 'Контент', 0),
    4. ('page-2', 'Страница 2', 'Контент', 0),
    5. ('page-3', 'Страница 3', 'Контент', 0);
    PHP:
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <title><?= $page['name'] ?> | Site</title>
    5. </head>
    6. <body>
    7.   <nav>здесь ваша менюшка</nav>
    8.   <div>
    9. <?= $page['content'] ?>
    10.  
    11.   </div>
    12. </body>
    13. </html>
    Можно использовать и вложенные шаблоны, контроллеры и т.п.
     
    #6 miketomlin, 14 сен 2024
    Последнее редактирование: 14 сен 2024