-1

我将首先说我一直在这里使用这个例子:

http://roshanbh.com.np/2008/01/populate-triple-drop-down-list-change-options-value-from-database-using-ajax-and-php.html

它是为城市/州等制定的,但我只是想让它与我的数据库一起使用,所以我正在提取员工信息,但在某些地方仍然有他的城市/州文本,所以看起来有点奇怪.

同样,目前我只是想让它与 2 个下拉菜单一起工作,而不是全部 3 个。

无论如何,这就是我到目前为止所拥有的,我正在努力让它为我工作。有人能指出我哪里出错了吗?

这是我在index.php中的内容,它基本上与我将国家名称换成与数据库中的几个(假)员工 ID 相关联的员工 ID 完全相同。

<form method="post" name="form1">
  <table border="0" cellpadding="0" cellspacing="0" width="60%"><tbody>
<tr>
 <td width="150">Country</td>
 <td width="150"><select style="background-color: #ffffa0" name="country" onchange="getState(this.value)">
    <option>Select Country</option><option value="1">mg05</option>
    <option value="2">aa01</option></select>
 </td>
</tr>
<tr>
 <td>State</td>
 <td>
 <p id="statediv">
  <select style="background-color: #ffffa0" name="state">
   <option>Select Country First</option></select>
 </td>
 </tr> 
</tbody></table>
</form>

这是我启动 ajax 请求的index.php底部的 javascript 。请注意,在他使用 mysql 数据库的示例中,我使用 ODBC 访问 Access 数据库,因此请记住这一点。

<script type="text/javascript"> 
function getState(countryId)
{
   var strURL="findState.php?country="+countryId;
   var req = getXMLHTTP();
   if (req)
   {
     req.onreadystatechange = function()
     {
      if (req.readyState == 4)
      {
     // only if "OK"
     if (req.status == 200)
         {
        document.getElementById('statediv').innerHTML=req.responseText;
     } else {
       alert("There was a problem while using XMLHTTP:\n" + req.statusText);
     }
       }
     }
   req.open("GET", strURL, true);
   req.send(null);
   }
}

下面是我的findState.php文件中的内容,我必须调整几件事以考虑到他使用 mysql 数据库和我使用 ODBC 访问 Access 数据库的事实。

<? 
$country=$_POST['country'];

    //make connection to database, bail if no connection
    $connection = odbc_pconnect('db','','');
    if (!$connection) { exit("Connection Failed: " . $connection); }

    //retrieve usernames and passwords
    $query = "SELECT (EName) FROM LoginTable WHERE EmployeeID='$country'";

    $result = odbc_exec($connection, $query);



?>
<select name="state">
 <option>Select State</option>
  <? while($row = odbc_fetch_row($result,'EName')){ ?>
  <option value=<?=$row['EName']?>><?=$row['EName']?></option> //Error on this line
  <? } ?>
</select>

它给我的只是有一个错误,未定义变量:第 22 行的行,我已对此进行了评论。它两次显示此错误,这意味着我引用 $row 的两个实例都无效。

任何帮助或见解?我真的很感激!!

4

2 回答 2

1

将第 22 行替换为

<option value=<?=$row['EID']?>><?=$row['EID']?></option> 

或将查询行替换为

    $query = "SELECT (EName) FROM LoginTable WHERE EmployeeID='$country'";
于 2013-01-18T02:42:37.610 回答
1

在选项值周围添加引号..检查下面的代码。

    //make connection to database, bail if no connection
    $connection = odbc_pconnect('db','','');
    if (!$connection) { exit("Connection Failed: " . $connection); }

    //retrieve usernames and passwords
    $query = "SELECT (EName) FROM LoginTable WHERE EmployeeID='$country'";

    $result = odbc_exec($connection, $query);



?>
<select name="state">
 <option>Select State</option>
  <? while($row = odbc_fetch_row($result,'EName')){ ?>
  <option value="<?=$row['EName']?>"><?=$row['EName']?></option> // Add quotes around option value..
  <? } ?>
</select>
于 2013-01-18T05:29:26.980 回答