2017-09-05 136 views
-3

如果ComboBox选择弓箭手浏览器会呼应正确的,但如果ComboBox不会选择弓箭手浏览器将回声,我想知道如果我的语法是错误的。组合框在HTML和PHP

Wrong. Error: Undefined index 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"; 
    } 
} 
+2

这里有问题吗? – j08691

+0

在你知道它是否存在之前,看起来你正在引用该数组键。参见[“Notice:Undefined index”](https://stackoverflow.com/questions/4261133/php-notice-undefined-variable-notice-undefined-index-and-notice-undef)。你也可以包含你的HTML代码。 – showdev

+1

您是否通过POST将参数text_hname发送到此文件? –

回答

1

的问题是,如果你想分配$英雄,如果text_hname设为您检查之前,它可能不会被定义。

建议重构:

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

不工作的家伙@homer –

+1

当然,它会从原始未经编辑的帖子中删除错误,因为您已经编辑它,所以问题很明显,您的表单不会在第一位发布值。 – HomerPlata

+0

如果我选择了弓箭手,浏览器将如何回显if语句?我将使用javascript还是不使用? –

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']

希望它有帮助。

+0

请注意:“如果[value]属性被忽略,该值取自选项元素的文本内容。“ - [

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"; 
    } 
} 
+1

请注意:“如果[value]属性被忽略,则该值将从选项元素的文本内容中获取。” - [