如何在php中的下拉列表中保留所选项?

时间:2013-02-07 08:26:44

标签: php

我正在使用此代码在我的网站中切换语言。一切正常,但是当我改变语言总是第一项被选中。我想保持选择哪种语言是网站语言。这是我的代码。

<td width="85%" align=right class=top_section> 
          <form method='POST'>
          <select name="switchlanguage" onchange="this.form.submit()"> 
          <option value="en" <?php if($_POST['switchlanguage'] == 'en') echo 'selected';?>English</option> 
          <option value="ru" <?php if($_POST['switchlanguage'] == 'ru') echo 'selected';?>Русский</option> 
          <option value="tj" <?php if($_POST['switchlanguage'] == 'tj') echo 'selected';?>Точики</option> 
          </select> 

    </form>
    </td>

如何让它正常工作?如果选择俄语,它应该保留俄语。但它总是用英语。

使用此代码更改网站语言

if(!isset($_POST['switchlanguage']))
  {
  include_once($DOCUMENT_LANG.'en.lng.php');
  }
  else
  {
  include_once($DOCUMENT_LANG.$_POST['switchlanguage'].'.lng.php');
  }

即使我使用标签进入下拉框并使用向下键,它也会自动转到第一项。

7 个答案:

答案 0 :(得分:1)

我发现了什么问题。我不知道为了聪明我们需要&lt; {php}&gt;和&lt; {/ php}&gt;标签。 因此,smarty并不知道写作。我最后写了这段代码,但它确实有效。

<form method='POST'>
      <select name="switchlanguage" onchange="this.form.submit()"> 
      <option value="en" <{php}>if($_POST['switchlanguage'] == 'en') echo 'selected="selected"';<{/php}>> English</option> 
      <option value="ru" <{php}>if($_POST['switchlanguage'] == 'ru') echo 'selected="selected"';<{/php}>> Русский</option> 
      <option value="tj" <{php}>if($_POST['switchlanguage'] == 'tj') echo 'selected="selected"';<{/php}>> То?ик?</option> 
      </select> 

感谢所有帮助过我的人。

答案 1 :(得分:0)

嗯,用饼干怎么样?我认为对于这个问题应该是公平的SOP,除非你出于某些原因不能使用它们(即你不想关注关于cookie的欧盟法律?)

答案 2 :(得分:0)

你应该使用

selected="selected"

不是PHP程序员,但可以尝试

<td width="85%" align=right class=top_section> 
          <form method='POST'>
          <select name="switchlanguage" onchange="this.form.submit()"> 
          <option value="en" <?php if($_POST['switchlanguage'] == 'en') echo 'selected="selected"';?>English</option> 
          <option value="ru" <?php if($_POST['switchlanguage'] == 'ru') echo 'selected="selected"';?>Русский</option> 
          <option value="tj" <?php if($_POST['switchlanguage'] == 'tj') echo 'selected="selected"';?>Точики</option> 
          </select> 

    </form>
    </td>

嘿,试试

<form method='POST'>
          <select name="switchlanguage" onchange="this.form.submit()"> 
          <option value="en" <?php if($_POST['switchlanguage'] == 'en') echo 'selected="selected"';?>> English</option> 
          <option value="ru" <?php if($_POST['switchlanguage'] == 'ru') echo 'selected="selected"';?>> Русский</option> 
          <option value="tj" <?php if($_POST['switchlanguage'] == 'tj') echo 'selected="selected"';?>> Точики</option> 
          </select> 

    </form>

答案 3 :(得分:0)

您的代码中有一些拼写错误。 见这个

<option value="en" <?php if($_POST['switchlanguage'] == 'en') echo 'selected';?>English</option>

这应该是

<option value="en" <?php if($_POST['switchlanguage'] == 'en') echo 'selected'; ?>>English</option>

注意选项开始标记的结束括号(在英语和其他语言之前)。

您可以用以下代码替换您的选择代码:

