Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Загрузка CSS через PHP
 
 автор: Katriona   (12.12.2005 в 22:36)   письмо автору
 
 

В универе задание, нужно сделать сайтик из 5ти страниц с 6тью стилями CSS. Помогите разобраться, как можно изменить стиль текущей странички(или всех) при помощи РНР???

   
 
 автор: codexomega   (12.12.2005 в 23:07)   письмо автору
 
   для: Katriona   (12.12.2005 в 22:36)
 

При помощи include()
Делаете пустую страницу html, совершенно пустую, содержащую одну единственную строку:

<link href="styles/style1.css" rel="stylesheet" type="text/css" />

Это для первого стиля.

Так повторяете для дополнительных стилей.

В результате у вас несколько страниц с единственной строкой(см. выше).
На странице php, между тегами <head> </head>, вставляете ваш include.


<head><?php include($style);?></head>


Переменная $style будет содержать адрес вашей страницы со стилем.

Может примитивно, но спешу, мыслить нет времени.

   
 
 автор: codexomega   (12.12.2005 в 23:50)   письмо автору
 
   для: codexomega   (12.12.2005 в 23:07)
 

Переборщил с инклюдом.
Надо просто вместо include() вставить echo $style;
Содержимое переменной меняется взависимости от кликнутой ссылки.

   
 
 автор: Katriona   (13.12.2005 в 00:18)   письмо автору
 
   для: codexomega   (12.12.2005 в 23:50)
 

а на кнопки стиль1 - стиль6 какую команду написать?

   
 
 автор: codexomega   (13.12.2005 в 06:09)   письмо автору
 
   для: Katriona   (13.12.2005 в 00:18)
 

Кнопки - это ссылка с параметром.
Можно так:

<input type="button" name="btn1" value="Style1" onClick="openStyle(this.value)">
<input type="button" name="btn2" value="Style2" onClick="openStyle(this.value)">
.
.
.


И обработчик Javascript:

<script language="javascript">
   function openStyle(style){
      document.location="my_page.php?style=" + style;
   }
</script>


В окне которое открывается с этим скриптом, ловим переменную из адресной строки путем GET.

   
 
 автор: Katriona   (27.12.2005 в 19:41)   письмо автору
 
   для: codexomega   (13.12.2005 в 06:09)
 

блин
у меня фреймы(знаю, что многие их терпеть не могут, но их наличие - обязательное требование по проекту)
так вот, при нажатии кнопок страница загружается во фрейме с МЕНЮ, а не в основном(frame1)
target="frame1" не помогает

   
 
 автор: codexomega   (27.12.2005 в 21:06)   письмо автору
 
   для: Katriona   (27.12.2005 в 19:41)
 


target="mainFrame">

   
 
 автор: Katriona   (28.12.2005 в 20:56)   письмо автору
 
   для: codexomega   (27.12.2005 в 21:06)
 

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

   
 
 автор: codexomega   (28.12.2005 в 22:01)   письмо автору
1.5 Кб
 
   для: Katriona   (28.12.2005 в 20:56)
 

Надеюсь это поможет. Смотрите зип.

   
 
 автор: Katriona   (28.12.2005 в 23:19)   письмо автору
 
   для: codexomega   (28.12.2005 в 22:01)
 

не увидела ничего нового...

   
 
 автор: codexomega   (28.12.2005 в 23:38)   письмо автору
 
   для: Katriona   (28.12.2005 в 23:19)
 

У вас кнопки во фрейме c меню, так?
При нажатии на кнопки в меню, должна открываться страница по ссылке, в главном фрейме, тогда как все остальное не должно меняться так?
Или я ничего не понял?

   
 
 автор: Katriona   (29.12.2005 в 19:39)   письмо автору
 
   для: codexomega   (28.12.2005 в 23:38)
 

Всё правильно.
Только таргет ничего не меняет, страница по прежнему загружается вместо меню.


<input type="button" name="btn1" value="Style1" onClick="openStyle(this.value)" 

target="mainFrame">

   
 
 автор: codexomega   (29.12.2005 в 19:43)   письмо автору
 
   для: Katriona   (29.12.2005 в 19:39)
 

Ок, понял.
Не знал каким способом вы ссылку открываете.
Посмотрим...

   
 
 автор: codexomega   (29.12.2005 в 19:59)   письмо автору
 
   для: codexomega   (29.12.2005 в 19:43)
 

