Тема: Організація багатофайлового сайту

В мене є

  • header.php

  • index.php

  • footer.php

  • style.css

Я хочу вивести на екран (як результат) горизонтальну смугу, вміст і знову горизонтальну смугу. В якості смуги я використовую зображення, і за допомогою CSS стилів це все розміщую
CSS

.flex-container {
    display: -webkit-flex;
    display: flex;
    -webkit-justify-content: center;
    justify-content: center;
}

.flex-item {
    margin: 0px;
}

Я не став скидати весь код, там в мене з'єднання з БД, повно HTML елементів і т.д., просто для прикладу написав як в загальному це виглядає
HTML

<div class="flex-container">
  <div class="flex-item" style="background-image:url(<?=$image?>);background-repeat: repeat-y;width:20px;"></div><!-- HEADER.PHP --> 
  <div class="flex-item">Вміст...</div><!-- INDEX.PHP --> 
  <div class="flex-item" style="background-image:url(<?=$image?>);background-repeat: repeat-y;width:20px;"></div><!-- FOOTER.PHP --> 
</div>

$image - це шлях до картинки, статично шлях задати не можливо - шлях завантажується з БД.

Проблеми такі
1) Мені потрібно два рази, для двох файлів, заходити в БД, спочатку header, а потім footer, тому що footer, звичайно, не бачить змінну яка знаходиться у header (змінну $image)
2) Було б набагато ліпше закинути стилі в файл для стилів, а в div просто додати клас, але в CSS не буде виконуватися PHP код, як передати в CSS файл шлях до зображення, який може динамічно змінитися.

Допоможіть вирішити ці проблеми.

Подякували: 221VOLT, Monolith2

2

Re: Організація багатофайлового сайту

1) Для того щоб зберегти змінну яка вже завантажилась в header можна зберегти її в сесії

$_SESSION["myImage"]

тоді можна буде звертатись до неї і в іншому файлі і використати якщо не пуста
або створити змінну типу global яка буде видима в різних модулях
2) JS може міняти стилі просто в його код вставити дані які будуть отримані при формуванні сторінки і

$( document ).ready(function() {
  $('.myClass').css('background-image', 'url(<?php echo $image ?>)');
});

(бібліотеку JQyery треба буде для цього коду)

Якось от так, може хтось підкаже краще вирішення

Подякували: Betterthanyou, Monolith2

3

Re: Організація багатофайлового сайту

А як ви хедер і футер підключаєте? Умовно кажучи, якщо вони є як require_once в файлі layout.php, то вони якби стають частинами його файлу. Відповідно змінна $image не знаходиться окремо в хедері і футері, а знаходиться в лейауті і має бути доступна, якщо ви все в правильному порядку підключили.

Подякували: Betterthanyou, 221VOLT2

4

Re: Організація багатофайлового сайту

Я вже зрозумів, тут якраз в підключені справа... завтра напишу докладніше

Подякували: 221VOLT1

5

Re: Організація багатофайлового сайту

Betterthanyou написав:

Я вже зрозумів, тут якраз в підключені справа... завтра напишу докладніше

*THUMBSUP*  приємно бачити як люди успішно навчаються)

Подякували: Betterthanyou, ostap34PHP, Monolith3

6 Востаннє редагувалося Monolith (12.09.2017 12:23:37)

Re: Організація багатофайлового сайту

Можливо недокумекав. Чому не можна зробити єдину точку входу через index.php, в якому робити всі потрібні зміни, оголошувати всі потрібні змінні, а далі вже підлючати шаблон .html або .tpl, в якому, де потрібно вставляти змінні, та робити щось...

7

Re: Організація багатофайлового сайту

Monolith написав:

Можливо недокумекав. Чому не можна зробити єдину точку входу через index.php, в якому робити всі потрібні зміни, оголошувати всі потрібні змінні, а далі вже підлючати шаблон .html або .tpl, в якому, де потрібно всталяти змінні, та робити щось...

Чекайте, ще пару тем і людина доросте до фреймворків і ООП. Всьому свій час.

Подякували: Monolith, leofun012

8

Re: Організація багатофайлового сайту

це роблять зазвичай так:
https://basicsofwebdevelopment.files.wordpress.com/2015/01/mvc_role_diagram.png

Подякували: Monolith1

9

Re: Організація багатофайлового сайту

Якщо брати, що сайт складається з чотирьох файликів, і розширюватися більше не буде (чи буде?), то можна зробити і простіше...

10

Re: Організація багатофайлового сайту

З чого б це змінна оголошена в одному місці скрипта, була недоступна в іншому?
(якщо це не навмисна інкапсуляція)
////
Ви розглядаєте header.php i footer.php як два різних скрипта, але якщо ви інклудите їх в index.php, то дані з хедера будуть доступні і в футері.

Подякували: leofun011

11

Re: Організація багатофайлового сайту

P.S. Не забудьте тільки, що змінна доступна для використання після оголошення (нижче кодом)...