记住下次访问的选定值

时间:2014-01-28 00:27:17

标签: javascript php

我有这样的下拉列表。

<select id='test'>
  <option value='one'>One</option>
  <option value='two'>Two</option>
  <option value='three'>Three</option>
 </select>

如何在第二次自动显示所选值?第一次,它允许用户从下拉菜单中选择一个项目。但在第二次它应该显示以前选择的值。我怎么能这样做?

4 个答案:

答案 0 :(得分:0)

您需要设置所选属性。

#mickjguy

答案 1 :(得分:0)

将选项值存储在数组中。检查test的值是否为$_POST。创建select元素。迭代每个数组值以生成<option>,检查$val是否与$_POST['test']值相同。如果是,echo 'selected'。使用ucfirst来大写第一个字母。

$vals = array('one', 'two', 'three');
$selected = isset($_POST['test']) ? $_POST['test'] : false;

echo '<select id="test" name="test">';

foreach($vals as $val):
    echo '<option value="',$val,'" ', ($selected == $val) ? 'selected':'','>', ucfirst($val) ,'</option>';
endforeach;

echo '</select>';

答案 2 :(得分:0)

你的问题非常广泛,所以我会给你一个简短的选项列表:

缓存

会话

在php中,您可以将用户数据保存在一个文件中,该文件与会话cookie中保存的ID相关联。 PHP为您完成所有工作,您需要做的就是使用$_SESSION变量 让这个形式: 的 form.php的

<?php include "load.php";?>
<form action="save.php">
 <select id='test' name="select" method="post">
  <option value='one' 
       <?php if($_SESSION["sel"]=="one") echo "selected=\"selected\"";?>
  >One</option>
  <option value='two' <?php if(...=="two") echo ...;?>>Two</option>
  <option value='three' <?php ...?>>Three</option>
 </select>
</form>

现在,最初,$_SESSION甚至没有定义,所以我们必须从会话加载数据:

<强> load.php

<?php
/**NO TEXT OUTPUT ABOVE THIS LINE!!!**/
session_start();
if(!isset($_SESSION["sel"]))
   $_SESSION["sel"] = null;
?>

这是表单提交的地方:

<强> save.php

<?php
/**NO TEXT OUTPUT ABOVE THIS LINE!!!**/
session_start();
$_SESSION["sel"] = $_POST["select"];
?>

只是饼干

使用cookie只允许用户随时更改数据。这对于方便用户来说可能是有用的(但如果你不小心的话,对黑客来说也是不幸的。)
PHP自动生成$_COOKIE数组,其中包含存储在用户浏览器中的所有cookie。 (更好地说:用户已发送)
我不会再重复3个文件示例,只是看看如何创建和删除cookie。同样,在设置cookie时,setcookie调用之前不得输出任何内容。

//Get a cookie
if($_COOKIE["sel"] == "two") {
    ... do something ...
}

//Set a cookie:
setcookie ("sel", $_POST["select"], time()+3600*24*7);  //Expires in 7 days

//Delete a cookie
setcookie ("sel", "", 0);  //Expired in 20th century

Local storage

此解决方案不会让您的服务器了解用户的设置。它可能与旧版浏览器不兼容 本地存储在不通知远程服务器的情况下将信息保存在用户的HDD上。这是一个记住它的选定值的菜单:

<select id='test' onchange="remember(this.selectedIndex);">
  <option disabled="disabled" selected="selected">Select something</option>
  <option value='one'>One</option>
  <option value='two'>Two</option>
  <option value='three'>Three</option>
</select>
<script type="text/javascript">
if(localStorage!=null) {
  if(localStorage["sel"]!=null) {
    document.getElementById("test").selectedIndex = localStorage["sel"];
  }
}
//alert("d");
function remember(index) {
  if(localStorage!=null) {
    localStorage["sel"] = index;
  }
}
</script>

答案 3 :(得分:0)

反映我的回答,我没有看到“下一次访问”部分。

假设您正在处理用户帐户,最好的方法是将所选选项存储在数据库中,一旦用户登录,您可以根据用户名提取所选选项。

user-&gt;选择选项 - &gt;存储在DB

用户登录 - &gt;调用form-&gt;从DB

中提取所选选项

如果您不处理用户帐户,则必须设置一个Cookie,以便在下次访问时记住此人及其选择。

请参阅:http://www.tutorialspoint.com/php/php_cookies.htm