2011-07-23 50 views
0

我想问一下,有没有更好的方法来运行此代码。我有一个选择了#BA_customer的表单,当选择该表单时,它将使用所选客户端的地址填充第二个菜单。我还需要显示基于客户选择的部门下拉菜单。我认为我的代码导致了一个冲突,即客户在两个单独的语句中被传递两次。什么是正确的方法来做到这一点?非常感谢jQuery代码导致结果冲突

<script language="javascript" type="text/javascript"> 
      $(function() { 
       $("#BA_customer").live('change', function() { if ($(this).val()!="") 
       $.get("../../getOptions.php?BA_customer=" + $(this).val(), function(data) { 
       $("#BA_address").html(data); }); 
      }); 
      }); 
    </script> 
    <script language="javascript" type="text/javascript"> 
      $(function() { 
       $("#BA_customer").live('change', function() { if ($(this).val()!="") 
       $.get("../../getDept.php?BA_customer=" + $(this).val(), function(data) { 
       $("#BA_dept").html(data); }); 
      }); 
      }); 
    </script> 

+++++++ dept.php代码+++++++++++++++++++++

$customer = mysql_real_escape_string($_GET["BA_customer"]); // not used here, it's the customer choosen 

    $con = mysql_connect("localhost","root",""); 
    $db = "sample"; 
     if (!$con) 
     { 
     die('Could not connect: ' . mysql_error()); 
     } 

     mysql_select_db($db, $con); 
     $query_rs_select_dept = sprintf("SELECT * FROM departments where code = '$customer'"); 
     $rs_select_dept = mysql_query($query_rs_select_dept, $con) or die(mysql_error()); 
     $row_rs_select_dept = mysql_fetch_assoc($rs_select_dept); 
     $totalRows_rs_select_dept = mysql_num_rows($rs_select_dept); 



      echo '<label for="dept">Select a Department</label>'.'<select name="customerdept">'; 
      echo '<option value="">Select a Department</option>'; 
      while ($row_rs_select_dept = mysql_fetch_assoc($rs_select_dept)) 
      { 
      $dept=$row_rs_select_dept['name']; 
      echo '<option value="dept">'.$dept.'</option>'; 
      } 
      echo '</select>'; 

++ ++ SOLUTION +++++++++++++

mysql_select_db($db, $con); 
$query_rs_dept = sprintf("SELECT * FROM departments where code = '$customer'"); 
$rs_dept = mysql_query($query_rs_dept, $con) or die(mysql_error()); 
$totalRows_rs_dept = mysql_num_rows($rs_dept); 

echo '<label for="dept">Select a Department</label>'.'<select name="customerdept">'; 
echo '<option value="">Select a Department</option>'; 
while ($row_rs_dept = mysql_fetch_assoc($rs_dept)) 
{ 
     $dept=$row_rs_dept['name']; 
     echo '<option value="dept">'.$dept.'</option>'; 
} 
echo '</select>'; 

删除第一个$ row_rs_select_dept = mysql_fetch_assoc($ rs_select_dept);从脚本和它的作品。刚发布的解决方案,以防其他灵魂需要这样的问题的帮助。

+0

它是一个错字:'value =“dept”>'而不是'value =''。$ dept。'“'? – marc

+0

我试过了,但没有任何区别。此外,这个价值只是为了收集成功等,谢谢 – bollo

回答

1

也许你可以一起发送这两个请求?

$(function() { 
    $("#BA_customer").live('change', function() { 
     if($(this).val()!="") 
      $.get("../../getOptions.php?BA_customer=" + $(this).val(), function(data) { 
       $("#BA_address").html(data); 
      }); 
      $.get("../../getDept.php?BA_customer=" + $(this).val(), function(data) { 
       $("#BA_dept").html(data); 
      }); 
     }); 
}); 
+0

几乎奏效。但它只显示第二个字段。所以如果只有一个部门的客户,它不会显示。似乎错过了第一条记录。我将用php db结构更新我的问题,看看你是否能看到这些缺陷?谢谢 – bollo

+0

有趣的是,它显示地址栏好吗? – bollo

+0

谢谢marc。请在我原来的帖子中看到解决方案。但是你减少了我的javascript脚印:-) – bollo