【Vegas原创】PHP+jquery实现select的三级联动

 

image

需求:选择科别,可以调出科别的医生;选择医生,可以调出医生所在的诊室

方法:

 

1, HTML js:

<script src="../js/jquery-1.3.2.js"></script>
   1:  
   2: <script type="text/javascript">
   3:  
   4: $(document).ready(function(){
   5:     $("#dept_no").change(changeDept);
   6:     $("#doc_no").change(changeDoc);    
   7: });
   8:  
   9: function changeDept(){
  10:     var deptno = $("#dept_no").val();
  11:     var timeshift=$("#time_shift").val();
  12:     var opddate=$("#opd_date").val();
  13:     
  14:     //更新医师select
  15:     $.post("changeDeptDocRoom.php",{dept_no:deptno,type:"doc",time_shift:timeshift,opd_date:opddate},function(data){
  16:             var docs = $("#doc_no");//存放医师列表
  17:             var json = eval(data);
  18:             docs.html("");
  19:             if(json.length == 0){
  20:                 docs.append("<option>无医师排程</option>");
  21:                 $("#room_no").val("");
  22:                 $("#room_sno").val("");
  23:             }else{
  24:               for(var i in json){
  25:                   docs.append("<option value='"+json[i].no+"'>"+json[i].no+"  "+json[i].name+"</option>");
  26:               }
  27:             changeDoc();
  28:             }    
  29:         });
  30: }
  31:  
  32: function changeDoc(){
  33:     var docno = $("#doc_no").val();
  34:     var deptno = $("#dept_no").val();
  35:     var timeshift=$("#time_shift").val();
  36:     var opddate=$("#opd_date").val();
  37:  
  38:     //触发roomno text
  39:     $.post("changeDeptDocRoom.php",{doc_no:docno,type:"room",dept_no:deptno,time_shift:timeshift,opd_date:opddate},function(data){
  40:         var roomno = $("#room_no");//存放ROOM No text
  41:         var roomsno= $("#room_sno");//存放ROOM No hidden
  42:         var json=eval(data);
  43:         for (var i in json){
  44:             roomno.val(json[i].name);
  45:             roomsno.val(json[i].no);
  46:             }
  47:     });
  48: }
  49:  
</script>

 

2,HTML代码:

<tr>
            <td class="textRowLong">看诊日期:</td>
            <td class="textRowLong">
                <input type="text" class="textboxReadOnly"  value="<?php printf (getDateFormat(uf_get_ctrl_file_sys_date()));?>" name="opd_date" id="opd_date" readonly>
            </td>
        </tr>
        <tr>
            <td class="textRowLong">时段:</td>
            <td class="textRowLong">
             <select class="selectBoxNoWidth" id="time_shift" name="time_shift">
              <?php 
            prtCodeDTL("0115",uf_get_time_coder()); ?>
            </select>
            </td>
        </tr>
      <tr>
            <td class="textRowLong">
                科别:</td>
            <td class="textRowLong">
                <select class="selectBoxNoWidth"  name="dept_no" id="dept_no">
                  <?php prtdept(""); ?>
                </select>
            </td>
        </tr>
        <tr>
          <td class="textRowLong"> 医师:</td>
          <td class="textRowLong">
            <select class="selectBoxNoWidth"  name="doc_no" id="doc_no">

            </select>
            </td>
            </tr>
            <tr>
            <td class="textRowLong">
                诊间: </td>
                <td class="textRowLong">
            <input type="text" class="textboxReadOnly"  name="room_no" id="room_no" readonly>
            <input type="hidden"  name="room_sno" id="room_sno" ></input>
            </td>
            </tr>

 

3, prtdept(“) php函数:

