文本框中的名称不是来自php的回显

时间:2015-08-30 06:10:33

标签: php html post switch-statement html-select

代码:

<!DOCTYPE html>
<html>
<head>
<title>Greeting Service!</title>
</head>
<body>
<center>
<form method="post" action="">
<h1>What's Your Name?</h1>
<input type="text" name="name" placeholder="Name Here" />
<h4>Greet me in:
<select name="language">
<option value="option1">English</option>
<option value="option2">Chinese</option>
<option value="option3">French</option>
</select>
</h4>
<input type="submit" value="Greet Me!" />
<?php
if (isset($_POST['language'])) {
switch ($language) {
case "option1":
$result = "Hello, $name!"; 
break;
case "option2":
$result = "你好, $name!"; 
break;
case "option3":
$result = "Bonjour, $name!"; 
break;
}
}
?>
</form>
</center>
</body>
</html>

我不确定为什么它根据每种不同的语言显示我从输入文本框输入的名称和问候语。我使用$ _POST提交表单,并在我的php代码中使用了switchcase。有人可以帮助我,我希望在我选择了哪种语言我希望问候出来时,在文本框中输入的名称。感谢。

5 个答案:

答案 0 :(得分:0)

您没有定义$language。您应该使用的是$_POST['language']

if (isset($_POST['language'])) {
switch ($_POST['language']) {

编辑:没有注意到Meenesh Jain所说的$name变量。 最后一件事:你永远不会对结果做任何事情。不确定是否有意,但我会在最后添加echo $result;

答案 1 :(得分:0)

$name未定义

像这样更改您的代码

 if (isset($_POST['language'])) {
switch ($_POST['language']) {
case "option1":
$result = "Hello, {$_POST['name']}!"; 
break;
case "option2":
$result = "你好, {$_POST['name']}!"; 
break;
case "option3":
$result = "Bonjour, {$_POST['name']}!"; 
break;
}
}
?>

答案 2 :(得分:0)

这种情况正在发生,因为您没有将任何值初始化为 $ language 只需放置像$language = $_POST['language'];这样的代码 在switch语句之上。

答案 3 :(得分:0)

声明变体$name并为其指定$_POST['name']

<!DOCTYPE html>
<html>
<head>
<title>Greeting Service!</title>
</head>
<body>
<center>
<form method="post" action="">
<h1>What's Your Name?</h1>
<input type="text" name="name" placeholder="Name Here" />
<h4>Greet me in:
<select name="language">
<option value="option1">English</option>
<option value="option2">Chinese</option>
<option value="option3">French</option>
</select>
</h4>
<input type="submit" value="Greet Me!" />
<?php
if (isset($_POST['language'])) {
$name = $_POST['name'];
switch ($language) {
case "option1":
$result = "Hello, $name!"; 
break;
case "option2":
$result = "你好, $name!"; 
break;
case "option3":
$result = "Bonjour, $name!"; 
break;
}
}
?>
</form>
</center>
</body>
</html>

答案 4 :(得分:0)

尝试使用PHP来解决您的问题,但无法通过它,但Javascript无缝地完成它。虽然测试过。找到下面的代码

<center>
    <form method="post" action="index.php">
<h1>What's Your Name?</h1>
<input type="text" name="myName" placeholder="Name Here" id="myName"/>
<h4>Greet me in:
    <select name="lang" onchange="getValue()" id="language">
        <option value="English">English</option>
        <option value="Chinese">Chinese</option>
        <option value="French">French</option>
    </select>
</h4>
<input type="submit" value="Greet Me!" />

<div id="show"></div>


<script type="text/javascript">
    function getValue(){
        var myName = document.getElementById("myName").value;
        var lang =  document.getElementById("language").value;

        if(myName == null){
            document.getElementById("show").innerHTML = "No name selected";
        }
        else{
            switch(lang) {
                case 'English':
                    document.getElementById("show").innerHTML = "Hello" + ' ' + myName;
                    break;
                case 'Chinese':
                    document.getElementById("show").innerHTML = "你好" + ' ' + myName;
                    break;
                case 'French':
                    document.getElementById("show").innerHTML = "Bonjour" + ' ' + myName;
                    break;

            }

        }
    }
</script>

复制代码并将其替换为具有相同代码的代码。 很高兴我能提供帮助。