Все. Теперь работает.
Это ваша страница с меню.
Когда жмете кнопку Style1, ссылка открывается в главном фрейме.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript"> 
function openStyle(style){ 
  parent.frames["mainFrame"].document.location="http://www.google.com?style=" + style; 

</script>
</head>

<body>
<a href="index.htm" target="_top">Home</a><br>
<input type="button" name="btn1" value="Style1" onClick="openStyle(this.value)" /><br>
<a href="http://www.rambler.ru" target="_blank">Rambler</a>
</body>
</html>



Изменения:

<script language="javascript"> 
function openStyle(style){ 
  parent.frames["mainFrame"].document.location="http://www.google.com?style=" + style; 

</script>



<input type="button" name="btn1" value="Style1" onClick="openStyle(this.value)" />

   
 
 автор: Katriona   (29.12.2005 в 20:05)   письмо автору
 
   для: codexomega   (29.12.2005 в 19:59)
 

Спасибо большое, работает.

Может еще подскажете?(если не трудно :))

так как у меня несколько страниц, нужно изменять стиль текущей страницы.
Из-за наличия фреймов адрессная строка всегда одна и та же. методом гет вроде не достать.

Предполагаю, нужно изменить функцию примерно так
<script language="javascript"> 
function openStyle(style,page){ 
  parent.frames["mainFrame"].document.location =page+"?style=" + style; 

</script>

правильно?
тогда
<input type="button" name="btn1" value="Style1" 

onClick="openStyle(this.value, page)">


Переменной page нужно присваивать стринговое значение. Делать это можно во время нажатия на кнопку раздела(пр. Главная, Обо мне, Галерея итд).
Как это выглядит в коде?

   
 
 автор: codexomega   (29.12.2005 в 20:45)   письмо автору
 
   для: Katriona   (29.12.2005 в 20:05)
 

Да...
Есть вариант получше.
Примерно так:

Когда нажимаете на кнопку со стилем, срабатывает функция JavaScript, которая ставит значение стиля(value кнопки) в скрытое поле(input type = "hidden").Переменная ловится POST'oм ...


function openStyle(style){ 
 parent.frames["mainFrame"].document.form1.hidden_style.value=style;
 parent.frames["mainFrame"].document.location="http://www.google.com"; 

   
 
 автор: codexomega   (29.12.2005 в 21:46)   письмо автору
 
   для: codexomega   (29.12.2005 в 20:45)
 

Кстати, стиль меняется только для главного фрейма, или для всех сразу?

to: Akira & Devastator!
Решение бы лучше выложили.
У меня уже короткое замыкание от этих фреймов.

   
 
 автор: codexomega   (30.12.2005 в 00:06)   письмо автору
 
   для: codexomega   (29.12.2005 в 21:46)
 

Заставил эту собаку наконец работать.
Вот готовое решение, доделаете потом:

Фрейм с Меню:

<?php 
session_start
();
?>
<?php 
if(isset($_POST['hidden_style']))
    
$_SESSION['php_style'] = $_POST['hidden_style'];
else
    
$_SESSION['php_style'] = "";    
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="<?php echo $_SESSION['php_style']; ?>.css" rel="stylesheet" type="text/css" />

<script language="javascript"> 
function openStyle(style){ 
  document.form1.hidden_style.value=style;  
  parent.frames["mainFrame"].document.location="content2.php";
  document.form1.submit();
   
}
</script>
</head>

<body>
<form id="form1" name="form1" action="menu.php" method="post">
    <input type="text" name="hidden_style" value="<?php echo $_SESSION['php_style']; ?>" />
    <a href="index.php" target="_top">Home</a><br>
    <input type="button" name="btn1" value="Style1" onClick="openStyle(this.value)" /><br>
    <a href="http://www.rambler.ru" target="_blank">Rambler</a>
</form>
</body>
</html>



Фрейм с Контентом:

<?php 
session_start
();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="<?php echo $_SESSION['php_style']; ?>.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1>CONTENT</h1>
<form id="form1" name="form1" action="content.php" method="post">
    <input type="text" name="hidden_style" value="<?php echo $_SESSION['php_style']; ?>" />
</form>
</body>
</html>



Короче здесь добавились сессии.
На всякий случай, креплю архив.
Удачи!

   
 
 автор: AKiRA   (13.12.2005 в 08:32)   письмо автору
 
   для: Katriona   (12.12.2005 в 22:36)
 

Какой хороший универ :))

   
 
 автор: Devastator!   (28.12.2005 в 21:31)   письмо автору
 
   для: AKiRA   (13.12.2005 в 08:32)
 

AKiRA, эт точно...=)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования