Есть forn - там есть один элемент checkbox. Надо чтобы значение checked сохранялась в сессию пользователя. Пожалуйста, помогите примером.
function SaveChecked($this) { alert($this.checked); } ?> <form> <input type="checkbox" name="option1" value="a1" onClick="SaveChecked(this);" checked>Windows 95/98<Br> </form> Функция не вызывается.
Твоя функция, если я правильно понял, находится в тегах PHP <?php function SaveChecked($this) ...?> Она не передается в браузер, а отрабатывает на сервере.
Код (Text): <?php session_start(); function SaveChecked($this) { $_SESSION['mychecked'] = $this.option1.value; } ?> <form name="form1"> <input type="checkbox" name="option1" value="a1" onClick="SaveChecked(this.form);" $_SESSION['mychecked'] >Windows 95/98<Br> </form> Как сохранить в сессию значение ??
1. Перестаем путать PHP и Javascript. PHP отрабатывает на сервере. И не может вызываться по onclick. Вообще. http://phpfaq.ru/na_tanke
Может, сразу submit()? XmlHttpRequest или submit может вызываться по onclick и дергать в свою очередь php скрипт. Но php функция сама по себе не может вызываться по onclick.
Никак. Javascript выполняется на стороне клиента и не имеет отношения к сессиям на сервере. Надо так. При сабмите формы передается управление php скрипту, который прописан у этой формы в параметре action. Этот скрипт проверяет существует ли (передано ли) значение поля "option1" и если это значение передано, пихать в сессию $_SESSION['option1']=true; а если не передано, то $_SESSION['option1']=false; просто для того, чтобы не дергать isset() каждый раз. В дальнейшем при прорисовке формы смотреть чему равен $_SESSION['option1']; и в зависимости от этого делать чекбокс checked или нет. А пример XmlHttpRequest тебе пока не нужен.
файл index.php Код (Text): <form action="work.php" method="post"> <? if ($_SESSION['option1'] == 'on') { ?> <input type="checkbox" name="option1" checked >Windows 95/98<Br> <? } else { ?> <input type="checkbox" name="option1" >Windows 95/98<Br> <? } ?> <input type="submit" value="ОК"> </form> Файл Work.php Код (Text): <? session_start(); $_SESSION['option1'] = $_POST['option1']; echo $_SESSION['option1'] ; ?> Вроде работает. Значение сохраняется. 1. Можно ли обойтись без кнопки Submit? Нужен только один checkbox. 2. По нажатию кнопки, броузер открыает мой work.php, а как сделать что бы вернутся обратно?
1. Mожно. С помощью Ajax. 2. написать код сохранения в сессию прямо в index.php и в action формы его же и указать. Или вообще ничего не указывать - по умолчанию форма сабмитится в "родной" скрипт. 3. что у тебя показывает echo $_SESSION['option1'] ; когда ты сабмитишь форму с неотмеченным чекбоксом?
HTML: <input type="checkbox" name="option1" value="1" onchange('this.form.submit(this.form.action)')>Windows 95/98</input><Br> PHP: $_SESSION['option1'] = $_POST['option1'];
<form name="form1"> <input type="checkbox" name="option1" value="a1" onClick="$_SESSION['checkbox'] = true;" $_SESSION['checkbox'] >Test </form> Так что ли?
softwarebbs Купи мозг. PHP: <?php session_start(); if (isset($_POST['option1'])) { $_SESSION['option1'] = $_POST['option1']; } ?> <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="checkbox" name="option1" value="1" onchange('this.form.submit(this.form.action)')>Windows 95/98</input> </form> <?php if (isset($_SESSION['option1'])) { echo $_SESSION['option1']; } ?>
Ставлю галочку. Обновляю страницу. Значение галочки не сохранилось. Код (Text): <?php echo 'ЗНАЧЕНИЕ: '.$_SESSION['option1']; session_start(); if (isset($_POST['option1'])) { $_SESSION['option1'] = $_POST['option1']; } ?> <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="checkbox" name="option1" value="1" onchange('this.form.submit(this.form.action)')>Windows 95/98</input> </form> <?php if (isset($_SESSION['option1'])) { echo $_SESSION['option1']; } ?>
PHP: <?php session_start(); if (isset($_POST['send'])) { $_SESSION['option1'] = isset($_POST['option1']); } ?> <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="hidden" name="send" value="1"> <input type="checkbox" name="option1" onclick='this.form.submit(this.form.action);' <?php echo $_SESSION['option1']?'checked="1"':null; ?>>Windows 95/98</input> </form> session_start(); надо вызывать до вывода любого текста.