2013-03-03 118 views
0

我在將從動態下拉列表中選擇的變量傳遞給PHP文件時遇到問題。我希望PHP選擇與變量匹配的數據庫表中的所有行。這裏是到目前爲止的代碼:將AJAX變量傳遞給PHP並在從動態下拉列表中選擇後顯示MySQL結果

select.php


<html> 
<head> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
     $("select#type").attr("disabled","disabled"); 
     $("select#category").change(function(){ 
     $("select#type").attr("disabled","disabled"); 
     $("select#type").html("<option>wait...</option>");   var id = $("select#category option:selected").attr('value'); 
     $.post("select_type.php", {id:id}, function(data){ 
      $("select#type").removeAttr("disabled"); 
      $("select#type").html(data); 
     }); 
    }); 
    $("form#select_form").submit(function(){ 
     var cat = $("select#category option:selected").attr('value'); 
     var type = $("select#type option:selected").attr('value'); 

     if(cat>0 && type>0) 
     { 
      var result = $("select#type option:selected").html(); 
      $("#result").html('your choice: '+result); 

      $.ajax({ 
      type: 'POST', 
      url: 'display.php', 
      data: {'result': myval}, 
      }); 



     } 
     else 
     { 
      $("#result").html("you must choose two options!"); 
     } 
     return false; 
    }); 
}); 
</script> 
</head> 
<body> 
    <?php include "select.class.php"; ?> 
    <form id="select_form"> 
     Choose a category:<br /> 
     <select id="category"> 
      <?php echo $opt->ShowCategory(); ?> 
     </select> 
    <br /><br /> 
    Choose a type:<br /> 
    <select id="type"> 
     <option value="0">choose...</option> 
    </select> 
    <br /><br /> 
    <input type="submit" value="confirm" /> 
    </form> 
    <div id="result"></div> 
    <?php include "display.php"; ?> 

    <div id="result2"></div>   
</body> 
</html> 

select.class.php


<?php 
class SelectList 
{ 
protected $conn; 

    public function __construct() 
    { 
     $this->DbConnect(); 
    } 

    protected function DbConnect() 
    { 
     include "db_config.php"; 
     $this->conn = mysql_connect($host,$user,$password) OR die("Unable to connect  to the database"); 
     mysql_select_db($db,$this->conn) OR die("can not select the database $db"); 
     return TRUE; 
    } 

    public function ShowCategory() 
    { 
     $sql = "SELECT * FROM profession"; 
     $res = mysql_query($sql,$this->conn); 
     $category = '<option value="0">choose...</option>'; 
     while($row = mysql_fetch_array($res)) 
     { 
      $category .= '<option value="' . $row['id_cat'] . '">' . $row['prof_name'] . '</option>'; 
     } 
     return $category; 
    } 

    public function ShowType() 
    { 
     $sql = "SELECT * FROM specialties WHERE id_cat=$_POST[id]"; 
     $res = mysql_query($sql,$this->conn); 
     $type = '<option value="0">choose...</option>'; 
     while($row = mysql_fetch_array($res)) 
     { 
      $type .= '<option value="' . $row['id_type'] . '">' . $row['sp_name'] . '</option>'; 
     } 
     return $type; 
    } 



} 

$opt = new SelectList(); 
?> 

這裏就是我想通過變量Display.php的至。這個文件將從db中選擇條件,然後在select.php中打印結果。

<?php 


class DisplayResults 
{ 
protected $conn; 

    public function __construct() 
    { 
     $this->DbConnect(); 
    } 

    protected function DbConnect() 
    { 
     include "db_config.php"; 
     $this->conn = mysql_connect($host,$user,$password) OR die("Unable to connect to the database"); 
     mysql_select_db($db,$this->conn) OR die("can not select the database $db"); 
     return TRUE; 
    } 

    public function ShowResults() 

    { 

     $myval = $_POST['result']; 
     $sql = "SELECT * FROM specialities WHERE 'myval'=sp_name"; 
     $res = mysql_query($sql,$this->conn); 
      echo "<table border='1'>"; 
      echo "<tr><th>id</th><th>Code</th></tr>"; 
     while($row = mysql_fetch_array($res)) 
     { 

      while($row = mysql_fetch_array($result)){ 
      echo "<tr><td>"; 
      echo $row['sp_name']; 
      echo "</td><td>"; 
      echo $row['sp_code']; 
      echo "</td></tr>"; 
     } 
      echo "</table>"; 
     //} 
     } 
     return $category; 
    } 

} 

$res = new DisplayResults(); 
?> 

我真的很感謝任何幫助。請讓我知道,如果我可以提供更多的細節。

鏈接到分貝圖:http://imgur.com/YZ0SuVw

第一下拉從行業表繪製,第二從特色表。我想要做的是顯示作業表中與下拉框中選擇的專業相匹配的所有行。這將要求將下拉列表中的變量(結果)的結果轉換爲作業表中的spec_code。不確定如何做到這一點。謝謝!

回答

0

我只是想勾勒出關於下面的代碼塊中的一些要點:

  1. 你在哪裏定義設爲myVal
  2. 數據:{'result': myval}:結果不需要任何配額將其更改爲數據:{result: myval}
  3. 爲什麼你需要從選定的選項獲取HTML?這是更好地改變

$("select#type option:selected").html();

發送選項值

$("select#type option:selected").val();

if(cat>0 && type>0) 
{ 
    var result = $("select#type option:selected").html(); 
    $("#result").html('your choice: '+result); 

    $.ajax({ 
    type: 'POST', 
    url: 'display.php', 
    data: {'result': myval}, 
    }); 
}