<select name="switchlanguage" onchange="this.form.submit()"> 
    <option value="en" <?php if($_POST['switchlanguage'] == 'en') echo 'selected'; ?>>English</option> 
    <option value="ru" <?php if($_POST['switchlanguage'] == 'ru') echo 'selected'; ?>>Русский</option> 
    <option value="tj" <?php if($_POST['switchlanguage'] == 'tj') echo 'selected'; ?>>Точики</option> 
</select> 

修改

您的编辑代码是否如此,

<?php
$_POST['switchlanguage'] ='ru';
?>
<table>
<tr>
    <td width="85%" align=right class=top_section> 
        <form method='POST'>
            <select name="switchlanguage" onchange="this.form.submit()"> 
                <option value="en" <?php if($_POST['switchlanguage'] == 'en') echo 'selected'; ?>>English</option> 
                <option value="ru" <?php if($_POST['switchlanguage'] == 'ru') echo 'selected'; ?>>Русский</option> 
                <option value="tj" <?php if($_POST['switchlanguage'] == 'tj') echo 'selected'; ?>>Точики</option> 
            </select> 
        </form>
    </td>
</tr>
</table>

我已经测试了这个并且工作正常。

答案 4 :(得分:0)

对于您的问题,您可以使用以下一项或多项:

  • 匿名用户选择语言:转到PHP脚本,该脚本使用所选lang的值设置cookie,例如: setcookie(&#34; switchlanguage&#34;,&#39; en&#39;,time()+ 3600,&#34; /&#34;,&#34; example.com&#34;);
  • 经过身份验证的用户:您可能会考虑将当前用户的首选语言存储在您的数据库中(然后创建一个存储和检索选择的脚本)
  • 你总是可以考虑使用session来存储lang但是当用户离开你的网站时它会过期(开始一个新的会话)

在上述任何一种情况下,您都需要制作一个脚本,在Cookie,Session或DB中设置lang val,然后重定向回原始页面。或者更好地对存储val的PHP脚本进行Ajax调用,然后返回值设置或错误的JSON对象。

最后,您需要调整HTML以选择正确的语言(例如,使用Cookie):

<select name="switchlanguage" onchange="this.form.submit()"> 
<option value="en" <?php if(!isset($_COOKIE['switchlanguage']) || empty($_COOKIE['switchlanguage']) || $_COOKIE['switchlanguage'] == 'en') echo 'selected';?>English</option> 
<option value="ru" <?php if($_COOKIE['switchlanguage'] == 'ru') echo 'selected';?>Русский</option> 
<option value="tj" <?php if($_COOKIE['switchlanguage'] == 'tj') echo 'selected';?>Точики</option> 
</select> 

我还添加了缺少的默认案例: (!isset($ _ COOKIE [&#39; switchlanguage&#39;])|| empty($ _ COOKIE [&#39; switchlanguage&#39;])) 如果还没有选择郎,请选择英语。

答案 5 :(得分:0)

是这个帖子结果

<?php if($_POST['switchlanguage'] == 'en') echo 'selected="selected"';?. ?>     

来自其他一些页面,或者你是否正在改变这个页面本身的语言。如果它是通过一个帖子请求来自其他页面,那么它可以,但如果你在这个页面本身改变你的语言,使用javascript来获取特定的选择的字段。

答案 6 :(得分:0)

由于我找不到更好的解决方案,我做了一个小技巧......我又增加了一个选项。它将永远是第一选择。第一个选项是选择语言。如果有人找到另一种方法,我会很高兴。目前我找不到更好的解决方案。

<td width="85%" align=right class=top_section> 
    <form method='POST'>
          <select name="switchlanguage" onchange="this.form.submit()"> 
          <option  > Choose language</option> 
          <option value="en" > English</option> 
          <option value="ru" > Русский</option> 
          <option value="tj" > Точики</option> 
          </select> 

    </form>
    </td>  

我知道这不好,但总比没有好。 我不接受这个答案,因为它没有解决我的问题。