我首先说我在这里使用过这个例子:
它是针对城市/州等制定的,但我只是想让它与我的数据库一起工作,所以我将员工信息拉出来,但在某些地方仍然有他的城市/州文字所以它看起来有点奇怪。
此刻,我只想尝试使用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的两个实例都无效。
任何帮助或见解?我真的很感激!!
答案 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>