-1

ここでこの例を使用していると言うことから始めます。

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

市/州などに合わせて作成されていますが、データベースで機能させようとしているだけなので、従業員情報を引き出していますが、まだ市/州のテキストがいくつかの場所にあるため、少し奇妙に見えるかもしれません.

また、現時点では、3つすべてではなく、2つのドロップダウンでこれを機能させようとしています。

とにかく、これは私がこれまでに持っているものであり、それを機能させるのに苦労しています。誰かが私が間違っているところを指摘できますか?

これが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>

それが私に与えているのは、私がコメントしたエラー Undefined variable: Row on line 22 があるということだけです。このエラーが 2 回表示されます。これは、$row を参照する両方のインスタンスが無効であることを意味します。

ヘルプや洞察はありますか?よろしくお願いします!!

4

2 に答える 2

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 に答える
1

その22行目を次のように置き換えます

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

または、クエリ行を次のように置き換えます

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