//部门
function prtdept($dept)
{
    $query = " SELECT DEPT_FILE.DEPT_NO,DEPT_FILE.S_NAME,DEPT_FILE.INS_DEPT FROM DEPT_FILE order by dept_no ";

    $stmt = ociparse(connected_resource(), $query);
    ociexecute($stmt,OCI_DEFAULT);
    $dept_nrows = OCIFetchStatement($stmt,$dept_rows);
    OCIFreeStatement($stmt);
    
   print '<option value=""></option>';
   for ($i = 0;$i < $dept_nrows;$i++)
   {
      if($dept == $dept_rows["S_NAME"][$i])
     $selected = "selected";
      else
     $selected = "";       
      print("<OPTION value=".$dept_rows["DEPT_NO"][$i]." ". $selected.">".$dept_rows["DEPT_NO"][$i]."  ".$dept_rows["S_NAME"][$i]."  ".$dept_rows["INS_DEPT"][$i]."</OPTION>\n"); 
   }
}
 

4,  changeDeptDocRoom.php:

 

 

 

 

 

<?php
$minpath = '/';
include_once  '../comm/common.inc';
include_once $minpath . 'reg020view.inc';


if ($_POST["type"] == "doc"){
    listDoctor($_POST["dept_no"]);
}else if ($_POST["type"] == "room")
{
    getRoom($_POST["doc_no"]);
}
//根据科别获取医师列表
function listDoctor($deptno)
{    
    $sql = "select distinct opd_sched.doc_no,doc_file.doc_name,dept_no1,dept_no2,dept_no3 from opd_sched,doc_file
                where opd_sched.doc_no=doc_file.doc_no 
                and opd_sched.rec_status = 'A'  and opd_sched.orgid='$_SESSION[coid]' and opd_sched.orgid=doc_file.orgid 
                and to_date(OPD_DATE, 'yyyymmdd')=to_date('".$_POST[opd_date]."','dd/mm/yyyy')  
                and dept_no1='$deptno' 
                and opd_sched.time_shift = '".$_POST["time_shift"]."'";
    $stmt = ociparse(connected_resource(), $sql);
    ociexecute($stmt,OCI_DEFAULT);
    $doctor_nrows = OCIFetchStatement($stmt,$doctor_rows);
    OCIFreeStatement($stmt);
    $json = "[";
    if($doctor_nrows !=0){
        for($i = 0;$i < $doctor_nrows;$i++){
            $json .= "{no:\"{$doctor_rows['DOC_NO'][$i]}\",name:\"{$doctor_rows['DOC_NAME'][$i]}\"},";
        }
        $json = substr($json,0,strlen($json)-1);    
    }
   $json .= "]";
   print $json;

}
//根据获取诊室列表
function getRoom($docno)
{    
    
    $v_date=date("ymd");
    $query ="SELECT ROOM_NO,
    (SELECT DESC_1 FROM CODE_DTL T WHERE T.ITEM_CODE=ROOM_NO AND T.ITEM_TYPE='0114' and orgid='$_SESSION[coid]' ) ROOM_NAME 
    FROM OPD_SCHED 
    WHERE opd_sched.rec_status = 'A'  and opd_sched.orgid='$_SESSION[coid]' 
     and to_date(OPD_DATE, 'yyyymmdd')=to_date('".$_POST[opd_date]."','dd/mm/yyyy')  
     AND DEPT_NO1='$_POST[dept_no]' and doc_no='$docno'
     and opd_sched.time_shift = '".$_POST["time_shift"]."'"; 
    
    $stmt = ociparse(connected_resource(), $query);
    ociexecute($stmt,OCI_DEFAULT);
    $room_nrows = OCIFetchStatement($stmt,$room_rows);
    OCIFreeStatement($stmt);
    
    $json = "[";
 
        for($i = 0;$i < $room_nrows;$i++){
            $json .= "{no:\"{$room_rows['ROOM_NO'][$i]}\",name:\"{$room_rows['ROOM_NAME'][$i]}\"},";
        }
        $json = substr($json,0,strlen($json)-1);    
 
   $json .= "]";
   print $json;
    }

acquire_resource();
?>
posted @ 2010-06-25 11:31  李济宏(Amadeus)  阅读(224)  评论(0编辑  收藏  举报