За последние 24 часа нас посетили 35045 программистов и 1746 роботов. Сейчас ищут 818 программистов ...

Помогите сохранить значение в сессию пользователя.

Тема в разделе "PHP для новичков", создана пользователем softwarebbs, 28 окт 2009.

  1. softwarebbs

    softwarebbs Активный пользователь

    С нами с:
    28 окт 2009
    Сообщения:
    43
    Симпатии:
    0
    Есть forn - там есть один элемент checkbox. Надо чтобы значение checked сохранялась в сессию пользователя.
    Пожалуйста, помогите примером.
     
  2. softwarebbs

    softwarebbs Активный пользователь

    С нами с:
    28 окт 2009
    Сообщения:
    43
    Симпатии:
    0
    и что бы при сл. открытии страницы значение checked сохранилось.
     
  3. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
  4. softwarebbs

    softwarebbs Активный пользователь

    С нами с:
    28 окт 2009
    Сообщения:
    43
    Симпатии:
    0
    function SaveChecked($this)
    {
    alert($this.checked);
    }
    ?>

    <form>
    <input type="checkbox" name="option1" value="a1" onClick="SaveChecked(this);" checked>Windows 95/98<Br>
    </form>


    Функция не вызывается.
     
  5. Phantik

    Phantik Активный пользователь

    С нами с:
    2 июл 2009
    Сообщения:
    163
    Симпатии:
    0
    Твоя функция, если я правильно понял, находится в тегах PHP <?php function SaveChecked($this) ...?>
    Она не передается в браузер, а отрабатывает на сервере.
     
  6. softwarebbs

    softwarebbs Активный пользователь

    С нами с:
    28 окт 2009
    Сообщения:
    43
    Симпатии:
    0
    Код (Text):
    1.  
    2.  
    3. <?php
    4. session_start();
    5. function SaveChecked($this)
    6. {
    7.  $_SESSION['mychecked'] = $this.option1.value;
    8.  
    9.  
    10. }
    11. ?>
    12.  
    13.  
    14.  
    15. <form  name="form1">
    16. <input type="checkbox" name="option1" value="a1" onClick="SaveChecked(this.form);" $_SESSION['mychecked'] >Windows 95/98<Br>
    17. </form>
    Как сохранить в сессию значение ??
     
  7. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
  8. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    1. Перестаем путать PHP и Javascript.

    PHP отрабатывает на сервере. И не может вызываться по onclick. Вообще.

    http://phpfaq.ru/na_tanke
     
  9. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Может-может - XmlHttpRequest
     
  10. softwarebbs

    softwarebbs Активный пользователь

    С нами с:
    28 окт 2009
    Сообщения:
    43
    Симпатии:
    0
    Можно пример?
     
  11. softwarebbs

    softwarebbs Активный пользователь

    С нами с:
    28 окт 2009
    Сообщения:
    43
    Симпатии:
    0
    как передать в JavaScript значение checkbox`а и сохранить JavaScript`ом значение в сессию,
     
  12. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Может, сразу submit()? XmlHttpRequest или submit может вызываться по onclick и дергать в свою очередь php скрипт. Но php функция сама по себе не может вызываться по onclick.
     
  13. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Никак. Javascript выполняется на стороне клиента и не имеет отношения к сессиям на сервере.

    Надо так. При сабмите формы передается управление php скрипту, который прописан у этой формы в параметре action. Этот скрипт проверяет существует ли (передано ли) значение поля "option1" и если это значение передано, пихать в сессию $_SESSION['option1']=true; а если не передано, то $_SESSION['option1']=false; просто для того, чтобы не дергать isset() каждый раз.

    В дальнейшем при прорисовке формы смотреть чему равен $_SESSION['option1']; и в зависимости от этого делать чекбокс checked или нет.

    А пример XmlHttpRequest тебе пока не нужен.
     
  14. softwarebbs

    softwarebbs Активный пользователь

    С нами с:
    28 окт 2009
    Сообщения:
    43
    Симпатии:
    0
    файл
    index.php
    Код (Text):
    1.  
    2.  
    3. <form action="work.php" method="post">
    4. <? if ($_SESSION['option1'] == 'on')
    5.  {
    6. ?>
    7. <input type="checkbox" name="option1" checked >Windows 95/98<Br>
    8. <?
    9. }
    10. else
    11. {
    12. ?>
    13. <input type="checkbox" name="option1"  >Windows 95/98<Br>
    14. <?
    15.  
    16. }
    17. ?>
    18. <input type="submit" value="ОК">
    19. </form>
    Файл Work.php

    Код (Text):
    1.  
    2. <?
    3. session_start();
    4. $_SESSION['option1'] = $_POST['option1'];
    5. echo $_SESSION['option1'] ;
    6. ?>
    Вроде работает. Значение сохраняется.
    1. Можно ли обойтись без кнопки Submit? Нужен только один checkbox.
    2. По нажатию кнопки, броузер открыает мой work.php, а как сделать что бы вернутся обратно?
     
  15. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    1. Mожно. С помощью Ajax.
    2. написать код сохранения в сессию прямо в index.php и в action формы его же и указать. Или вообще ничего не указывать - по умолчанию форма сабмитится в "родной" скрипт.

    3. что у тебя показывает echo $_SESSION['option1'] ; когда ты сабмитишь форму с неотмеченным чекбоксом?
     
  16. softwarebbs

    softwarebbs Активный пользователь

    С нами с:
    28 окт 2009
    Сообщения:
    43
    Симпатии:
    0
    Может у кого есть пример?? Уже месяц не могу понять, как сохранить значение checked
     
  17. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    $_SESSION['checkbox'] = true;
     
  18. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    HTML:
    1. <input type="checkbox" name="option1" value="1" onchange('this.form.submit(this.form.action)')>Windows 95/98</input><Br>
    PHP:
    1.  
    2. $_SESSION['option1'] = $_POST['option1'];
     
  19. softwarebbs

    softwarebbs Активный пользователь

    С нами с:
    28 окт 2009
    Сообщения:
    43
    Симпатии:
    0
    <form name="form1">
    <input type="checkbox" name="option1" value="a1" onClick="$_SESSION['checkbox'] = true;" $_SESSION['checkbox'] >Test
    </form>

    Так что ли?
     
  20. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    softwarebbs
    Купи мозг.
    PHP:
    1. <?php
    2. if (isset($_POST['option1']))
    3. {
    4.      $_SESSION['option1'] = $_POST['option1'];
    5. }
    6. ?>
    7. <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    8. <input type="checkbox" name="option1" value="1" onchange('this.form.submit(this.form.action)')>Windows 95/98</input>
    9. </form>
    10. <?php
    11. if (isset($_SESSION['option1']))
    12. {
    13.      echo $_SESSION['option1'];
    14. }
    15. ?>
     
  21. softwarebbs

    softwarebbs Активный пользователь

    С нами с:
    28 окт 2009
    Сообщения:
    43
    Симпатии:
    0
    Ставлю галочку. Обновляю страницу. Значение галочки не сохранилось. :(
    Код (Text):
    1.  
    2.  
    3.  <?php
    4. echo 'ЗНАЧЕНИЕ: '.$_SESSION['option1'];
    5.   session_start();
    6.  
    7.   if (isset($_POST['option1']))
    8.   {
    9.       $_SESSION['option1'] = $_POST['option1'];
    10.   }
    11.   ?>
    12.   <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    13.   <input type="checkbox" name="option1" value="1" onchange('this.form.submit(this.form.action)')>Windows 95/98</input>
    14.   </form>
    15.   <?php
    16.   if (isset($_SESSION['option1']))
    17.   {
    18.       echo $_SESSION['option1'];
    19.   }
    20.   ?>
     
  22. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP:
    1. <?php
    2. if (isset($_POST['send']))
    3. {
    4.     $_SESSION['option1'] = isset($_POST['option1']);
    5. }
    6. ?>
    7. <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    8. <input type="hidden" name="send" value="1">
    9. <input type="checkbox" name="option1" onclick='this.form.submit(this.form.action);' <?php echo $_SESSION['option1']?'checked="1"':null; ?>>Windows 95/98</input>
    10. </form>
    session_start(); надо вызывать до вывода любого текста.