为什么使用'hidden'和& # 39;按钮# 39;输入相同的变量
Why do I get 2 equal html GET parameters when using 'hidden' and 'button' input for same variable?
我想在一个网站上有三种语言-两个按钮用于非选择的语言,只是一个文本用于使用的语言-加上两个按钮,显示不同的数据在一个div(表从数据库,不在这里显示)。
一切都是"button type='submit'…"我读到我"只需要"添加一个"input type='hidden'…",但是我在URL上得到一个重复的'lang'参数,因为没有选择语言的可点击按钮。
请问做这件事的正确方法是什么?代码如下,右上角有浮动语言条:
<?php session_start();
// connects to the databse
$erroConn = include(".../connector.php");
// converts $_GETs to $php_vars
if (isset($_GET['lang'])) { // language
$lang = $_GET['lang'];
leDic($lang); // reads the apropriate language file
} else {
$lang = NULL;
}
if (isset($_GET['table'])) { // table
$table = $_GET['table'];
} else {
$table = NULL;
}
?>
<html lang='en'>
<head>
<meta charset='UTF-8'>
<title>Example</title>
<style>
.langs { /* makes the language bar float */
background-color: #90A090;
position:absolute;
right:10;
top:10;
font-size: 0.75em; /* 10px/16px = 0.625em */
}
</style>
</head>
<body>
<form id="form1" name="form1" method="get" action="">
<?php
echo "<h1>".txt('titulo')."</h1>"; // draws the appropriate phrase from the language file
// if don't have a table selected yet
if (is_null($table)) {
// shows both buttons
echo "<button type='submit' name='table' value='A'>table A</button><BR>";
echo "<button type='submit' name='table' value='B'>table B</button><BR>";
} else {
// if already have a table selected, shows only the others as buttons
switch($table) {
case 'A':
echo "table A<BR>";
echo "<button type='submit' name='table' value='B'>table B</button><BR>";
break;
case 'B':
echo "<button type='submit' name='table' value='A'>table A</button><BR>";
echo "table B<BR>";
break;
}
}
// constructs the language bar inside the div 'langs'
$dir1 = glob('./coisas_txt*'); # all languages available
echo "<div id='langs' class='langs'>";
foreach ($dir1 as $fname) {
$sigla = mb_substr($fname,-2,NULL,'UTF-8');
// draws a darker button for the selected language
if ($sigla == $lang) {
echo "<button type='submit' name='lang' value='$sigla'><strong>$sigla</strong></button>";
} else {
echo "<button type='submit' name='lang' value='$sigla'>$sigla</button>";
}
}
echo "</div>";
echo "<div id='tabela'>";
if (!is_null($table)) {
// shows the data, if any
switch($table) {
case 'A':
echo 'tabela A';
break;
case 'B':
echo 'tabela B';
break;
}
}
echo "</div>";
?>
</form>
</body>
</html>
谢谢!
下面是一个基本语言选择和会话存储的粗略示例
<?php // lang.php
session_start();
$validLanguages = array('en','jp','ru');
// If found on URL, set the session
if(isset($_GET['lang']) and !empty($_GET['lang']) and in_array($_GET['lang'],$validLanguages))
{
$lang = $_SESSION['lang'] = $_GET['lang'];
}
// Read from session
elseif(isset($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
// Default
else
{
$lang = 'en';
}
?>
<form method="get">
<input type="submit" name="lang" value="en" <?php if($lang == 'en'){ ?>disabled<?php }?>>
<input type="submit" name="lang" value="jp" <?php if($lang == 'jp'){ ?>disabled<?php }?>>
<input type="submit" name="lang" value="ru" <?php if($lang == 'ru'){ ?>disabled<?php }?>>
<input type="submit" name="lang" value="es" <?php if($lang == 'es'){ ?>disabled<?php }?>>
</form>
<a href="lang.php">Some Page link</a> | <a href="lang.php">Another Page link</a>
我所需要的就是两个独立的表单,其中一个表单的按钮作为隐藏输入,另一个表单的按钮作为隐藏输入,反之亦然。
下面是代码,以防有人需要它:
<?php // index.php
session_start();
$errorConn = include(".../dbfile.php");
// If found on URL, set the session
if(isset($_GET['lang']) and !empty($_GET['lang'])) { //and in_array($_GET['lang'],$validLanguages)
$lang = $_SESSION['lang'] = $_GET['lang'];
} elseif(isset($_SESSION['lang'])) { // Read from session
$lang = $_SESSION['lang'];
} else { // Default
$lang = $_SESSION['lang'] = 'BR';
}
leDic($lang);
if(isset($_GET['table']) and !empty($_GET['table'])) { //and in_array($_GET['lang'],$validLanguages)
$table = $_SESSION['table'] = $_GET['table'];
} elseif(isset($_SESSION['table'])) { // Read from session
$table = $_SESSION['table'];
} else { // Default
$table = $_SESSION['table'] = -1;
}
?>
<html lang='BR'>
<head>
<meta charset='UTF-8'>
<title>Example</title>
<style>
.langs {
background-color: #90A090;
position:absolute;
right:10;
top:10;
font-size: 0.75em; /* 10px/16px = 0.625em */
}
</style>
</head>
<body>
<form id="form1" name="form1" method="get" action="">
<?php
echo "<h1>".txt('titulo')."</h1>";
echo "<input type='hidden' name='lang' value='$lang' />";
echo "<button type='submit' name='table' value='A'>table A</button><BR>";
echo "<button type='submit' name='table' value='B'>table B</button><BR>";
echo "<div id='tabela'>";
if (!is_null($table)) {
switch($table) {
case 'A':
echo 'tabela A';
break;
case 'B':
echo 'tabela B';
break;
}
}
echo "</div>";
?>
</form>
<form id="form2" name="form2" method="get" action="">
<?php
$dir1 = glob('./coisas_txt*'); # all languages available
echo "<input type='hidden' name='table' value='$table' />";
echo "<div id='langs' class='langs'>";
foreach ($dir1 as $fname) {
$sigla = mb_substr($fname,-2,NULL,'UTF-8');
if ($sigla == $lang) {
echo "<button type='submit' name='lang' value='$sigla'><strong>$sigla</strong></button>";
} else {
echo "<button type='submit' name='lang' value='$sigla'>$sigla</button>";
}
}
echo "</div>";
?>
</form>
</body>
</html>
相关文章:
- 来自文本输入null的html javascript变量
- 如何将输入范围的值传递给JS中的变量
- 访问javascript文件输入变量的值
- 如何获取用户's输入并返回我定义的匹配变量的值
- 在输入forEach(javascript)时重置变量
- 文本输入值中的JavaScript变量
- 将JavaScript变量传递到HTML输入框和(在PHP文件中使用)
- 使用输入变量设置元素的值
- Jquery 设置变量输入字段值
- 清除 JavaScript 中按钮的变量输入时遇到问题
- 动态创建指令angularjs,并从新指令中获取变量输入
- jQuery conact变量输入名称未更新
- Javascript变量输入id
- 如何从几个变量输入数据到一个图表使用d3
- javascript.将变量传递给变量输入字段
- 在单击按钮时获取变量输入值
- 如何将表单的内容作为变量输入
- 如何使用 ajax 将 javascript 变量输入到 php 函数中
- 如何将javascript变量输入到php脚本中
- 如何在一个html页面的表单中输入值,并将它们作为变量输入到另一个html页面?