在HTML和PHP中的组合框

时间:2017-09-05 16:55:07

标签: php html

如果组合框选择弓箭手,浏览器将回显正确但如果组合框不会选择弓箭手,浏览器将回显,我想知道我的语法是否是错误。

  

错误。错误:未定义的索引 text_hname

这是结构:

<form action="server.php" method="POST">
    <img src="images/logo.png" class="logo">
        <div class="container">
            <h1>Account Details</h1>
            <br>
            <label class="username">Username</label>
            <input type="text" name="text_username" class="text_user" placeholder="Enter username">
            <label class="password">Password</label>
            <input type="text" name="text_password" class="text_pass" placeholder="Enter password">
            <label class="email">Email</label>
            <input type="text" name="text_email" class="text_email" placeholder="Enter email">
            <label class="cname">Character Name</label>
            <input type="text" name="text_cname" class="text_cname" placeholder="Enter Character Name">
            <label class="character">Select Character</label>
            <select class="names" name="text_hname">
                <option>Archer</option>
                <option>Barbarian</option>
                <option>Balloon</option>
                <option>Witch</option>
                <option>Spirit</option>
                <option>Hog Rider</option>
                <option>Minion</option>
            </select>
            <img src="images/">
            <br>
            <input type="submit" class="submit" name="submit">


        </div>
    </form>


//option
$hero = $_POST['text_hname'];

if (isset($_POST['text_hname'])) {
    if ($hero == 'Archers') {
        echo "Correct";
    } else {
        echo "wrong";
    }
}

3 个答案:

答案 0 :(得分:1)

问题在于,如果您在检查text_hname是否设置之前尝试分配$ hero,则可能无法定义。

建议的重构:

if (isset($_POST['text_hname'])) {
    $hero = $_POST['text_hname'];
    if ($hero == 'Archers') {
        echo "Correct";
    }
    else
    {
        echo "wrong";
    }
}

答案 1 :(得分:0)

$_POST['text_hname']将返回已选择 option value,而不是option name

像这样修改你的select

<select class="names" name="text_hname">
    <option value="Archer">Archer</option>
    <option value="Barbarian">Barbarian</option>
    <option value="Balloon">Balloon</option>
    <option value="Witch">Witch</option>
    <option value="Spirit">Spirit</option>
    <option value="Hog_Rider">Hog Rider</option>
    <option value="Minion">Minion</option>
</select>

server.php页面

if (isset($_POST['text_hname'])) {

    $hero = trim($_POST['text_hname']); //** to remove any whitespace
    if ($hero == 'Archer') {
        echo "Correct";
    } else {
        echo "wrong";
    }
}

编辑:可能是因为您的$_POST['text_hname']有空格。在trim()

上试试$_POST['text_hname']

希望它有所帮助。

答案 2 :(得分:0)

//Your select in form needs values. Same values that you are going to compare.
<select class="names" name="text_hname">
    <option value="Archer">Archer</option>
    <option value="Barbarian">Barbarian</option>
    <option value="Balloon">Balloon</option>
    <option value="Witch">Witch</option>
    <option value="Spirit">Spirit</option>
    <option value="HogRider">Hog Rider</option>
    <option value="Minion">Minion</option>
</select>

//Php code
if (isset($_POST['text_hname'])) {
    $hero = $_POST['text_hname'];
    if ($hero == 'Archer') { //Its Archer, not Archers
        echo "Correct";
    }
    else
    {
        echo "wrong";
    }
}