2015-07-10 33 views
0

我正在做一些事情。所以,我去我的数据库,我想问他们想要什么类型的机器(基于现有的数据库) 然后,我会检查模型,根据类型。 最后,PALETS数经典的ASP下拉菜单,保留值

exampe: 机器1具有模型2,3和4 机2具有模型1,2和3 机1,模型2具有13个PALETS,机2模型2具有15个PALETS

我的代码: main.asp

<!DOCTYPE html> 
<html> 
    <head> 
     <link href="mystyle.css" rel="stylesheet" type="text/css"/> 
     <script src="javascript/jquery-1.11.3.min.js"></script> 
    </head> 

    <body> 
<!--Inicialization, ...--> 
     <% 
      dim model, typee, palete 
      typee="" 
      model="" 
      palete="" 
      dim perguntas(20) 

      Set conn = Server.CreateObject("ADODB.Connection") 
      Set conn2 = Server.CreateObject("ADODB.Connection") 
      conn_string = "Provider=sqloledb;Server=INF0148\SQLEXPRESS;Database=#####;Uid=####;Pwd=###########" 
      conn.commandTimeout = 60 
      conn.Open conn_string 
      Set rs = Server.CreateObject("ADODB.Recordset") 
      Set rs2 = Server.CreateObject("ADODB.Recordset") 
      function options(value, data, select_id) 
       Response.Write ("<option value=""" & value & """") 
       if request.form(select_id) = value then 
        Response.Write ("selected") 
       end if 
       Response.Write(">" & data & "</option>") 
      end function 

     %> 

     <div id="main"> 
<!--choose type of machine-->    
      <form method="post"> 
       <select name="maq" id="maq" onchange="this.form.submit()"> 
        <option value="">Type of Machine:</option> 
        <% 
         conn.close 
         conn.Open conn_string 
         rs.Open "SELECT DISTINCT Type FROM models", conn 
         do until rs.EOF 
          for each x in rs.Fields 
           options x.value, x.value, "maq" 
          next 
          rs.MoveNext 
         loop   
        %> 
       </select> 
      </form> 

      <%typee=Request.Form("maq")%> 


<!--Choose model-->    
      <form method="form"> 
       <select name="model" id="model" onchange="this.form.submit()"> 
        <option value="">Model:</option> 
        <% 
         conn.close 
         conn.Open conn_string 
         rs.Open "SELECT DISTINCT Model FROM models WHERE Type='"&typee&"'", conn 
         do until rs.EOF 
          for each x in rs.Fields 
           options x.value, x.value, "model" 
          next 
          rs.MoveNext 
         loop   
         model=Request.Form("model") 
        %> 
       </select> 
      </form> 

<!--Number of Palets-->    
      <form method="post"> 
       <% 
        conn.close 
        conn.Open conn_string     
        rs.Open "SELECT N_Palets FROM Models WHERE Type='"&typee&"' AND Model='"&model&"'", conn 
        dim temp 
        temp=0 
        do until rs.EOF 
         for each x in rs.Fields 
          if not IsNull(x.value) then 
           if temp=0 then 
            response.write("<select name=palets id=palets onchange=""this.form.submit()"";>") 
            response.write("<option value="">Number of Palets:</option>") 
            temp=1 
           end if 
           options x.value, x.value, "palets" 
          end if 
         next 
         rs.MoveNext 
        loop   
        paletes=Request.Form("palets")     
       %> 
      </form> 
     </div> 
    </body> 
</html> 

所以,当我选择的类型......它的确定,页面会显示正确的模型......当我选择的模式,页面重载我放松了一切。

你能帮我吗?

+1

您的代码容易受到SQL注入的影响 - 但我也建议将您的业务逻辑(数据库代码等)从您的HTML中移出,并尽可能在文件的顶部进行尽可能多的处理向客户发送任何东西,因为这样会让所有事情都更容易遵循。 – Dai

+0

我不明白,更容易遵循?而且,我如何减少HTML? –

回答

0

提交表单仅提交该表单上的字段,而不是其他表单上的任何其他字段。这就是为什么提交你的一个孩子形式失去了一切。要修复它,添加必要的父数据隐藏的字段。

<!--Choose model-->    
    <form method="post"> 
     <input type="hidden" name="maq" value="<%=Request.Form("maq")%>"> 
     <select name="model" id="model" onchange="this.form.submit()"> 
     [...] 
     </select> 
    </form> 

对于PALETS形式,同时添加机器&模型隐藏字段。

+0

除了Martha的回答外,还有一些观察结果...... 1)每次使用记录集后都不要关闭连接,2)删除对conn2的引用......您可以随意多次使用打开的连接,以及3 )使用后关闭您的记录集。希望这可以帮助。 – CLaFarge

+0

和我怎么能把这与第三下拉的工作? –

+0

@LuísMelo:就像我说的,对于第三种形式,您需要机器和模型的隐藏字段。 – Martha