На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
Страницы: (4) 1 [2] 3 4  все  ( Перейти к последнему сообщению )  
    > Повысить приоритет стиля (части стиля) из php файла над стилем из файла css
      Цитата JoeUser @
      О приоритетах - хорошая статья.

      Прошу прощения, не сразу заметил ваше сообщение.
      Вроде как не совсем то, что мне нужно. Я пробовал в цсс файле ставить !important но оно не применяется. Применяется то, что в данный момент написано в стиле, встроенном в пхп. Хотя опять же, может я не правильно его прописываю...
      Хотя соврал... Внимательней прочитал, увидел, что вставляю после знака точки с запятой, а надо между цветом и точкой с запятой. Так цвет поменялся на тот, который в цсс. Теперь подумаю, как это использовать, ато с другими вариантами уже запутался.
      Сообщение отредактировано: D-G -
        Почти решил часть своей первоначальной задачи, хотя возможно я сперва не совсем правильно сформулировал её. Файл index.php я не трогал, оставил как было в первом сообщении. В main.css поменял цвета на красный и желтый для лучшей наглядности. В admin.php добавил кнопки выбора и использовал $_POST empty isset. Теперь работает переключение, но появляются предупреждения при первой загрузке страницы и смене цвета любого элемента. Предупреждение такое:
        ExpandedWrap disabled
          Notice: Undefined index: bodystyle in admin.php on line 2
          Notice: Undefined index: wcolor in admin.php on line 18

        Как бы от этого избавиться? Вот на всякий случай все три файла
        index.php
        ExpandedWrap disabled
          <!DOCTYPE html>
          <html>
          <head>
               <meta charset="UTF-8">
               <link rel="stylesheet" type="text/css" href="main.css"> <!-- присоединяю файл стилей -->
               <?php require_once('admin.php'); ?> <!--  вызываю файл админа для настройки главной страницы -->
             <title>смена обоев</title>
          </head>
          <body>
          <!--  создаю квадрат -->
             <div>
                 <div class="wrap"> <!--  в нем чисто для визуального эффекта вызываю чтение содержимого файла стилей заодно перед глазами настройки стилей -->
          <?php
          $ob = file_get_contents('main.css');
          echo htmlentities($ob);
          ?>
                 </div>
             </div>
          </body>
          </html>

        main.css
        ExpandedWrap disabled
          body {
              background: red;
          }
          .wrap  {
              background:yellow ;
              margin: auto ;
              width: 700px ;
              height: 400px ;
              z-index: 3 ;
          }

        admin.php
        ExpandedWrap disabled
          <?php
          $body_style=$_POST['bodystyle']; /*  Задаю значение переменной в зависимости от  введенной для кнопки БОДИ В НЕЙ ЖЕ ВЫДАЕТ ОШИБКУ Notice: Undefined index: bodystyle*/
          if (isset($_POST['bodystyle'])) {$body_style=$_POST['bodystyle'];} /*  Задаю первое условие и проверяю, что введено и присваиваю значение */
           
          elseif (empty($body_style)) /*  Проевряю не пустая ли строка, если пустая - ниже оставляю пустым значение переменной */
          {
          $body_style='';
          }
          /*  Как правильно то сказать? Инициирую применение стиля */
          echo '<style type="text/css";>
          body {background:'.$body_style.';}
          </style>';
          ?>
          <!--  Ниже подобная схема для квадрата -->
          <?php
          $wcolor=$_POST['wcolor']; /*  И тут выскакивает предупреждение Notice: Undefined index: wcolor которое я хочу побороть */
          if (isset($_POST['wcolor'])) {$body_style=$_POST['wcolor'];}
          elseif (empty($wcolor))
          {
          $wcolor='';
          }
          echo '<style type="text/css";>
          .wrap {background:'.$wcolor.';}
          </style>';
           
          ?>
           
          <?php
          // присваивает <body text='green'> чисто ради интереса как это работает
          $bodytag = str_replace("%body%", "green", "<body text='%body%'>");
          echo $bodytag;
          ?>
          <!--   Создаю две формы для ввода цвета БОДИ и квадрата -->
           <form action="index.php" method="post" enctype="multipart/form-data">
                         цвет фона для БОДИ:<input name="bodystyle" value="" type="text">
                         <input value="сменить" type="submit">
                      </form>
           <form action="index.php" method="post" enctype="multipart/form-data">
                         цвет фона для Квадрата:<input name="wcolor" value="" type="text">
                         <input value="сменить" type="submit">
                      </form>

        И небольшой вопрос вдогонку, даже два:
        1. Можно ли как-то менять название темы, ато понял, что не совсем правильно сформулировал
        2. Если полностью решу эту часть задачи, для будущих вопросов по развитию этого "инструмента", который я тут пробую написать, нужно ли будет создавать новую тему или можно будет продолжить тут?
        Сообщение отредактировано: D-G -
          Цитата D-G @
          Notice: Undefined index: bodystyle in admin.php on line 2

          Дык $_POST пустой же, во второй то строке! :-?

          Цитата D-G @
          $wcolor=$_POST['wcolor'];

          А в $_POST['wcolor'] разве что то прислали из браузера? :huh:
            Цитата D-G @
            Я пробовал в цсс файле ставить !important но оно не применяется.

            Лучше всего это применять только "для отладки", но в конечном итоге стараться силами *.css файла.
              Цитата Руслан @
              Дык $_POST пустой же, во второй то строке!

              А то, что я потом проверку делаю иф-элсэ? Разве не влияет? Нельзя как-нибудь отменить вывод этого предупреждения?

              И вопрос в целом, как мой вариант? Более-менее?

              Добавлено
              И как все таки пользоваться file_get_contents? Не можете тыкнуть пальцем, где это разжевано?
                Цитата D-G @
                А то, что я потом проверку делаю иф-элсэ? Разве не влияет?

                Программа то выполняется пошагово. Когда обрабатывается вторая строка, третья не учитывается. :no:

                Цитата D-G @
                И вопрос в целом, как мой вариант? Более-менее?

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

                Добавлено
                Цитата D-G @
                file_get_contents

                file_get_contents - считывает содержимое файла в переменную. Уж куда проще? :-) Остается понять что такое переменные, показываю:
                $x="text"; //переменная $x содержит слово text
                $x=file_get_contents('filename.css'); //теперь в переменную $x запихано содержимое файла filename.css
                  Цитата Руслан @
                  file_get_contents - считывает содержимое файла в переменную. Уж куда проще? :-) Остается понять что такое переменные, показываю:
                  $x="text"; //переменная $x содержит слово text
                  $x=file_get_contents('filename.css'); //теперь в переменную $x запихано содержимое файла filename.css


                  Это я понял. У меня таким образом считывается содержимое цсс файла и выводится в квадрате. Вопрос как дальше эту инфу обрабатывать?


                  А, кажется понял. Буду пробовать.
                  Цитата Руслан @
                  Ваша реализация показывает действия, лишенные смысловой нагрузки

                  Почему лишенные смысловой нагрузки? ведь цвет меняется. Хоть БОДИ хоть квадрат

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

                    Вторая строка имеет отношение к третьей, но логическая связь не наблюдается. :-?
                    нужно что то вроде
                    if (условие) {действие}
                    else {другое действие}

                    Вот ваш код, я заменил в нем комментарии на свои, и отформатировал отступами(для наглядности).
                    Цитата D-G @
                    ExpandedWrap disabled
                      $body_style=$_POST['bodystyle']; /*1*/ //требуется сделать проверку, прислал ли пользователь $_POST['bodystyle']
                       
                      if (isset($_POST['bodystyle']))
                      {
                          $body_style=$_POST['bodystyle']; /*2*/
                      }
                      elseif (empty($body_style))
                      {
                          $body_style=''; /*3*/
                      }


                    Добавлено
                    Цитата D-G @
                    Вопрос как дальше эту инфу обрабатывать?

                    Можно заюзать str_replace: :)
                    результат_сюда = str_replace(что искать, на что менять, где искать\менять);

                    примерно так это может выглядеть на практике: $html_template = str_replace('#900000', '#009000', $html_template); - замена всех #900000 на #009000.
                    Сообщение отредактировано: Руслан -
                      Цитата Руслан @
                      Вот ваш код, я заменил в нем комментарии на свои, и отформатировал отступами(для наглядности).

                      Так у меня не получилось. Но я подумал, что у меня $wcolor=$_POST["wcolor"] и $body_style=$_POST['bodystyle'] объявляются дважды. Убрал (закоментировал) их там, где было первое объявление и выскакивала ошибка, оставил там где идет сперва проверка, а потом объявление и вроде все работает. Получилось вот так:
                      ExpandedWrap disabled
                         
                        /* $body_style=$_POST['bodystyle'];   Задаю значение переменной в зависимости от  введенной для кнопки БОДИ В НЕЙ ЖЕ ВЫДАЕТ ОШИБКУ Notice: Undefined index: bodystyle ну а раз оно же встречается в следующей строке, то эту коментирую и ошибка уходит  */
                        if (isset($_POST['bodystyle'])) {$body_style=$_POST['bodystyle'];} /*  Задаю первое условие и проверяю, что введено и присваиваю значение */
                         
                        бла-бла-бла
                        /*   $wcolor=$_POST["wcolor"];  И тут выскакивало предупреждение Notice: Undefined index: wcolor которое я хотел побороть */
                        if (isset($_POST['wcolor'])) {$body_style=$_POST['wcolor'];}

                      Поэксперементирую дальше - отпишусь.

                      Добавлено
                      Сделал опечатку: не
                      ExpandedWrap disabled
                        if (isset($_POST['wcolor'])) {$body_style=$_POST['wcolor'];}
                      а
                      ExpandedWrap disabled
                        if (isset($_POST['wcolor'])) {$wcolor=$_POST['wcolor'];}
                      Сообщение отредактировано: D-G -
                        Цитата Руслан @

                        Простой пример, который делает то, что Вы спросили изначально


                        Что-то не получается разобраться у меня с вашим примером. Пути я конечно подправил, но не только не меняет цвет, но сохранения не происходит. При попытке сохранения выводит содержимое цсс файла и выдает ошибку:
                        ExpandedWrap disabled
                          Warning: Use of undefined constant are_user_is_admin - assumed 'are_user_is_admin' (this will throw an Error in a future version of PHP) on line 12
                          body{ width:100%; height:100%; background-color:#DDD; color:#000; } div.ClassForUser{ margin: 2px; background-color:#FF0000; color:#000000; } div.ClassForAdmin{ margin: 3px; border:2 px solid #FF0000; background-color:#770000; color: #FFF; }


                        Цитата Руслан @
                        И лучше бы её(функцию сохранения .css) не менять как минимум до тех пор, пока не придет понимание "как заменить значения в <input value="#000000"> - на актуальное, из .CSS"

                        Я просто оставил пустым значение $body_style=''; и $wcolor=''; и оно стало подтягивать то, что в цсс. Так правильно?
                        Ещё вы используете preg_replace. Как я понимаю, она используется для поиска и замены регулярных (шаблонных) выражений. А если не знаешь какие выражения в документе регулярные? И являются ли регулярными выражениями <div> <div class="">? Или допустим в цсс файле перед классом стоит точка, будет ли считаться точка регулярным выражением?
                        Цитата Руслан @
                        понимание как добавит третий <input> для квадратика

                        Подскажите хотя бы зачем этот третий инпут? Имеется ввиду ещё одно свойство, напр закругленность углов?
                          Цитата D-G @
                          Пути я конечно подправил, но не только не меняет цвет, но сохранения не происходит.

                          Вернуть код к исходному, делов то! :)

                          Цитата D-G @
                          Подскажите хотя бы зачем этот третий инпут?

                          2 моих input прекрасно сохраняются в таблицу стилей. Но вам же нужно больше input (цвета, или какие то другие настройки). :) Изначально .php спроектирован так, что добавить input очень просто, т.е. менять любые значения в css. :)
                          Сообщение отредактировано: Руслан -
                            Цитата Руслан @
                            Вернуть код к исходному, делов то!

                            Так в исходном варианте при нажатии на "Зайти под юзером" или "сменить" выкидывает на страницу xammp (http://localhost/dashboard/). Оба файла лежат в одной директории. Я всего навсего подправил вот что:
                            <form action="index.php" вместо <form action="/index.php"
                            </div><a href="index.php">зайти под юзером</a>'; вместо </div><a href="/">зайти под юзером</a>';
                            Сообщение отредактировано: D-G -
                              Цитата Руслан @
                              Но вам же нужно больше input

                              А, ну для дополнительных настроек... Тогда понятно, это в моем варианте легко, только вот, напр, если менять ширину-высоту, одним словом, если нужно применять какие то единицы измерения (px,em и тд) то их в поле приходится вбивать вручную (500px или 70%). Вот пример:
                              ExpandedWrap disabled
                                /* Задаю и проверяю первую переменную */
                                if (isset($_POST['wcolor'])) {$wcolor=$_POST['wcolor'] ;}
                                    elseif (empty($wcolor))
                                {$wcolor='';}
                                /* Задаю и проверяю вторую переменную */
                                if (isset($_POST['wtextcolor'])) {$wtextcolor=$_POST['wtextcolor'] ;}
                                    elseif (empty($wtextcolor))
                                {$wtextcolor='';}
                                /* Задаю и проверяю третью переменную */
                                if (isset($_POST['wwidth'])) {$wwidth=$_POST['wwidth'] ;}
                                    elseif (empty($wwidth))
                                {$wwidth='';}    }
                                echo '<style type="text/css";>
                                .wrap {background:'.$wcolor.';
                                color:'.$wtextcolor.';
                                width:'.$wwidth.';
                                }
                                    </style>';
                                <!--   Создаю форму для ввода бэкграунда, цвета текста, ширины квадрата -->
                                <form action="index.php" method="post" enctype="multipart/form-data">
                                цвет фона для Квадрата:<input name="wcolor" value="" type="text"><br>
                                цвет текста внутри квадрата:<input name="wtextcolor" value="" type="text"><br>
                                ширина квадрата:<input name="wwidth" value="" type="text">
                                <input value="сменить" type="submit">
                                </form>

                              Ещё пока не разобрался с массивами, возможно мой код можно будет упростить с их помощью.
                              Сообщение отредактировано: D-G -
                                Цитата D-G @
                                Так в исходном варианте при нажатии на "Зайти под юзером" или "сменить" выкидывает на страницу

                                Сложите файлы в корневую директорию.

                                Цитата D-G @
                                А, ну для дополнительных настроек... Тогда понятно, это в моем варианте легко

                                Ваш код ни чего на сервере не сохраняет. :)
                                  Цитата Руслан @
                                  Сложите файлы в корневую директорию.

                                  Положил в htdocs все равно выкидывает на страницу xammp
                                  Цитата Руслан @
                                  Ваш код ни чего на сервере не сохраняет.

                                  Это конечно, но разве будет большая разница? Да и начинаю посматривать в сторону xml. Как я прочитал, там формы тоже можно создавать и вроде как значения будут сохраняться. Но ещё много читать надо, даже не получается саму форму в пхп файл вывести
                                  В любом случае очень хочется и с вашим примером разобраться, только его бы как-то запустить... Даже не представляю, в какую корневую папку его положить, если htdocs верхняя (корневая) для всех остальных шаблонов, тестовых примеров и тп.
                                  Сообщение отредактировано: D-G -
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:
                                  Страницы: (4) 1 [2] 3 4  все


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