Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.221.187.121] |
|
Страницы: (4) 1 [2] 3 4 все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Прошу прощения, не сразу заметил ваше сообщение. Вроде как не совсем то, что мне нужно. Я пробовал в цсс файле ставить !important но оно не применяется. Применяется то, что в данный момент написано в стиле, встроенном в пхп. Хотя опять же, может я не правильно его прописываю... Хотя соврал... Внимательней прочитал, увидел, что вставляю после знака точки с запятой, а надо между цветом и точкой с запятой. Так цвет поменялся на тот, который в цсс. Теперь подумаю, как это использовать, ато с другими вариантами уже запутался. |
Сообщ.
#17
,
|
|
|
Почти решил часть своей первоначальной задачи, хотя возможно я сперва не совсем правильно сформулировал её. Файл index.php я не трогал, оставил как было в первом сообщении. В main.css поменял цвета на красный и желтый для лучшей наглядности. В admin.php добавил кнопки выбора и использовал $_POST empty isset. Теперь работает переключение, но появляются предупреждения при первой загрузке страницы и смене цвета любого элемента. Предупреждение такое:
Notice: Undefined index: bodystyle in admin.php on line 2 Notice: Undefined index: wcolor in admin.php on line 18 Как бы от этого избавиться? Вот на всякий случай все три файла index.php <!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 body { background: red; } .wrap { background:yellow ; margin: auto ; width: 700px ; height: 400px ; z-index: 3 ; } admin.php <?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. Если полностью решу эту часть задачи, для будущих вопросов по развитию этого "инструмента", который я тут пробую написать, нужно ли будет создавать новую тему или можно будет продолжить тут? |
Сообщ.
#18
,
|
|
|
Цитата D-G @ Notice: Undefined index: bodystyle in admin.php on line 2 Дык $_POST пустой же, во второй то строке! Цитата D-G @ $wcolor=$_POST['wcolor']; А в $_POST['wcolor'] разве что то прислали из браузера? |
Сообщ.
#19
,
|
|
|
Цитата D-G @ Я пробовал в цсс файле ставить !important но оно не применяется. Лучше всего это применять только "для отладки", но в конечном итоге стараться силами *.css файла. |
Сообщ.
#20
,
|
|
|
Цитата Руслан @ Дык $_POST пустой же, во второй то строке! А то, что я потом проверку делаю иф-элсэ? Разве не влияет? Нельзя как-нибудь отменить вывод этого предупреждения? И вопрос в целом, как мой вариант? Более-менее? Добавлено И как все таки пользоваться file_get_contents? Не можете тыкнуть пальцем, где это разжевано? |
Сообщ.
#21
,
|
|
|
Цитата D-G @ А то, что я потом проверку делаю иф-элсэ? Разве не влияет? Программа то выполняется пошагово. Когда обрабатывается вторая строка, третья не учитывается. Цитата D-G @ И вопрос в целом, как мой вариант? Более-менее? Ваша реализация показывает действия, лишенные смысловой нагрузки, назвать такой подход "более-менее" - сложно. Добавлено Цитата D-G @ file_get_contents file_get_contents - считывает содержимое файла в переменную. Уж куда проще? :-) Остается понять что такое переменные, показываю: $x="text"; //переменная $x содержит слово text $x=file_get_contents('filename.css'); //теперь в переменную $x запихано содержимое файла filename.css |
Сообщ.
#22
,
|
|
|
Цитата Руслан @ file_get_contents - считывает содержимое файла в переменную. Уж куда проще? :-) Остается понять что такое переменные, показываю: $x="text"; //переменная $x содержит слово text $x=file_get_contents('filename.css'); //теперь в переменную $x запихано содержимое файла filename.css Это я понял. У меня таким образом считывается содержимое цсс файла и выводится в квадрате. Вопрос как дальше эту инфу обрабатывать? А, кажется понял. Буду пробовать. Цитата Руслан @ Ваша реализация показывает действия, лишенные смысловой нагрузки Почему лишенные смысловой нагрузки? ведь цвет меняется. Хоть БОДИ хоть квадрат Ну и вопросы по моим модификациям вашего примера. Разве нельзя вместе с проверкой на массив "админ"-"юзер" делать и проверку на введенный цвет? И вообще, правильна ли была моя логика добавить вторую форму? |
Сообщ.
#23
,
|
|
|
Цитата D-G @ Почему лишенные смысловой нагрузки? Вторая строка имеет отношение к третьей, но логическая связь не наблюдается. нужно что то вроде if (условие) {действие} else {другое действие} Вот ваш код, я заменил в нем комментарии на свои, и отформатировал отступами(для наглядности). Цитата D-G @ $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. |
Сообщ.
#24
,
|
|
|
Цитата Руслан @ Вот ваш код, я заменил в нем комментарии на свои, и отформатировал отступами(для наглядности). Так у меня не получилось. Но я подумал, что у меня $wcolor=$_POST["wcolor"] и $body_style=$_POST['bodystyle'] объявляются дважды. Убрал (закоментировал) их там, где было первое объявление и выскакивала ошибка, оставил там где идет сперва проверка, а потом объявление и вроде все работает. Получилось вот так: /* $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'];} Поэксперементирую дальше - отпишусь. Добавлено Сделал опечатку: не if (isset($_POST['wcolor'])) {$body_style=$_POST['wcolor'];} if (isset($_POST['wcolor'])) {$wcolor=$_POST['wcolor'];} |
Сообщ.
#25
,
|
|
|
Что-то не получается разобраться у меня с вашим примером. Пути я конечно подправил, но не только не меняет цвет, но сохранения не происходит. При попытке сохранения выводит содержимое цсс файла и выдает ошибку: 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="">? Или допустим в цсс файле перед классом стоит точка, будет ли считаться точка регулярным выражением? Подскажите хотя бы зачем этот третий инпут? Имеется ввиду ещё одно свойство, напр закругленность углов? |
Сообщ.
#26
,
|
|
|
Цитата D-G @ Пути я конечно подправил, но не только не меняет цвет, но сохранения не происходит. Вернуть код к исходному, делов то! Цитата D-G @ Подскажите хотя бы зачем этот третий инпут? 2 моих input прекрасно сохраняются в таблицу стилей. Но вам же нужно больше input (цвета, или какие то другие настройки). Изначально .php спроектирован так, что добавить input очень просто, т.е. менять любые значения в css. |
Сообщ.
#27
,
|
|
|
Цитата Руслан @ Вернуть код к исходному, делов то! Так в исходном варианте при нажатии на "Зайти под юзером" или "сменить" выкидывает на страницу xammp (http://localhost/dashboard/). Оба файла лежат в одной директории. Я всего навсего подправил вот что: <form action="index.php" вместо <form action="/index.php" </div><a href="index.php">зайти под юзером</a>'; вместо </div><a href="/">зайти под юзером</a>'; |
Сообщ.
#28
,
|
|
|
Цитата Руслан @ Но вам же нужно больше input А, ну для дополнительных настроек... Тогда понятно, это в моем варианте легко, только вот, напр, если менять ширину-высоту, одним словом, если нужно применять какие то единицы измерения (px,em и тд) то их в поле приходится вбивать вручную (500px или 70%). Вот пример: /* Задаю и проверяю первую переменную */ 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> Ещё пока не разобрался с массивами, возможно мой код можно будет упростить с их помощью. |
Сообщ.
#29
,
|
|
|
Цитата D-G @ Так в исходном варианте при нажатии на "Зайти под юзером" или "сменить" выкидывает на страницу Сложите файлы в корневую директорию. Цитата D-G @ А, ну для дополнительных настроек... Тогда понятно, это в моем варианте легко Ваш код ни чего на сервере не сохраняет. |
Сообщ.
#30
,
|
|
|
Цитата Руслан @ Сложите файлы в корневую директорию. Положил в htdocs все равно выкидывает на страницу xammp Цитата Руслан @ Ваш код ни чего на сервере не сохраняет. Это конечно, но разве будет большая разница? Да и начинаю посматривать в сторону xml. Как я прочитал, там формы тоже можно создавать и вроде как значения будут сохраняться. Но ещё много читать надо, даже не получается саму форму в пхп файл вывести В любом случае очень хочется и с вашим примером разобраться, только его бы как-то запустить... Даже не представляю, в какую корневую папку его положить, если htdocs верхняя (корневая) для всех остальных шаблонов, тестовых примеров и тп. |