2012-08-31 39 views
0

我正在處理一個PHP任務,這需要我創建一個搜索表單,用戶可以使用用戶輸入的條件搜索數據庫。在MySQL數據庫中,我有一個firstName和lastName列。爲了讓用戶更容易,我想連接到並在列表框中輸入它,以便用戶可以單擊人名,但是現在我得到一個未定義的索引錯誤。我已經爲解決方案進行了研究,但一直未能找到解決方案。PHP/MySQL身份不明索引錯誤

我正在連接到服務器和文件中其他地方的數據庫。我只顯示了與以下問題相關的代碼。

表單代碼:

<form action="search.php" method="POST"> 
    <fieldset style="background-color:#CCC"> 
    <p> person: <?php fullname(); ?><br> 
    </fieldset> 
</form> 

function fullname() 
{ 
    $query = 'SELECT CONCAT (firstName,\' \',lastName) FROM athlete ORDER BY lastName'; 
    $result = mysql_query($query); 
    echo("<select name=\"fullnameListbox\">"); 
    echo("<option value=\"empty\"></option>"); 
    while($row = mysql_fetch_assoc($result)) 
    { 
     foreach($row as $index=>$value) 
     { 
      echo("<option value=\"$value\"> $value </option>"); 
     } 
    } 
    echo("</select>"); 
} 

處理模式:

echo($_POST['fullnameListbox']); 

我再說一遍,我得到一個身份不明的索引錯誤的錯誤。任何幫助表示讚賞。

我inlcluded的print_r($ _ POST),如下建議和我得到如下:

([lastNameListbox] => empty [lastNameText] => [search] => Submit) 

我認爲lastNameListBox是空的,即使我已經在列表框中單擊一個名稱,因此理論上它不應該空着。

+0

嘗試:'<選擇name = 'fullnameListbox'>',爲了調試發佈的數據,使用'的print_r($ _ POST)' –

+0

你在哪裏實際*作*您'mysql'連接? – Fluffeh

+0

與問題無關,但我不知道爲什麼當查詢總是返回一列時,爲什麼'foreach($ row爲$ index => $ value)'。使用'選擇CONCAT(firstName,\'\',lastName)作爲fullName'然後'$ row ['fullName']'。 – Barmar

回答

0

嗨,首先你必須連接數據庫,然後只有你也可以執行查詢。

<?php 
    $con = mysql_connect("localhost","peter","abc123"); 
    if (!$con) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 
// some code 
mysql_close($con); 
?> 

試試這個..

+0

這是文件中的其他地方。我只顯示了與問題相關的代碼。我將在這個問題中加入這個。 – batsta13

1

一個身份不明的指數通知是與試圖訪問尚未初始化數組索引的PHP 通知

$_GET['some_key_name']++; // will result in such a notice 
          // if the array key was never initialised 

if(isset($_GET['some_key_name'])) // will not result in such a notice 
    $_GET['some_key_name']++;  // will not result in such a notice 
else 
    $_GET['some_key_name'] = 1; // will not result in such a notice 
+0

我試過這個,但我仍然得到相同的錯誤 – batsta13

+0

這是這種通知的唯一原因,這意味着你沒有做到這一點,你應該有。向我們展示那部分代碼。 –

+0

如果(isset($ _GET ['fullnameListbox']))//將不會產生這樣的通知,我已經將下面的代碼放在處理文件'<?php 中 $ _GET ['fullnameListbox'] ++ ; //不會導致這樣的通知 else $ _GET ['fullnameListbox'] = 1; print_r($ _ POST); echo($ _ POST ['fullnameListbox']);' – batsta13