0

2 つのドロップダウン リストで構成されるページから 2 つの変数を渡して計算を行い、3 つ目のリストを div に取得しようとしています。どうすればこれを機能させることができますか?これが私のコードです。

 <HTML>
     <HEAD>

       <script src="jquery-1.10.2.js"></script>

        <script type="text/javascript">
           $(document).ready(function(){
                $("#day").change(function(){

                      var day=$("#day").val();
                      var doctor=$("#doctor").val();

                      $.ajax({
                          type:"post",
                          url:"time.php",
                          data:"day="+day+"&doctor="+doctor,
                          success:function(data){
                             $("#testing").html(data);
                          }

                      });

                });
           });
       </script>
      </HEAD>

<BODY>
    <FORM action="post">

   <SELECT id="doctor">//some options</SELECT>      
   <SELECT id="day">//some option </select>


     <div id="testing">
   BLA BLA BLA


      </div>

    </BODY>



 </HTML>

time.php ページで、ビット値 '1' の列名を取得し、結果をドロップ ダウンリストに格納する計算を行います。

         <?
    $con=mysqli_connect("localhost","clinic","myclinic","myclinic");
    // Check connection

    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $doctor = $_POST['doctor'];

    $day = $_POST['day'];

    $query="SELECT * FROM schedule WHERE doctor='" .$doctor."'AND day='"    .$day. "'";
            //Some calculations and store the result into a list


    $result = mysqli_query($con, $query);

    if(!$result) 
    {
        echo "Failed to execute the query";
    }

    echo" 
    <table><tr><td>&nbsp;Time&nbsp;</td>
    <td>&nbsp;<select name='time'>";
    $i = 0;                                 //Initialize the variable which passes over the array key values

    $row = mysqli_fetch_assoc($result);    //Fetches an associative array of the row
    $index = array_keys($row);             // Fetches an array of keys for the row.

    while($row[$index[$i]] != NULL)
    {

        if($row[$index[$i]] == 1) {             
            echo $index[$i];
            echo "<option value='"  . $index[$i]."'>" . $index[$i] . "</option>";
        }
        $i++;
    }       

    echo "</select>";

      ?>
4

2 に答える 2

0

3 つのドロップダウン リストがあるホームページには、最初の 2 つのリストの値を取得し、それらの値を使用して php サーバーにクエリを送信する js コードが必要です。

サーバー上の php スクリプトは結果を XML ファイルに出力する必要があります。これが AJAX 名の由来です。

次に、ホームページの js が xml ファイルを取得して解析し、結果を 3 番目のリストに入力します。

このプロセス中は post/get はありません!!

ここに例があります

function updatehours()
{
  document.getElementById('minute').disabled=true;
  document.getElementById('hour').disabled=false;
  // update xml at server side.
  var head = document.getElementsByTagName('body').item(0);
  var script = document.createElement('script');
  script.setAttribute( 'type', 'text/javascript' );
  script.setAttribute( 'src', 'updatehours.php?file=92007bb48c.xml&date='+document.getElementById('datepicker').value);
  script.deleteFromDocument;
  head.insertBefore( script, head.firstChild );
  setTimeout('processhours()',500);
  setTimeout('processminutes()',1000);
}
function processhours()
{
  var xmlhttp;
  var txt,xx,x,i;
  if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function()
  {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
      txt="";
      x=xmlhttp.responseXML.documentElement.getElementsByTagName("H");
      for (i=0;i<x.length;i++)
      {
        try
        {
          txt=txt + "<option value=\"" + x[i].firstChild.nodeValue + "\">" + x[i].firstChild.nodeValue + "</option>";
        }
        catch (er)
        {
        }
      }
    }
    document.getElementById('hour').innerHTML=txt;
  }
  xmlhttp.open("GET","hours/92007bb48c.xml",true);
  xmlhttp.send();
}

updatehours.php は、結果を計算して xml ファイルに入れるサーバー内のスクリプトです。

于 2013-09-22T04:57:25.803 に答える