2012-08-31 83 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