1

私は3つのドロップダウンメニュー を作成していますが、それは非常にうまく機能しますが、2番目のドロップリストが最初の選択に表示され、3番目のドロップリストが2番目の選択に表示されるようにしたいです。私はそれを感謝する例です

PS: 2 番目のドロップ リストまたはテーブルには、最初のドロップ リストからの外部キーがあるため、ここでは、最初の選択に基づいて 2 番目にデータを入力する作業を行います。

fun.inc.php

<?php
 require_once('db.inc.php'); 

function connect(){
   mysql_connect(DB_Host, DB_User ,DB_Pass )or die("could not connect to the database" .mysql_error());

   mysql_select_db(DB_Name)or die("could not select database");

}
  function close(){

  mysql_close();

  }

  function countryQuery(){

  $countryData = mysql_query("SELECT * FROM country");

  while($record = mysql_fetch_array($countryData)){

     echo'<option value="' . $record['country_name'] .  '">' . $record['country_name'] . '</option>';

  }

}

function specializationQuery(){

$specData = mysql_query("SELECT * FROM specialization");

  while($recordJob = mysql_fetch_array($specData)){

     echo'<option value="' . $recordJob['specialization_name'] .  '">' . $recordJob['specialization_name'] . '</option>';

  }


}

function governorateQuery(){

$goverData = mysql_query("SELECT * FROM governorate");

  while($recordGover = mysql_fetch_array($goverData)){

     echo'<option value="' . $recordGover['governorate_name'] .  '">' . $recordGover['governorate_name'] . '</option>';

  }


}

?>

index.php

<?php
  require_once('func.inc.php'); 
  connect(); 


?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>testDroplistdown</title>
</head>

<body>
<p align="center">
<select name="dropdown">
  <?php countryQuery(); ?>
</select>
</p>
<br />
<br />

<p align="center">
<select name="dropdown2">
  <?php governorateQuery(); ?>
</select>
</p>

<p align="left">
<select name="dropdown3">
  <?php specializationQuery(); ?>
</select>
  <?php close(); ?>
</p>


</body>
</html>
4

2 に答える 2

1

php の終了タグと html ヘッダーの物乞いの後に a を残さないようにしてください。厄介なエラーが発生する可能性があります。

このスクリプトは動作するはずです

   <?php
   require_once('func.inc.php');
   connect();
    ?>
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>testDroplistdown</title>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
  </head>

  <body>
  <p align="center">
  <div id="dropdown1div"><select id="dropdown1" name="dropdown">
  <?php countryQuery(); ?>
  </select></div>
  </p>
  <br />
  <br />

  <p align="center">
  <div id="dropdown2div"></div>
  </p>

  <p align="left">
  <div id="dropdown3div"></div>

    <script type="text/javascript">
    $("#dropdown").change(function() {
    val = $(this).val();
    var html = $.ajax({
    url: "dropdown_select.php?dropdown=2&val="+val+"",
    async: true,
    success: function(data) {
    $('#dropdown2div').html(data);
    }////////////function html////////
    })/////////function ajax//////////
     });
    </script>

   <?php close(); ?>
   </p>


   </body>
   </html>

dropdown_select.php

    <?php
   require_once('func.inc.php');
   connect();
    if(isset($_GET['val'])){   
    $val = $_GET['val'];
    $dropdown = $_GET['dropdown'];
    }


    if($dropdown == '2'){
    echo '<select id="dropdown2" name="dropdown2">';
    governorateQuery();
    echo '</select>';
    ?>
     <script type="text/javascript">
     $("#dropdown2").change(function() {
     val = $(this).val();
     var html = $.ajax({
     url: "dropdown_select.php?dropdown=3&val="+val+"",
     async: true,
     success: function(data) {
     $('#dropdown3div').html(data);
     }////////////function html////////
     })/////////function ajax//////////
     });
    </script>

      } // end if statement



    if($dropdown == '3'){
     echo '<select id="dropdown3" name="dropdown3">';
     specializationQuery();       
     echo '</select>';

      } // end if statement
      close();
      ?>
于 2014-01-05T07:45:40.167 に答える
0

これは PHP だけではできません。AJAX を使用する必要があります。

Ajax は、javascript と PHP を使用して、ユーザー入力に従って新しい結果をロードする手法です。国を選択すると、その国のすべての都市を含む新しい選択ボックスが表示されるとします。

最初の選択ボックスへのイベント ハンドラーを作成する必要があります。

     <select name="dropdown" onchange="loadNewSelectBox(this.value)">
              // values
     </select>

loadNewSelectBox は、選択ボックスの値を使用してサーバー上の php ファイルに新しい xmlhttp リクエストを送信する関数です。次に、その PHP ファイル (json、xml、html など) からのデータを応答と共にエコーします。あなたの応答 (初心者向け) は、おそらく新しい選択ボックスを含む html になるでしょう。次に、その応答を div または段落に追加します。

これはあなたのタスクに似た例です: http://www.w3schools.com/php/php_ajax_database.asp

そして、これは良い学習源です。 https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started

于 2013-02-28T07:43:43.117 に答える