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

      да, загадка! :scratch:
      Но у меня работает, а у вас не работает. Учитывая, что в целом вам этот код не нужен, о чем мы вообще говорим? :-?

      Вы хотите сначала сохранять в .css, теперь в xml... При этом имея смутные представления даже об основах программирования... :facepalm:
      Вам бы хорошую книгу найти - для начинающих! - там где примеры "как выводить 2+2", и дальше, что такое переменные, чем отличаются данные на сервере от данных у клиента... и далее, далее, далее... :)
      Сообщение отредактировано: Руслан -
        Цитата Руслан @
        Учитывая, что в целом вам этот код не нужен

        Вообще-то нужен. Очень хочется разобраться, в том числе и для понимания плюсов и минусов. А другие примеры начинаю читать потому что с вашим примером не могу разобраться. Я уже прочитал, что можно сохранять в БД и через сессию (только не совсем понял, это куки или нет, вроде нет). Вот ваш пример записывает в цсс файл. Тоже интересно. Еще прочитал, что создают какие-то эхо-формы, только вообще не понял как это. Ведь если знать только один вариант, можно упустить что-то важное, застрять на месте, перестать следить за развитием программирования.
        Да и думаю, что в вашем варианте просто не понимаю, где должны лежать файлы. Ведь повторюсь даже не представляю, в какую корневую папку его положить, если htdocs верхняя (корневая) для всех остальных шаблонов, тестовых примеров и тп. У вас видимо апач поднят не с помощью xammp. А книжки читаю. Только опять же, каждый советует свое, и у всех разные понятия о лучшей книжке. Я вот благодаря вашему примеру свой вариант привел в более менее нормальный вид, хотя перед этим уже много чего прочитал, но наверно не того что надо

        Добавлено
        Цитата Руслан @
        чем отличаются данные на сервере от данных у клиента... и далее, далее, далее...

        Я так понимаю, что данные в цсс файле сохраняются на сервере, и в xml - это тоже на сервере. То что мы видим при редактировании скажем моего варианта - это клиентская часть, она на сервере не хранится.
        Сообщение отредактировано: D-G -
          Цитата D-G @
          не понимаю, где должны лежать файлы

          Цитата D-G @
          Оба файла лежат в одной директории

          Оба из трех... - это маловато! :D

          Цитата D-G @
          в том числе и для понимания плюсов и минусов

          Очень интересно, по каким критериям вы отличите плюсы от минусов? :rolleyes:

          Добавлено
          Цитата D-G @
          Я так понимаю, что данные в цсс файле сохраняются на сервере, и в xml - это тоже на сервере.

          Книгу, читайте книгу, основы PHP. :-)
            Цитата Руслан @
            Оба из трех... - это маловато

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

            Начну со скорости загрузки, потом, как я понял, через те же сессии, сохраняется с приставкой в конце адресной строки. Приставка одна и таже, при этом все изменения сохраняются. Но если добавочку убрать, то все стирается, грузится дефолтный. С БД пока не разобрался. Для этого надо видимо и с БД разбираться, но возможно быстрее растет объем. Это понятно, я ещё слишком мало знаю, чтобы сейчас делать выводы, но всему свое время.
            А так читаю.
              Цитата D-G @
              а в переходе по страницам

              Что мешает определить, какие ссылки понятны вашей системе? :-?
                Цитата Руслан @
                Что мешает определить, какие ссылки понятны вашей системе?

                Видимо где-то нехватка знаний. Меня хватило поменять как я вам показал выше. В этом варианте я со страницы админа перехожу на страницу юзера, а при нажатии на кнопку "сменить" достает содержимое цсс файла, распечатывает его и выдает ошибку, мол не идентифицированная переменная are_user_is_admin объявленная как are_user_is_admin. Я уже приводил выше код. Не пойму как надо прописать пути, если лежат в одной папке и даже в самый корень xammp ложил. Какие данные могли бы вам подсказать, где у меня ошибка?
                Были мысли, что проблема в этом месте вашего кода
                ExpandedWrap disabled
                  //сохранение доступно только админу
                  if (!are_user_is_admin) {return false;}

                Но вырезал его, и тогда при нажатии на "сменить" вообще ничего не происходило. Удаление ! тоже ничего не дало. Дважды копировал заново и пересохранял ваш код на всякий случай, вдруг где-то чего-то упустил.
                  Цитата D-G @
                  Но вырезал его, и тогда при нажатии на "сменить" вообще ничего не происходило.

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

                  решение1 - в начало строки 12 добавить //
                  решение2 - в 12й строке, после слова are_user_is_admin добавить ()
                  решение3 - удалить строку №12


                  Ну а результат работы - "ни чего не происходит"... :scratch: а что должно произойти по вашему? :huh: Файл style.css изменен, проверяйте. ;)
                  Сообщение отредактировано: Руслан -
                    Цитата Руслан @
                    Ну а результат работы - "ни чего не происходит"... :scratch: а что должно произойти по вашему? :huh: Файл style.css изменен, проверяйте.

                    И правда, файл цсс меняется. А я то смотрю на изменения цвета элемента ((( он не меняется, и я морочу себе и вам голову.
                    Кстати, то что грузилась страница настройки xammp... она ж тоже в крне лежит и называется index.php Я и переименовывал вашу, чтоб конфликтов не было, а когда в папке лежала, так даже не подумал на эту тему.
                    Ладно, буду дальше разбираться и мучать вас вопросами, в том числе и почему цвет не применяется, хотя в цсс изменения вносятся.
                    Кстати, и цвет меняется ((( ерунда какая-то... вчера ж вместо замены цвета просто выводило содержимое файла цсс
                    Сообщение отредактировано: D-G -
                      Цитата D-G @
                      А я то смотрю на изменения цвета элемента ((( он не меняется, и я морочу себе и вам голову.

                      Вообще то цвет меняется, но у юзера, а вносить изменения доступно только админу. :)
                      Важней вопрос - "как самостоятельно убедится в этапах работы скрипта"? ;) А для этого нужны базовые понимания, потому я упорно рекомендую найти толковую книгу по php для начинающих! - хотя бы брошюрку, где доступным языком, и с простыми примерами, были бы даны таки основы! :yes:

                      Цитата D-G @
                      ерунда какая-то... вчера ж вместо замены цвета просто выводило содержимое файла цсс

                      Огромное количество вопросов решается при понимании основ вэб программирования. :)

                      А при отсутствии знаний основ, чаще будут возникать всякого рода казусы, уводящие в тупик... :yes-sad: :wall: :wall: :wall:
                      Сообщение отредактировано: Руслан -
                        Цитата Руслан @
                        Вообще то цвет меняется, но у юзера, а вносить изменения доступно только админу

                        Ну так я у юзера и проверял
                        Прочитал несколько брошюрок, в том числе и эту
                        http://www.php-s.ru/self-teacher/1_1/ (Заранее прошу прощения у админов, не знаю, будет ли это нарушением правил дать тут ссылку. Если это нарушение, то вырезайте её-их)
                        И вот тут пробую читать https://www.php.net/manual/ru/

                        Я вот подумал, может это из-за куков было? Хотя я постоянно обновлял страничку, даже иногда через кнтрл+ф5. А тут со злости сегодня решил вручную поменять файл стилей, проверить, что именно в нем подхватывается. Добавил ширину у div.ClassForUser и она поменялась уже с цветом. Потом независимо от того была ширина или нет, все цвета применялись. А все что я до этого менял - это пути. И сейчас они стоят так же, как я прописывал их перед этим. Может в настройках ксампа стояли запреты на такой тип редактирования файла, а после моих ручных корректировок все разрешилось? Но тогда почему выводилось содержимое цсс файла?
                        Сообщение отредактировано: D-G -
                          Цитата D-G @
                          Я вот подумал, может это из-за куков было?

                          Дело было в том, что браузер не счел необходимым проверить изменился ли файл .css. Вместо того, что бы качать его, взял из своего кэша, таким образом ускорив загрузку сайта. :) Это типичное поведение бравзёров. :yes:

                          Добавлено
                          Цитата D-G @
                          даже иногда через кнтрл+ф5

                          мистика. :rolleyes:
                          Сообщение отредактировано: Руслан -
                            Цитата Руслан @
                            а что должно произойти по вашему?

                            У меня вопрос по вашему примеру. Там есть такая строка:
                            ExpandedWrap disabled
                              $css_file=preg_replace('/(.*'.$Target1.'{)(.*[^}]\s'.$Target2.':)(.*;)(.*)/Usi',"$1$2$RequestElementValue;$4",$css_file);

                            То, что я понимаю:
                            1.$2 - это ClassForUser, в случае если это Target1
                            ExpandedWrap disabled
                              $Target1=preg_replace('/(_css-)(.*)(__target.*)/', "$2", $RequestElementName);
                            , но не понимаю, когда это успели присвоить
                            2. $2 - это _css-ClassForUser__target- в случае если это Target2, но не понимаю, когда это успели присвоить, и почему если я в случае target1 меняю $2 на $1, получается один результат, а в случае с target2 - другой.
                            3. '/(.*'.$Target1.'{)(.*[^}]\s'.$Target2.':)(.*;)(.*)/Usi' -это первый элемент который меняется на "$1$2$RequestElementValue;$4"
                            Но плохо понимаю кодировку этого первого элемента, и не понимаю, откуда взялась $1 и что за переменная $4
                            4. По идее Target1 - показывает из какого класса цсс файла берется переменная, а Target2 показывает свойства этой переменной, так сказать, отображают массив из этих данных, причем от перемены мест в файле стилей свойств класса не влияет на применение стиля.
                            5. Если добавить ещё два поля напр, ширину и высоту, то Target2 правильно его отображает.
                            ExpandedWrap disabled
                              $RequestElementName=_css-ClassForUser__target-width_css-
                              $target1=ClassForUser
                              $target2=width
                              $value=

                            Казалось бы, что все должно работать, Но если применить, то изменений не происходит. При этом, в свойствах класса стирается все, что стоит перед ними вместе с этими двумя свойствами.
                            По всей видимости ответ на последний вопрос кроется в первых вопросах. Если можно - натолкните на мысль.
                              Цитата D-G @
                              Там есть такая строка:

                              Вы выбрали сложную часть кода. Но раз уж вопрос имеется, очень поверхностно(наглядный осмотр лишь одного аспекта) попробую на него ответить.
                              вот исходная строка:
                              ExpandedWrap disabled
                                $css_file=preg_replace('/(.*'.$Target1.'{)(.*[^}]\s'.$Target2.':)(.*;)(.*)/Usi',"$1$2$RequestElementValue;$4",$css_file);

                              вот её частичный разбор:

                              $css_file=preg_replace('/

                              $1 = (.*'.$Target1.'{)
                              $2 = (.*[^}]\s'.$Target2.':)
                              $3 = (.*;)
                              $4 = (.*)

                              /Usi',

                              "$1$2$RequestElementValue;$4",

                              $css_file);

                              как видите, вместо $3 подставлено $RequestElementValue, значение которого взято парой строк выше, из $_POST... т.е. часть $3 в $css_file заменена на $RequestElementValue.

                              На самом деле, лучше бы не ломать свой мозг об регулярные выражения, хотя я изначально постарался его упростить, и добавил точки останова в комментариях - для возможности изучить влияние при изменении ВХОДНЫХ данных. Код этой функции таки лучше не трогать, пока не стоит вопрос обеспечения безопасности. Через него вы можете менять в общем не особо ограниченное количество данных в своем .css. :)

                              Цитата D-G @
                              Казалось бы, что все должно работать

                              Дело в том, что регулярка (выше обсуждаемая), написана несколько простовато, она корректно обрабатывает файл.css лишь определенного формата:
                              1) сразу после $target1(который .className), должен находиться символ {
                              2) свойство, которое вы пробуете менять - должно присутствовать в файл.css
                              Сообщение отредактировано: Руслан -
                                Цитата Руслан @
                                2) свойство, которое вы пробуете менять - должно присутствовать в файл.css

                                Так он присутствует. При этом если его пробовать изменить, то затираются все свойства, которые перед ним именно в цсс файле. Если оставлять пустым поле, то в файле цсс не стирается.
                                Цитата Руслан @
                                /Usi',

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

                                А где можно подробнее с доступными примерами почитать?
                                Цитата Руслан @
                                $1 = (.*'.$Target1.'{)
                                $2 = (.*[^}]\s'.$Target2.':)
                                $3 = (.*;)
                                $4 = (.*

                                А когда это успели присвоить?
                                И ещё, почему-то именно с этим примером у меня кнтрл+ф5 срабатывает со 2-5 раза.
                                  Цитата D-G @
                                  А когда это успели присвоить?

                                  В функции preg_replace примерно так были обработаны "()". Разве вы не заметили этого же принципа, парой строк выше:
                                  ExpandedWrap disabled
                                    $Target1=preg_replace('/(_css-)(.*)(__target.*)/', "$2", $RequestElementName);


                                  Цитата D-G @
                                  Так он присутствует. При этом если его пробовать изменить, то затираются все свойства, которые перед ним именно в цсс файле. Если оставлять пустым поле, то в файле цсс не стирается.

                                  О! Проверил, действительно, регулярка написана с ошибкой, при некоторых обстоятельствах выжирает кусок своего класса! :yes-sad: Нехорошая регулярка! <_<
                                  Похоже проблема в том, что preg_replace воспринимает "значение переменной"($RequestElementValue) в качестве некого условия для замены... :scratch:
                                  Добавление одного пробела исправило ситуацию:
                                  ExpandedWrap disabled
                                    $css_file=preg_replace('/(.*'.$Target1.'{)(.*[^}]\s'.$Target2.'\:)(.*;)(.*)/Usi','$1$2 '.$RequestElementValue.';$4',$css_file);


                                  Добавлено
                                  Цитата D-G @
                                  И ещё, почему-то именно с этим примером у меня кнтрл+ф5 срабатывает со 2-5 раза.

                                  Я давно мечтал изучить особенности Вашего бразуера! :D
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:
                                  Страницы: (4) 1 2 [3] 4  все


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0513 ]   [ 16 queries used ]   [ Generated: 29.03.24, 11:29 GMT ]