2017-09-05 34 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]屬性被忽略,則該值將從選項元素的文本內容中獲取。」 - [