2011-01-30 205 views
40

這聽起來真的很愚蠢,但我無法弄清楚爲什麼我得到這個錯誤。PHP未定義索引

我已經在我的HTML表單創建一個選擇框,命名爲 「query_age」:

<form method="get" action="user_list.php"> 
<select name="query_age"> 
    <option value="">Doesn't matter</option> 
    <option value="between 18 and 30">18 - 30</option> 
    <option value="between 31 and 40">31 - 40</option> 
    <option value="between 41 and 50">41 - 50</option> 
    <option value="between 51 and 60">51 - 60</option> 
    <option value="between 61 and 70">61 - 70</option> 
    <option value="between 71 and 80">71 - 80</option> 
    <option value="between 81 and 90">81 - 90</option> 
    <option value="> 90">Older than 90</option> 
</select> 

在相應的PHP形式,我有:

$query_age = $_GET['query_age']; 

當我運行頁面,我得到這個錯誤:

Notice: Undefined index: query_age in index.php on line 19

我不明白爲什麼發生這種情況,我很想知道如何使它去AW唉。

+2

'print_r($ _ GET)'顯示什麼?其他表單值是否存在?你爲什麼不使用POST? – 2011-01-30 12:03:00

+0

_corresponding php form_對應於HTML表單的方式?它是否生成HTML表單?它處理通過HTML表單提交的值嗎?它是否具有不同擴展名的相同基本名稱?請啓發我們。 – Oswald 2011-01-30 12:06:17

+2

你知道你必須像``user_list.php``那樣處理表單,就像你在表單的動作中指定的那樣?如果你可以發佈`index.php`的相關代碼並解釋應用程序的一般「流程」,這將會有所幫助。 – 2011-01-30 12:30:35

回答

90

我沒有看到PHP文件,但是這可能是 -
替換你的PHP文件:

$query_age = $_GET['query_age']; 

有:

$query_age = (isset($_GET['query_age']) ? $_GET['query_age'] : null); 

最可能的是,在第一次運行沒有?query_age=[something]$_GET的腳本沒有像query_age這樣的密鑰。

3

第一次運行頁面時,query_age索引不存在,因爲它尚未從表單發送過來。

當你提交表單時,它就會存在,它不會抱怨它。

#so change 
$_GET['query_age']; 
#to: 
(!empty($_GET['query_age']) ? $_GET['query_age'] : null); 
9

成員的存在分配給它,在我看來,相當難看前的檢查。

Kohana有一個useful function使選擇參數變得簡單。

你可以讓你自己是這樣的...

function arrayGet($array, $key, $default = NULL) 
{ 
    return isset($array[$key]) ? $array[$key] : $default; 
} 

然後像做...

$page = arrayGet($_GET, 'p', 1); 
1

,如果你使用像答案isset已經發表單曲,只是讓確定最後有一個支架,如下所示:
$query_age = (isset($_GET['query_age']) ? $_GET['query_age'] : null);