На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
Страницы: (4) [1] 2 3 ... Последняя » все  ( Перейти к последнему сообщению )  
    > Повысить приоритет стиля (части стиля) из php файла над стилем из файла css
      Добрый день всем. Как и все новички извиняюсь за "глупые" вопросы. Но на мой взгляд самый глупый вопрос - это не заданный вопрос. Самостоятельно пробую изучить сайтостроение. Верстку более менее освоил. Возникли трудности с php. Создаю тренировочный сайт пока из трех страниц: index.php, main.css, admin.php. Сейчас я их упростил до одного дива на странице индекс.пхп хотя адаптивная верстка с гридами и флексами вроде получается. Поставил перед собой такую задачу: индекс.пхп является главной страницей, шаблоном. Её стиль, оформление записаны в мэйн.цсс. На страничке админюпхп в будущем хочу с помощью всяких форм сделать так, чтобы условный админ, мальчик Женя, который не знает пхп, да и вообще не силен в вэбпрограммировании и верстке мог с помощью этих форм редактировать на свое усмотрение внешний вид всего сайта или выбранной его части, напр, цвет только футера или картинку только для шапки, или все это плюс бэкграунд всей страницы. Пока получается с помощью require_once вызвать некоторые функции со страницы админ.пхп и либо загрузить файл стилей мэйн.цсс по умолчанию, либо поменять фон всей страницы так, что пропадает стиль для дива. Пробую задать фон для дива отдельной переменной, но он не окрашиваается, хотя если задать там же размер, то размер схватывается и даже текст может выравняться по его границе, если вставить его внутрь дива. В отладчике тоже показывает при наведении на стиль границы и даже срабатывает изменение переменной $color. Пробовал получать данные из цсс с помощью file_get_contents, но получаю текстовую вставку и не знаю, что с ней делать. Пробовал другие способы получить класс или описание из цсс. Но либо я вообще не правильно делаю, либо оно не так работает и тут не нужно.
      Содержимое index.php
      ExpandedWrap disabled
        <head>
        <meta charset="UTF-8"><?php require_once('admin.php');?>
        <title>смена обоев</title>
        </head>
         <body>
         <div><div class="wrap"><?php
        $ob = file_get_contents('main.css'); // эту функцию можно и в админюпхп вызвать, суть не меняется
        echo $ob;?>
        </div>  </div>
        </body>

      Содержимое main.css
      ExpandedWrap disabled
        body {
            background: #951;
        }
        .wrap {
            background:#159;
            margin: auto;
            width: 700px;
            height: 600px;
            z-index: 3;
        }

      Содержимое admin.css
      ExpandedWrap disabled
        <body>
        <?php
        $body_style="default";
        if ( $body_style == "0") {
        echo '<link rel="stylesheet" type="text/css" href="main.css">';
        }
        else echo "<body bgcolor='red'>";
        ?>
        <?php
        $w=1;
        if($w==1)
        {
            $color='#159';
        }elseif($w==2)
        {
        $color='#aba';
        }else{
        $color='green';
        }
        echo '<style type="text/css";>
        .wrap {backgraund:#951;
        margin: auto;
            width: 700px;
            height: 600px;
        z-index: 3;
        }
        </style>';
        ?>
        </body>

      Как сделать так, чтоб для начала фон всей страницы грузился из файла стилей мэйн.цсс, а фон для .wrap из админ.пхп? Ну и вообще в целом выполниь мои хотелки, описанные выше. Джава скрипты для меня пока вообще темный лес. Могу их только вызывать, но не писать. Да и понимаю, что на пхп все мои хотелки можно осуществить.
        Тут куча ошибок:

        - опечатка в имени свойства: backgraund - нет такого свойства;
        - переменная $color в admin.css пишется, но нигде не читается;
        - тег <style> внутри <body>; да, браузеры нынче умные и обычно догадываются, что хотел сказать верстальщик, но лучше все-таки писать по правилам;
        - вывод содержимого файла в HTML не экранируется, что может привести к проблемам; нужно всегда использовать htmlspecialchars().
          Цитата D-G @
          для начала фон всей страницы грузился из файла стилей мэйн.цсс, а фон для .wrap из админ.пхп?

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

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

          Возможно у Вас вопрос общего характера, к примеру "подскажите, как правильней организовать хранение переменных, из которых я формирую сайт. Для начала хотелось бы вариант попроще в реализации.?

          Вот example-"набросок от руки", без сохранения данных, без учета вопросов безопасности, без оптимизации правил формирования страницы.
          template.html
          ExpandedWrap disabled
            <!DOCTYPE html>
            <html>
                <head>
                    <title><!--page_title--></title>
                    <meta charset="utf-8">
                    <link href="/style.css" rel="stylesheet" />
                </head>
                <body style="background-color:BodyBackgroundColorForChange;">
                    <div class="ClassForChange">элемент отобразится у всех, но его цвет зависит от того, кто зашел...</div>
                    <div style="background-color:ColorForChange_1;width:70px;height:70px;">example</div>
                    <!--page_body-->
                </body>
            </html>


          style.css
          ExpandedWrap disabled
            body
            {
                width:100%;
                height:100%;
                background-color:#DDD;
                color:#000;
            }
            div.ClassForUser
            {
                margin: 2px;
                background-color:#777;
                color:#FFF;
            }
            div.ClassForAdmin
            {
                margin: 3px;
                border:2 px solid #FF0000;
                background-color:#770000;
                color: #FFF;
            }


          index.php
          ExpandedWrap disabled
            <?php
                function are_user_is_admin() /*мой инглиш слаб*/
                {
                    if (isset($_GET['MyAdmin'])) {return true;}
                    else {return false;}
                }
             
                /*НАЧАЛО так @#$%^ храним шаблоны...*/
                $html_template=file_get_contents('template.html');
             
                $html_SetThis_MetaTitle['user']='привет юзер! )';
                $html_ChangeForThisClass['user']='ClassForUser';
                $html_SetThisBodyBgColor['user']='#D0E0F0';
                $html_text['user']='
                    <div>
                        я юзер...
                    </div><a href="?MyAdmin">зайти в админку</a>';
             
                $html_SetThis_MetaTitle['admin']='Я одмин!';
                $html_ChangeForThisClass['admin']='ClassForAdmin';
                $html_SetThisBodyBgColor['admin']='#D0F0E0';
                $html_text['admin']='
                    <div class="ClassForAdmin">
                        а я- одмин! :)
                        <form action="/index.php" method="post" enctype="multipart/form-data">
                            цвет фона для юзера:<input name="color_value" value="#FF0000" type="text">
                            <input value="сменить" type="submit">
                        </form>
                    </div><a href="/">зайти под юзером</a>';
                
                $ColorForChange_1='#000';
                /*КОНЕЦ так @#$%^ храним шаблоны...*/
             
                /*определить какой массив выбран (массив "юзер", или массив "админ")*/
                if (are_user_is_admin()) {$UserName='admin';} else {$UserName='user';}
                
                /*обработка пользовательского ввода*/
                if (isset($_POST['color_value'])) {$ColorForChange_1=$_POST['color_value'];}
                
             
                /*изменение выводимого шаблона*/
                $html_template=str_replace('ClassForChange', $html_ChangeForThisClass[$UserName], $html_template);
                $html_template=str_replace('<!--page_title-->', $html_SetThis_MetaTitle[$UserName], $html_template);
                $html_template=str_replace('<!--page_body-->', $html_text[$UserName], $html_template);
                $html_template=str_replace('BodyBackgroundColorForChange', $html_SetThisBodyBgColor[$UserName], $html_template);
                $html_template=str_replace('ColorForChange_1', $ColorForChange_1, $html_template);
             
                echo $html_template;
                //flush();
            ?>
            Цитата AVA12 @
            Тут куча ошибок:

            - опечатка в имени свойства: backgraund - нет такого свойства;
            - переменная $color в admin.css пишется, но нигде не читается;
            - тег <style> внутри <body>; да, браузеры нынче умные и обычно догадываются, что хотел сказать верстальщик, но лучше все-таки писать по правилам;
            - вывод содержимого файла в HTML не экранируется, что может привести к проблемам; нужно всегда использовать htmlspecialchars().

            Про бекграунд видимо опечатался ))) столько вариантов перепробовал, и вы правы, применился цвет. Хотя вроде и копировал из цсс файла несколько раз в различных вариантах, но там видимо другие ошибки были, вот и накладывались.
            Про переменную $color - тоже раньше пробовал, не срабатывала, но в отладчике показывала, что функция работает, цвет выбирался. Сейчас исправив опечатку в бэкграунд у меня див закрасился, теперь выбирая значения переменной W у меня меняется цвет.Сработала вот такая конструкция:
            background:'.$color.';
            Про тег <style> Честно говоря, пробовал таким образом подсунуть данные из цсс файла, и путь прописывал, но не получается. Я же хочу, чтобы часть стиля применялась как переменная из файла пхп, а часть из цсс как "дефолтный шаблон". Но, если убрать в админ.пхп другие переменные стиля (высоту, ширину и тп) для .wrap то останется узкая полоска закрашенного текста.
            Про экранирование почитаю. Понимаю, что для "странички админа" это не совсем правильно. Просто ещё до конца не разобрался.
            Спасибо за замечания и надеюсь на дальнейшие подсказки.

            Добавлено
            Цитата Руслан @
            Для начала, следует формировать более читабельный код - всем будет проще его понять (и Вам в том числе)! :yes:

            Вполне возможно, я ведь только учусь.
            Цитата Руслан @
            Во вторых, вставки <?php .... ?> в html разметку - не лучшее решение. Котлеты желательно хранить отдельно от мух (php от html).

            Это у меня от НетБинс осталось, там же стандартнная форма пхп-страницы такая, я особо и не меняю.

            Цитата Руслан @
            В третьих, следует изначально формировать логическую структуру системы, в том числе определить какие части сайта будут меняться, и где в каком формате хранить эти переменные для их редактирования админом. К примеру цвет фона где по вашему должен храниться? :-?

            Думал дефолтные цвета, да и другие переменные - размер, положение, обтекаемость и тп по идее хранятся в файле цсс.
            Цитата Руслан @
            Возможно у Вас вопрос общего характера, к примеру "подскажите, как правильней организовать хранение переменных, из которых я формирую сайт. Для начала хотелось бы вариант попроще в реализации.?

            Возможно вы и правы, не знаю как правильно организовать, но казалось, что моя логика построения довольна верна. Тем более что это упрощенный вариант. Мне не нужно, по крайней мере пока, делать отдельный стиль для пользователей. Я задумал, чтобы не очень разбирающийся админ мог на своей страничке менять все что он захочет не выискивая место куда вставлять какие значения. Так что все формы для изменения внешнего вида будут на одной странице. Если я правильно понимаю вас, то вы предлагаете сделать кучу стилей. Возможно так правильнее, но для конечного пользователя, а я ставлю себя на его место и вспоминаю как я вообще не разбирался три месяца назад, возможно это будет не удобно. По крайней мере пока я не совсем понимаю до конца вашу мысль.
            Цитата Руслан @

            Вот example-"набросок от руки", без сохранения данных, без учета вопросов безопасности, без оптимизации правил формирования страницы.
            template.html

            А что, разве правильнее делать файл шаблона на штмл? Я свой индекс.пхп задумал именно как файл шаблона.
            Сообщение отредактировано: D-G -
              Цитата Руслан @
              Возможно у Вас вопрос общего характера, к примеру "подскажите, как правильней организовать хранение переменных, из которых я формирую сайт. Для начала хотелось бы вариант попроще в реализации.?

              В любом случае хотелось бы именно ответ и на мой вопрос озвученный раньше: как применять часть стиля из пхп, а часть из цсс файла, и менять их по своему усмотрению без ручной правки кода
                Цитата AVA12 @
                вывод содержимого файла в HTML не экранируется, что может привести к проблемам; нужно всегда использовать htmlspecialchars().

                тоесть нужно вот так?
                ExpandedWrap disabled
                  <html>
                  <head>
                  <meta charset="UTF-8">
                  <?php require_once('admin.php');
                  ?>
                  <title>смена обоев</title>
                  </head>
                   <body>
                  <div><div class="wrap">
                  <?php
                  $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
                  echo $new; // <a href='test'>Test</a>
                  ?>
                  <?php
                  $ob = file_get_contents('main.css');
                  echo $ob;
                  ?>
                  </div>
                  </div>
                  Цитата
                  ExpandedWrap disabled
                    $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
                    echo $new; // <a href='test'>Test</a>
                    ?>
                    <?php
                    $ob = file_get_contents('main.css');
                    echo $ob;

                  Гениально, в натуре! Мне бы такое никогда и в голову не пришло.
                  Умываю руки.
                    Цитата AVA12 @
                    Гениально, в натуре! Мне бы такое никогда и в голову не пришло.

                    Вот так лучше?

                    ExpandedWrap disabled
                      <?php
                      $ob = file_get_contents('main.css');
                      echo htmlentities($ob);
                      ?>


                    Правда я до сих пр плохо понимаю, что именно мне нужно экраировать
                    Сообщение отредактировано: D-G -
                      Цитата D-G @
                      я ведь только учусь.

                      Но Ваше следующее сообщение показывает, что Вы отказываетесь формировать код, удобный к чтению. <_<
                      Цитата D-G @
                      <?php
                      $ob = file_get_contents('main.css');
                      echo htmlentities($ob);
                      ?>

                      Да, 4 строки прочесть не сложно, но даже в них видно отсутствие положительной тенденции сразу на паре уровней
                      1.игнорирование простых правил формирование читабельного кода.
                      2.использование инструмента(в данном случае htmlentities) без понимания "зачем это делается".

                      Соответственно, без обид, но
                      1) Вам ведь не интересно заниматься программированием! Формирование инструмента для редактирование сайта "мальчиком Женей" - затея на мой взгляд провальная. :-?
                      2) Если Вы все же хотите решить задачу, возможно следует пойти на жертвы, как минимум - пожертвовать своим принципом писать код игнорируя правила хорошего тона? :huh:

                      Добавлено
                      Цитата AVA12 @
                      Гениально, в натуре! Мне бы такое никогда и в голову не пришло.

                      Да, я тоже нашел новые акценты в стихе:
                      Цитата
                      О, сколько нам открытий чудных
                      Готовят просвещенья дух,
                      И опыт, сын ошибок трудных,
                      И гений, парадоксов друг,
                      И случай, бог изобретатель.

                      Как говорится - чудны дела твои! Господи прости!...
                        Цитата Руслан @
                        Соответственно, без обид, но
                        1) Вам ведь не интересно заниматься программированием! Формирование инструмента для редактирование сайта "мальчиком Женей" - затея на мой взгляд провальная. :-?
                        2) Если Вы все же хотите решить задачу, возможно следует пойти на жертвы, как минимум - пожертвовать своим принципом писать код игнорируя правила хорошего тона? :huh:


                        Вообще-то интересно. Думаю, да и знаю, что у меня проблема в структурировании знаний, читаю все подряд, скачками, от этого каша в голове. А то, что "для мальчика Жени" типа пишу, так это одна из попыток чего-то структурировать и придать смысл. Ато прочитал как прибавить 2+2 и как вывести это на экран, а где его применять? Вот и придумал прикладную задачу. По идее переменным все равно каким быть - цифры, буквы... Честно говоря, не до конца разобрался в необходимости разделения на булен, интежер и прочие. То, что пишу код как понимаю - это от того, что одни говорят одно, другие - другое. Хотя это одна из причин, почему мне нравится программирование. Тут любой может сделать код ещё более простым и функциональным. Только я не понимаю ещё многого. Кстати, в этой же теме тому пример. Начал её с одной целью - придумать как импортировать часть стиля в пхп, не весь, а именно часть, а начал заниматься htmlentities. В результате ни там ни там нет результата. Честно говоря даже плохо представляю что такое правила хорошего тона в написании программирования. Но очень надеюсь, что когда нибудь количество перерастет в качество. По крайней мере так обещал дедушка Ленин ))) Ну или появится человек, который скажет, сперва нужно сделать это. Оно делается так-то потому что так лучше чем вот эдак. А уж потом надо делать то и то вот таким способом потому что другим вылезет вот тем боком, а тебе нужно этим боком.

                        Кстати, про ваши советы... Вы так и не сказали, почему правильнее делать файл шаблона на штмл, а не на пхп?
                        И почему идея создания инструмента для редактирования сайта провальная?
                        И ещё, я пробую и ваш вариант построения сайта, ещё не все разобрал, но вопросы назревают. Просто делается все параллельно и постепенно, и про htmlentities читается с штмл сущностями (это видимо спецсимволы) и другие примеры проверяются. По моему за сутки есть результаты, пусть небольшие. В конце концов, есть другая работа, которую тоже надо работать, все таки пенсия на носу )
                          Цитата D-G @
                          Ато прочитал как прибавить 2+2 и как вывести это на экран, а где его применять? Вот и придумал прикладную задачу.

                          Ясно. Дело хорошее! :)
                          Рекомендация по инструментам: используйте что то вроде notepad++ - достаточно легкий и удобный редактор кода.

                          Цитата D-G @
                          Вы так и не сказали, почему правильнее делать файл шаблона на штмл, а не на пхп?

                          Во первых - код значительно наглядней, когда разделена логика работы HTML от логики работы PHP. Легче вносить корректировки. :rolleyes:

                          Цитата D-G @
                          И почему идея создания инструмента для редактирования сайта провальная?

                          Нюансов много. Если пишет не опытный программист, итоговый инструмент может использоваться только в личных целях, но ни как не для "Одмина Жени".

                          Цитата D-G @
                          Честно говоря даже плохо представляю что такое правила хорошего тона в написании программирования.

                          1) отступы - визуальное выделение этапов работы программы.
                          2) понятные имена - давать переменным(константам, массивам, функциям, прочим объектам).
                          3) комментарии - следует достаточно(и кратко) комментировать свой код (я избыточные комментарии внес лично для Вас).

                          Простой пример, который делает то, что Вы спросили изначально(сохранение изменений на сервере), и утвердили позже как хранение переменных в .css. Это слегка модифицированный код, который я давал выше(просто умеет записывать в style.css).
                          Предостережений: для новичка в программировании, preg_replace - "тёмны мать его лес, в котором стада чертей ноги себе переломали", лучше для начала заменить на strpos, substr, чем пытаться модифицировать... :whistle:

                          template.html
                          ExpandedWrap disabled
                            <!DOCTYPE html>
                            <html>
                                <head>
                                    <title><!--page_title--></title>
                                    <meta charset="utf-8">
                                    <link href="/style.css" rel="stylesheet" />
                                </head>
                                <body style="background-color:BodyBackgroundColorForChange;">
                                    <div class="ClassForChange">элемент отобразится у всех, но его цвет зависит от того, кто зашел...</div>
                                    <!--page_body-->
                                </body>
                            </html>


                          style.css
                          ExpandedWrap disabled
                            body{
                                width:100%;
                                height:100%;
                                background-color:#DDD;
                                color:#000;
                            }
                            div.ClassForUser{
                                margin: 2px;
                                background-color:#777;
                                color:#fff;
                            }
                            div.ClassForAdmin{
                                margin: 3px;
                                border:2 px solid #FF0000;
                                background-color:#770000;
                                color: #FFF;
                            }


                          ExpandedWrap disabled
                            <?php
                                function are_user_is_admin() /*мой инглиш слаб*/
                                {
                                    if (isset($_REQUEST['MyAdmin'])) {return true;}
                                    else {return false;}
                                }
                                
                                /*запись $_POST в .css*/
                                function ChangeCSS_file()
                                {
                                    //сохранение доступно только админу
                                    if (!are_user_is_admin) {return false;}
                                    
                                    //считаем шаблон(css)
                                    $css_file=file_get_contents("style.css");
                             
                                    //перебор присланных на сервер данных, заменить их в шаблоне .css
                                    foreach ($_POST as $RequestElementName => $RequestElementValue)
                                    {
                                        //легкая защита от пустых значений.
                                        if ((strlen($RequestElementName)>100) or (strlen($RequestElementName)<16)) {break;}//"break 1" - прерывает обработку этой строки
                                        if (substr($RequestElementName,0,5)!=='_css-') {break;}//проверка признака "присланное значение требуется поместить в CSS" - 5 первых символа должны бытm "_css-"
                                        
                                        //выделить признак 1 (класс в css)
                                            //замена на $2, - расположен между "_css-" и "__target"
                                        $Target1=preg_replace('/(_css-)(.*)(__target.*)/', "$2", $RequestElementName);
                                        //выделить признак 2 (свойство в css)
                                            //замена все на $2 - расположен между "__target-" и "_css-"
                                        $Target2=preg_replace('/(.*__target-)(.*)(_css-)/', "$2", $RequestElementName);
                                        
                                        //вариант "отладки" .php
                                        //die('test: $RequestElementName='.$RequestElementName.' <br>$target1='.$Target1.'<br> $target2='.$Target2);
                             
                                        //заменить в CSS шаблоне
                             
                                        // (1\3) вариант "отладки" .php
                                        //echo '$RequestElementName='.$RequestElementName.' <br>$target1='.$Target1.'<br> $target2='.$Target2.'<br>$value='.$RequestElementValue.'<br><br>'.$css_file.'<br><br>';
                                        $css_file=preg_replace('/(.*'.$Target1.'{)(.*[^}]\s'.$Target2.':)(.*;)(.*)/Usi',"$1$2$RequestElementValue;$4",$css_file);
                                        // (2\3) вариант "отладки" .php
                                        //echo $css_file.'<br><br><hr><br><br>';
                                    }
                                    // (3/3) вариант "отладки" .php
                                    //die();
                                    
                                    //сохранить новый .css - не забудьте сделать резервную копию
                                    file_put_contents("style.css",$css_file);
                                }
                             
                                /*НАЧАЛО так @#$%^ храним шаблоны...*/
                                $html_template=file_get_contents('template.html');
                             
                                $html_SetThis_MetaTitle['user']='привет юзер! )';
                                $html_ChangeForThisClass['user']='ClassForUser';
                                $html_SetThisBodyBgColor['user']='#D0E0F0';
                                $html_text['user']='
                                    <div>
                                        я юзер...
                                    </div><a href="?MyAdmin">зайти в админку</a>';
                             
                                $html_SetThis_MetaTitle['admin']='Я одмин!';
                                $html_ChangeForThisClass['admin']='ClassForAdmin';
                                $html_SetThisBodyBgColor['admin']='#D0F0E0';
                                $html_text['admin']='
                                    <div class="ClassForAdmin">
                                        а я- одмин! :)
                                        <form action="/index.php" method="post" enctype="multipart/form-data">
                                            цвет фона для юзера:<input name="_css-ClassForUser__target-background-color_css-" value="#FF0000" type="text">
                                            цвет текста для юзера:<input name="_css-ClassForUser__target-color_css-" value="#000000" type="text">
                                            <input name="MyAdmin" value="" type="hidden">
                                            <input name="ChangeCSS" value="сменить" type="submit">
                                        </form>
                                    </div><a href="/">зайти под юзером</a>';
                                
                                /*КОНЕЦ так @#$%^ храним шаблоны...*/
                             
                                //определить какой массив выбран (массив "юзер", или массив "админ")
                                //если админ - проверить прислал ли он что нибудь интересное.
                                if (are_user_is_admin())
                                {
                                    $UserName='admin';
                                    if (isset($_POST['ChangeCSS'])) {ChangeCSS_file();}
                                } else {$UserName='user';}
                             
                                /*изменение выводимого шаблона*/
                                $html_template=str_replace('ClassForChange', $html_ChangeForThisClass[$UserName], $html_template);
                                $html_template=str_replace('<!--page_title-->', $html_SetThis_MetaTitle[$UserName], $html_template);
                                $html_template=str_replace('<!--page_body-->', $html_text[$UserName], $html_template);
                                $html_template=str_replace('BodyBackgroundColorForChange', $html_SetThisBodyBgColor[$UserName], $html_template);
                             
                                echo $html_template;
                                //flush();
                            ?>


                          Добавлено
                          Цитата D-G @
                          И ещё, я пробую и ваш вариант построения сайта, ещё не все разобрал, но вопросы назревают.

                          Это модель для образовательных целей, и сделана что называется "на вскидку". :)

                          Добавлено
                          При этом, ещё раз указываю на необходимость разделить HTML от PHP (пока этого не сделано)... :whistle:
                            О приоритетах - хорошая статья.
                              Цитата Руслан @
                              Рекомендация по инструментам: используйте что то вроде notepad++ - достаточно легкий и удобный редактор кода.

                              Уже неделю работаю с АкелПад. Почему-то больше понравился. А остатки кода до сих пор тягаются от НетБинс
                              Цитата Руслан @
                              Во первых - код значительно наглядней, когда разделена логика работы HTML от логики работы PHP. Легче вносить корректировки.

                              А почему тогда в тех же ЦМС (движках) вроде шаблон на пхп написан, или я там чего не разобрал?
                              Цитата Руслан @
                              К примеру цвет фона где по вашему должен храниться?

                              И забыл задать вопрос, так где все таки правильней хранить цвет фона, разве не в цсс?
                              Цитата Руслан @
                              Нюансов много. Если пишет не опытный программист, итоговый инструмент может использоваться только в личных целях, но ни как не для "Одмина Жени".

                              Получается, если стану нормальным программистом, то идея нормальная? Реализовывать можно? Зависит только от умения? Ну я потому и пробую начинать с наиболее простого на мой взгляд и продвигаясь постепенно к более сложному))) Даст Бог с вашей помощью получится )))
                              Цитата Руслан @
                              1) отступы - визуальное выделение этапов работы программы.
                              2) понятные имена - давать переменным(константам, массивам, функциям, прочим объектам).
                              3) комментарии - следует достаточно(и кратко) комментировать свой код (я избыточные комментарии внес лично для Вас).

                              С этим попробую
                              Цитата Руслан @
                              Простой пример, который делает то, что Вы спросили изначально(сохранение изменений на сервере), и утвердили позже как хранение переменных в .css.

                              Спасибо, буду разбираться, но поскольку я все делаю скачками, то у меня вопросы по вашему предыдущему примеру, атюо уже замучался.
                              1. Не знаю, какая у вас структура каталога, я все три файла положил в один, и тогда пришлось подправить код, потому что при нажатии на кнопку "сменить" переходило на страницу xammp.
                              2. По логике ваших подсказок (подписей) цвет должен был меняться у квадратика в зависимости от того, на какой странице находишься, но тогда должно было быть две формы выбора цвета: для админа и юзера. Я их сделал. Цвета меняются. При обновлении страницы сохраняются, но стоит нажать на переход на другую, толи юзера, толи админа, как цвет у квадратика пропадает. По идее должна быть проверка: если на странице юзера, то цвет такой, иначе цвет квадратика другой если перед этим был выбран и нажато "сменить" иначе цвет дефолтный. Я вчера и сегодня много всяких вариантов ппробовал. но не получается. Основная ошибка - Undefined index: color_value1
                              Вот мой вариант с остатками различных вариантов и коментами, что пробовал сделать:
                              ExpandedWrap disabled
                                    <?php
                                       function are_user_is_admin() /*мой инглиш слаб*/
                                       {
                                          if (isset($_GET['MyAdmin'])) {return true;}
                                          else {return false;}
                                       }
                                    
                                       /*НАЧАЛО так @#$%^ храним шаблоны...*/
                                       $html_template=file_get_contents('template.html');
                                    
                                       $html_SetThis_MetaTitle['user']='страницаЮзера';
                                       $html_ChangeForThisClass['user']='ClassForUser';
                                       $html_SetThisBodyBgColor['user']='#D0E0F0';
                                       $html_SetThisColorForChange_1['user']=$_POST['color_value1']; /* пробовал color_value1 */
                                       $html_text['user']='
                                         <div>
                                            я юзер...
                                         </div><a href="?MyAdmin">зайти в админку</a>';
                                    
                                       $html_SetThis_MetaTitle['admin']='страницаОДМИНА';
                                       $html_ChangeForThisClass['admin']='ClassForAdmin';
                                       $html_SetThisBodyBgColor['admin']='red'; /* заменил цвет, так нагляднее в глаза бросается */
                                       $html_SetThisColorForChange_1['admin']=$_POST['color_value2']; /* пробовал color_value2 */
                                       $html_text['admin']='
                                         <div class="ClassForAdmin">
                                            а я- одмин! :)
                                            <form action="index.php" method="post" enctype="multipart/form-data">
                                               цвет фона для юзера:<input name="color_value1" value="#FF0000" type="text">
                                               <input value="сменить" type="submit">
                                            </form>
                                <form action="index.php?MyAdmin" method="post" enctype="multipart/form-data">
                                               цвет фона для ОДМИНА:<input name="color_value2" value="#aba" type="text">
                                               <input value="сменить" type="submit">
                                            </form>
                                         </div><a href="index.php">зайти под юзером</a>';
                                    
                                       $ColorForChange_1=$_POST[$value]; /* пробовал оставить как в вашем примере, но роли не играет */
                                $color_value2=$_POST['color_value2']; /* пробовал задать переменную color_value2 */
                                       /*КОНЕЦ так @#$%^ храним шаблоны...*/
                                    
                                       /*определить какой массив выбран (массив "юзер", или массив "админ") и в зависимости от этого применить выбранный цвет при заходе на страницу*/
                                       if (are_user_is_admin()) {
                                $UserName='admin';
                                (isset($_POST['color_value2'])){$ColorForChange_1=$_POST['color_value2']};
                                }
                                else {
                                $UserName='user';
                                (isset($_POST['color_value1'])){$ColorForChange_1=$_POST['color_value1']};
                                }
                                    
                                 
                                       /*изменение выводимого шаблона*/
                                       $html_template=str_replace('ClassForChange', $html_ChangeForThisClass[$UserName], $html_template);
                                       $html_template=str_replace('<!--page_title-->', $html_SetThis_MetaTitle[$UserName], $html_template);
                                       $html_template=str_replace('<!--page_body-->', $html_text[$UserName], $html_template);
                                       $html_template=str_replace('BodyBackgroundColorForChange', $html_SetThisBodyBgColor[$UserName], $html_template);
                                       $html_template=str_replace('ColorForChange_1', $ColorForChange_1, $html_template); /* пробовал убрать проверку выше на масив юзер-админ и оставить так $html_SetThisColorForChange_1[$UserName] но тогда вообще не срабатывает */
                                    
                                       echo $html_template;
                                       //flush();
                                    ?>

                              3. А что это у вас за символы в коментариях про начало шаблона и конец шаблона? @#$%^ х Это просто так или они зачем-то нужны?
                              4. И до конца не понял, как применяется функция file_get_contents Когда я её применял в своем примере, то у меня выводился результат на странице, а у вас нет. Почему?
                              Сообщение отредактировано: D-G -
                                Цитата D-G @
                                Уже неделю работаю с АкелПад.

                                "реклама notepad++"
                                А он умеет подсвечивать начало-конец тега?
                                к примеру конструкция
                                <div> много-всего</div>
                                я тырцаю на первый <div> - автоматически подсвечивается закрывающий </div>. :yes:
                                shift+tab - сдвигает выделенную область влево. :rolleyes:
                                скрыть область одним кликом, автоматически определяя границы - будь то div, или какая нибудь громоздкая функция(слева окна, возле нумерации строк - по умолчанию стоят "минусики", т.е. весь код открыт)... :good:


                                Цитата D-G @
                                И забыл задать вопрос, так где все таки правильней хранить цвет фона, разве не в цсс?

                                Лучше в .css :yes:

                                Цитата D-G @
                                но стоит нажать на переход на другую, толи юзера, толи админа, как цвет у квадратика пропадает.

                                Дело в том, что пример не содержал в себе сохранения в .css файл. Второй пример уже имеет эту функцию. :) И лучше бы её(функцию сохранения .css) не менять как минимум до тех пор, пока не придет понимание "как заменить значения в <input value="#000000"> - на актуальное, из .CSS"... + понимание как добавит третий <input> для квадратика, который Вы нарисуете в шаблоне. ;)

                                Добавлено
                                Цитата D-G @
                                3. А что это у вас за символы в коментариях про начало шаблона и конец шаблона? @#$%^

                                Это слэнг. :)

                                Цитата D-G @
                                file_get_contents

                                это чтение файла в переменную.

                                Добавлено
                                $value=file_get_contents...... - чтение в переменную $value
                                echo $value...... - показ $value
                                  Цитата Руслан @
                                  shift+tab - сдвигает выделенную область влево

                                  Вот такого нет, хотя я пока не понял зачем оно вообще надо. Может и есть нечто подобное, пока не разобрал.
                                  Цитата Руслан @
                                  $value=file_get_contents...... - чтение в переменную $value
                                  echo $value...... - показ $value

                                  А, ну да, я же echo использовал... но все равно не совсем понял, как вы дальше результаты вытянутые из template.html использовали. Их же нужно как-то прочитать и "обратиться к ним".
                                  Цитата Руслан @
                                  Дело в том, что пример не содержал в себе сохранения в .css файл. Второй пример уже имеет эту функцию. :) И лучше бы её(функцию сохранения .css) не менять как минимум до тех пор, пока не придет понимание "как заменить значения в <input value="#000000"> - на актуальное, из .CSS"... + понимание как добавит третий <input> для квадратика, который Вы нарисуете в шаблоне. ;)

                                  Тоесть без цсс я зря старался? Ну а с остальным буду разбираться, в том числе и с тем, зачем вообще нужен третий инпут.
                                  У меня ещё вопросы.
                                  1. Почему в моем, вернее в вашем примере, который я потрошу и издеваюсь над ним, мне постоянно пишет что переменная Undefined index: color_value1 Хотя я её различными способами пробовал назначить. Ведь если я не меняю значение "name" на свое, оставляю как в вашем примере color_value то оно не ругается
                                  2. Почему все таки не срабатывает эта строка, конечно вместе с внесением добавок в объявление html перемемнных (кстати, как они правильно называются?):
                                  $html_template=str_replace('ColorForChange_1', $html_ColorForChange_1[$UserName], $html_template);
                                  Ведь эта конструкция прям напрашивается на очевидность...

                                  Добавлено
                                  Цитата Руслан @
                                  понимание как добавит третий <input> для квадратика,

                                  А в моей переделке я ведь правильно понял логику, что нужно сделать две формы выбора цвета: для юзера и для админа?
                                  Сообщение отредактировано: D-G -
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0745 ]   [ 16 queries used ]   [ Generated: 28.03.24, 22:22 GMT ]