使用AJAX返回列表返回查询信息

时间:2013-01-18 02:34:32

标签: php jquery ajax odbc

我首先说我在这里使用过这个例子:

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>

这是 index.php 底部的javascript,我启动了ajax请求。注意,在他使用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的两个实例都无效。

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

2 个答案:

答案 0 :(得分:1)

替换第22行
<option value=<?=$row['EID']?>><?=$row['EID']?></option> 

或者用

替换查询行
    $query = "SELECT (EName) FROM LoginTable WHERE EmployeeID='$country'";

答案 1 :(得分: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>