2009-12-06 64 views
2

我想知道你是否可以幫助我以下幾點:

我將一些填入表單的信息傳遞到下一頁來顯示。我正在使用$_POST方法。雖然檢查代碼時顯示在瀏覽器中的信息顯示爲注意:未定義索引錯誤,並且沒有傳遞值的痕跡(代碼中應該是)。我認爲這與上面的錯誤有關。

我呼籲它的方式是對前:

$name = $_POST['name']; 

此外,我想獲得一些隱藏字段相同的信息,以便它們存儲在數據庫中,但在這裏(在瀏覽網頁後)也沒有價值傳遞。隱藏的值是空的。

對不起,如果這似乎是一件愚蠢的事情......但賭注,不知道我做錯了什麼。 真的很感謝任何幫助。非常感謝弗朗西斯

回答

6

在PHP中,您不能讀取不存在的變量。對於非現有的普通變量,如$foo$bar你會得到一個未定義變量通知,對不存在的數組索引像$array['foo']$array['bar']你會得到一個未定義指數通知,像$object->foo$object->bar不存在的對象屬性你會得到一個未定義的財產的通知。

這是因爲在PHP中,變量必須在讀訪問完成之前聲明。 PHP的函數isset用於測試變量是否存在,array_key_exists用於數組索引,property_exists用於對象屬性。此外isset是一種通用工具來測試存在。 (請注意,價值等同於不存在。)

所以你的情況,你應該測試是否試圖讀取它之前存在$_POST['name']

if (array_key_exists($_POST, 'name')) { 
    $name = $_POST['name']; 
} 
// or 
if (isset($_POST['name']) { 
    $name = $_POST['name']; 
} 

但是注意,$name存在現在取決於$_POST['name']的存在。

+0

謝謝Gumbo的反饋,儘管我仍然不確定自己做錯了什麼。我使用isset發出警告。這是否意味着錯誤地發佈了這些值? – frapet 2009-12-06 17:15:03

+0

@francesco:每當你想要讀取你不確定的變量時,你需要用'isset'來測試。看一看我已經發布的例子,其中'$ _POST ['name']'的存在在我讀取它的值之前進行了測試。但現在'$ name'依賴於'$ _POST ['name']',並且您需要測試該變量是否存在。或者你聲明'$ name'爲默認值(例如* null *或'「」'),並且只有在存在'$ _POST ['name']'時才覆蓋它。 – Gumbo 2009-12-06 17:36:57

+0

謝謝你。 – frapet 2009-12-06 20:33:42

1

爲了調試,你可以嘗試:

的print_r($ _ POST);

它會顯示一個post數組中的所有變量。 看看你的變量是否在那裏,如果沒有 - 你的表單有什麼問題。

Leonti

+0

謝謝Leonti。變量在那裏。如上所述,值實際上顯示在頁面中,因此它們被傳遞。 – frapet 2009-12-06 16:09:37

+0

然後,他們正在某處被取消設置,或者您在頁面上看到的值不是來自$ _POST var。 – 2009-12-06 16:14:20