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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Смена скина (темы)

Сообщения:  [1-10]   [11-19] 

 
 автор: Санька   (02.11.2007 в 18:03)   письмо автору
 
   для: EXP   (02.11.2007 в 17:00)
 

Пробелов нет.

   
 
 автор: EXP   (02.11.2007 в 17:00)   письмо автору
 
   для: Санька   (02.11.2007 в 16:43)
 

проверь , кажется пробел затесался между $ и select.
во втором случае из-за того что необъявляется массив

   
 
 автор: Санька   (02.11.2007 в 16:43)   письмо автору
 
   для: EXP   (02.11.2007 в 15:41)
 

Когда вставляю $select=array(",","); юзает ошибка Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, еxpecting T_STRING or T_VARIABLE or T_NUM_STRING
а когда $select=[('$tems')]='selected';
Юзает 2 ошибки Notice: Undefined offset

   
 
 автор: EXP   (02.11.2007 в 15:41)   письмо автору
 
   для: Санька   (02.11.2007 в 10:44)
 

можно хотя-бы так
<?php

session_start
() ; 
if (isset(
$_POST['tems'])) {  
$tems =  (int) $_POST['tems'] ;   
if (
$tems || $tems 2$tems =  // если неправильный  
$_SESSION['tems'] = $tems ;  
} else {  
$tems = (isset($_SESSION['tems'])) ? (int) $_SESSION['tems'] : // по умолчанию 1  


$select = array('''''') ;
$select[ ($tems) ] = 'selected ' ;

?>
<form action="" method="post">
Сменить скин<br /> 
<select size="1" name="tems"> 
<option value="1" <?php echo $select[1?>>Тема 1</option> 
<option value="2" <?php echo $select[2?>>Тема 2</option> 
</select>
<input type="submit" value="set">
</form>
но даже в таком простом есть масса вариантов как сделать.
например здесь сначала проверяется ($_POST['tems']), потом $_SESSION['tems'], хотя ($_POST['tems']) посылается только один раз. можно например сделать отдельный файл
и проверять $_POST['tems'] только в нём, как например так с использованием cookie
<?php

$tems 
= (isset($_COOKIE['tems'])) ? (int) $_COOKIE['tems'] : // по умолчанию 1  
if ($tems != 2$tems =  // если неправильный  

$select = array('''''') ;
$select[ ($tems) ] = 'selected ' ;

?>
<form action="deliver.php" method="post">
<input type="hidden" name="back" value="<?php echo $_SERVER['REQUEST_URI']?>">
Сменить скин<br /> 
<select size="1" name="tems"> 
<option value="1" <?php echo $select[1?>>Тема 1</option> 
<option value="2" <?php echo $select[2?>>Тема 2</option> 
</select>
<input type="submit" value="set">
</form> 

deliver.php
<?php

if (isset($_POST['tems'])) {  
    
$tems =  (int) $_POST['tems'] ;   
    if ( 
$tems == 2setcookie('tems'2time() + (3600 5), '/' ) ; // влепление в cookie на 5 суток
    
else   setcookie('tems''2'time() - 3600'/') ; // деактуализация :)


?>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Refresh" content="0; url=<?php echo htmlspecialchars($_POST['back']) ?>"/>
</head><body>
секундочку
</body></html>

   
 
 автор: Санька   (02.11.2007 в 10:44)   письмо автору
 
   для: EXP   (02.11.2007 в 00:06)
 

При переходе на другую страницу тема остается та которую выбрали, но в форме скидывается на самую первую, как сделать чтоб так которую выбрали оставалась в форме?

   
 
 автор: Санька   (02.11.2007 в 08:58)   письмо автору
 
   для: EXP   (02.11.2007 в 00:06)
 

Вобщем сделал но по другому, при выборе тем я просто поставил чтобы стиль менялся для этого сделал 1.php и 2.php
И прописал условие
if($tems==1) include"1.php"; и т.д

   
 
 автор: EXP   (02.11.2007 в 00:06)   письмо автору
 
   для: Санька   (01.11.2007 в 21:19)
 

вот рабочий пример с использованием сессий
<?php
 
session_start
() ; 
if (isset(
$_POST['tems'])) { 
$tems =  (int) $_POST['tems'] ;  
if (
$tems || $tems 2$tems =  // если неправильный   
$_SESSION['tems'] = $tems 
} else { 
$tems = (isset($_SESSION['tems'])) ? (int) $_SESSION['tems'] : // по умолчанию 1 


?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>test</title>
<style>
.d { width: 90%; }
<?php

if ($tems == 1) echo '.d { background: #888888; font-size: 28px; }' "\n" ;
if (
$tems ==) echo '.d { background: #ffff55; font-size: 56px; color: red; }' "\n" ;

?>
</style>
<script type="text/javascript">
function dataSelect(f) {
n = f.hero.selectedIndex
if(n) alert("Выбран герой: " + f.hero.options[n].value + " ???")
}
</script>
</head> 
<body>

<form action="" method="post">
Сменить скин<br /> 
<select size="1" name="tems"> 
<option value="1">Тема 1</option> 
<option value="2">Тема 2</option> 
</select>
<input type="submit" value="set">
</form> 

выберете кто симпатишнее 
<form action="" method="post">
<select name="hero" size="1">
<option>Выберите героя</option>
<option value="Чебурашка">Чебурашка</option>
<option value="Крокодил Гена">Крокодил Гена</option>
<option value="Шапокляк">Шапокляк</option>
<option value="Крыса Лариса">Крыса Лариса</option>
</select>
<input type="submit" value="OK" onClick="dataSelect(this.form)">
</form> 
<?php

$hero 
= (isset($_POST['hero'])) ? htmlspecialchars($_POST['hero']) : 'никто не выбран';
$hero .=  ($tems == 1) ? ' :(' ' :) ' ;
echo 
'<div class="d">' $hero '</div>' ;

?>
</body>
</html>
:) только не нашёл на чём применить кроме как на примере из учебника

   
 
 автор: Санька   (01.11.2007 в 21:19)   письмо автору
 
   для: EXP   (01.11.2007 в 18:45)
 

Да я пробывал, не пашет, еще и одна ошибка вылазиет. Пробую разные варианты.

   
 
 автор: EXP   (01.11.2007 в 18:45)   письмо автору
 
   для: Санька   (01.11.2007 в 15:06)
 

тогда такая ещё неувязка получается:
у вас как вы говорите уже есть ойойой какая куча файлов ,
в них если уже есть в каждом <html><head>........ , то в любом случае придётся всё перелопатить.

тот способ на сессиях который я предлагал запоминает выбранный скин на время жизни сессии
, что может постоянно сбрасывать выбранные настройки при неделании переходов в течении этого времени если оно минут 15 , как бывает.
на softtime название выбранного скина записывается в cookie и браузер каждый раз его посылает, но зато запоминается на то время которое поставить .

при том что вывод шапки делает файл start.php , форму выбора лучше сделать в нём.
но остальной код должен быть до того как он включается, тут два варианта , включать файл с ним
или непосредственно записать его в каждый файл который выводит что-либо.

я-бы сделал в начале всех файлов include($_SERVER['DOCUMENT_ROOT'] . '/header.php'); например , а уже в header.php все настройки , получение , отсылку заголовков, и включение start.php.


//
даже не так ,
сделал-бы пару функций вывода шапки и окончания , которые вызывал-бы на страницах

   
 
 автор: sim5   (01.11.2007 в 18:40)   письмо автору
 
   для: Санька   (01.11.2007 в 15:06)
 

А чем должен отличаться друг от друга тот или иной скин, только стилем? Ну меняйте тогда CSS, зачем остальное трогать. Если разговор о нечто большем идет, то это уже шаблоны, значит надо просто менять путь к ним, так как выше у вас прописано. Но в чем проблема при этом?

   

Сообщения:  [1-10]   [11-19] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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