如何在PHP中通过<option>提交POST数据?将表单Input改为Select
将表单提交按钮替换为下拉选择框的实现方案
原代码通过两个提交按钮切换语言,现在替换为<select>下拉选择框,核心是保持表单提交参数名lang不变,PHP端的会话逻辑无需修改。
修改后的完整代码
<!DOCTYPE html> <?php session_start(); if (!isset($_SESSION["lang"])) { $_SESSION["lang"] = "pl"; } if (isset($_POST["lang"])) { $_SESSION["lang"] = $_POST["lang"]; } require "translations/" . $_SESSION["lang"] . ".php"; ?> <html> <head> <title><?=$_TXT[0]?></title> </head> <body lang="<?=$_SESSION["lang"]?>"> <form method="post"> <select name="lang"> <option value="en" <?=($_SESSION["lang"] === "en") ? "selected" : ""?>>English</option> <option value="pl" <?=($_SESSION["lang"] === "pl") ? "selected" : ""?>>Polski</option> </select> <input type="submit" value="切换语言"> </form> </body> </html>
关键修改说明
- 用
<select name="lang">替代原有的两个提交按钮,name属性保持lang,确保PHP能正常接收语言参数 - 每个
<option>的value对应语言代码(en/pl),通过三元判断<?=($_SESSION["lang"] === "en") ? "selected" : ""?>让当前会话的语言选项默认选中 - 添加通用提交按钮,用户选择语言后点击即可完成切换
可选优化:自动提交版本
如果希望选择语言后无需点击按钮自动提交,可给<select>添加onchange事件:
<select name="lang" onchange="this.form.submit()"> <option value="en" <?=($_SESSION["lang"] === "en") ? "selected" : ""?>>English</option> <option value="pl" <?=($_SESSION["lang"] === "pl") ? "selected" : ""?>>Polski</option> </select>
内容的提问来源于stack exchange,提问作者G1nd3kk
相关产品推荐
相关产品推荐

