Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Использование сессий в форме
Форумы портала PHP.SU » Разное » Обсуждение статей » Использование сессий в форме

Страниц (1): [1]
 

1. SidneyShow - 16 Мая, 2016 - 18:54:22 - перейти к сообщению
Всем привет, помогите пожалуйста разобраться.

У меня есть 3 сессии: $_SESSION['Day'],$_SESSION['Month'],$_SESSION['Year'].

Также есть форма:
<select name="day" size="1">
<option value="0">Укажите день</option>
<option value="1">1</option>
<option value="2">2</option>
и т.д.
</select>
<select name="month" size="1">
<option value="0">Укажите месяц</option>
<option value="1">Январь</option>
<option value="2">Февраль</option>
и т.д.
</select>
<select name="year" size="1">
<option value="0">Укажите год</option>
<option value="1">1994</option>
<option value="2">1993</option>
и т.д.
</select>

И необходимо при помощи атрибута selected="selected"(или иным образом), показывать пользователю имеющееся в сессии значение. Например вот так: selected="$_SESSION['Day']".

Другими словами, нужно чтобы в форме уже показывалась установленное раннее значение (которое храниться в сессии).И чтобы прямо в этой же форме можно было выбрать другое значение.
2. kuller - 16 Мая, 2016 - 18:59:20 - перейти к сообщению
через условие if проверить что хранится в сессии selected назначить назначит нужной option
3. Строитель - 16 Мая, 2016 - 20:36:39 - перейти к сообщению
SidneyShow пишет:
нужно чтобы в форме уже показывалась установленное раннее значение (которое храниться в сессии).И чтобы прямо в этой же форме можно было выбрать другое значение
Видимо вам нужна такая запись
PHP:
скопировать код в буфер обмена
  1. <select name="day" size="1">
  2. <option value="0">Укажите день</option>
  3. <option selected="selected" value="<?=$_SESSION['Day']?>"><?=$_SESSION['Day']?></option>
  4. <option value="1">1</option>
  5. <option value="2">2</option>
  6. и т.д.
  7. </select>
  8. <select name="month" size="1">
  9. <option value="0">Укажите месяц</option>
  10. <option selected="selected" value="<?=$_SESSION['Month']?>"><?=$_SESSION['Month']?></option>
  11. <option value="1">Январь</option>
  12. <option value="2">Февраль</option>
  13. и т.д.
  14. </select>
  15. <select name="year" size="1">
  16. <option value="0">Укажите год</option>
  17. <option selected="selected" value="<?=$_SESSION['Year']?>"><?=$_SESSION['Year']?><option value="1">1994</option>
  18. <option value="2">1993</option>
  19. и т.д.
  20. </select>
4. SidneyShow - 18 Мая, 2016 - 23:13:28 - перейти к сообщению
К сожалению не помогло Недовольство, огорчение
5. Строитель - 18 Мая, 2016 - 23:21:23 - перейти к сообщению
SidneyShow пишет:
К сожалению не помогло
Покажите ваш код, и если есть - скопируйте ошибки.
6. SidneyShow - 19 Мая, 2016 - 16:00:58 - перейти к сообщению
Строитель пишет:
SidneyShow пишет:
К сожалению не помогло
Покажите ваш код, и если есть - скопируйте ошибки.


На данный момент сделал так:

<?
echo'
<select name="day" size="1" >
<option value="0">'.$_SESSION['Day'].'</option>
<option value="1">1</option>
<option value="2">2</option>

</select>
<select name="month" size="1">
<option value="0">'.$_SESSION[Month'].'</option>
<option value="1">Январь</option>
<option value="2">Февраль</option>

</select>
<select name="year" size="1">
<option value="0">'.$_SESSION[Year'].'</option>
<option value="1">1994</option>
<option value="2">1993</option>
</select>';
?>

Работает, но выглядит не очень красиво, т.к. в <select> будет отображаться и значение в сессии и идентичное значение, но ниже.

Например, если $_SESSION['Day'] == 2 , то при выборе в <select> будет
<option value="0">'.$_SESSION['Day'].'</option> и <option value="2">2</option> одновременно. И выглядит это не очень Недовольство, огорчение

Очень хотелось бы, что бы при выборе в <select> был только один вариант.

Надеюсь Вы меня поняли Улыбка
7. Строитель - 19 Мая, 2016 - 17:03:27 - перейти к сообщению
SidneyShow пишет:
Надеюсь Вы меня поняли
Честно говоря - нет. Вы можете объяснить иначе, в более развёрнутом виде, или показать визуально (на скриншоте) требуемый результат?
8. andrewkard - 19 Мая, 2016 - 17:50:52 - перейти к сообщению
Наверное что то подобно этому:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $months = array(
  4.     1 => 'Январь',
  5.     2 => 'Февраль',
  6. );
  7. ?>
  8. <select name="month" size="1">
  9.     <option value="0">Укажите месяц</option>
  10.     <?PHP foreach ($months as $index => $month) {?>
  11.     <option <?=($_SESSION['Month']==$index?'selected="selected"':'')?> value="<?=$index?>"><?=$month?></option>
  12.     <?PHP } ?>
  13. </select>
  14.  
  15.  
9. SidneyShow - 20 Мая, 2016 - 22:50:37 - перейти к сообщению
Всем спасибо за помощь и за уделенное время Подмигивание , теперь разобрался Улыбка

 

Powered by ExBB FM 1.0 RC1