Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

razs

Selects multiplus

Recommended Posts

Boas, tenho 4 selects que ao selecionar uma um vao dar um determinado formulario para preenchimento.

 

Fiz com selects e o primeiro funciona bem embora o segundo ja não se mexa.

 

Alguem pode dar uma vista de olhos/sugerir uma maneira melhor de fazer isto?

 

Obrigado

 

<script type="text/javascript">
function FormSubmit1(x) {
document.form1.action = x;
document.form1.submit();
return;
}
function FormSubmit2(x) {
document.form2.action = x;
document.form2.submit();
return;
}
function FormSubmit3(x) {
document.form3.action = x;
document.form3.submit();
return;
}
function FormSubmit4(x) {
document.form4.action = x;
document.form4.submit();
return;
}
</script>
<%
dim stud
dim exam
dim pat
dim visit
stud=request.querystring("stud")
exam=request.querystring("exam")
pat= request.querystring("pat")
visit= request.querystring("visit")





<%sqll="select * from usercenter where username LIKE '"&session("user")&"'"
rs2.open sqll,conn,1,3%>


<form name="form1" method="post">
<div class="field"><label>Study</label>
<select name="study" onChange="FormSubmit1('addfiles.asp?stud=<%=request.form("study")%>')">
<option value="<%= request.querystring("stud")%>"><%= request.querystring("stud")%></option>
<%While Not rs2.EOF%>
<option value="<%=rs2("nome_study")%>"><%= rs2("nome_study") %></option>
<%
rs2.MoveNext
Wend
%>
</form>
</select>



<%if request.querystring("stud")<>"" then%>
<form name="form2" method="post">
<div class="field"><label>Exam</label>
<select name="exam" onChange="FormSubmit2('addfiles.asp?stud=<%=request.querystring("stud")%>&exam=<%= request.form("exam")%>')">
<option value="<%= request.querystring("exam")%>"><%= request.querystring("exam")%></option>
<%if rs.fields("checkcfp")="checked" then %><option value="checkcfp">Colour Fundus Photography</option><%end if%>
<%if rs.fields("checkfa")="checked" then%><option value="checkfa">Fluorescense Angio.</option><%end if%>
<%if rs.fields("checkoct")="checked" then %><option value="checkoct">OCT</option><%end if%>
<%if rs.fields("checkmferg")="checked" then %><option value="checkmferg">MFERG</option><%end if%>
</select>
</form>
<%rs2.Close
end if%>



<%if request.querystring("exam")<>"" then%>
<%sqlll="select * from patient where study LIKE '"&stud&"'"
rs3.open sqlll,conn,1,3%>

<form name="form3" method="post">
<div class="field"><label>Patient</label>
<select name="patient" onChange="FormSubmit3('addfiles.asp?stud=<%=request.querystring("stud")%>&exam=<%= request.querystring("exam")%>&pat=<%= request.form("patient")%>')">
<option value="<%= request.querystring("pat")%>"><%= request.querystring("pat")%></option>
<%While Not rs3.EOF%>
<option value="<%=rs3("P_Init")%>"><%= rs3("P_Init") %></option>
<%
rs3.MoveNext
Wend
%>
</select>
</form>
<%end if%>



<%if request.querystring("pat")<>"" then%>
<form name="form4" method="post">
<div class="field"><label>Visit</label>
<select name="visit" onChange="FormSubmit4('addfiles.asp?stud=<%=request.querystring("stud")%>&exam=<%= request.querystring("exam")%>&pat=<%= request.querystring("patient")%>&visit=<%=request.form("visit")%>')">
<option value="<%= request.querystring("visit")%>"><%= request.querystring("visit")%></option>
<option value="v1">Visit 1 (Screening )</option>
<option value="v2">Visit 2 (Inclusion/Baseline)</option>
<option value="v8">Visit 8/10/12</option>
<option value="v14">Visit 14 (Month 24)</option>
<option value="uv_ev">Uncheduled Visit / Early Withdrawal </option>
</select>
</form>
<%end if%>
<br><br>



<%if request.querystring("visit")<>"" then%>
<div class="checkcolumn">
<%If request.querystring("visit")="v1" or request.querystring("visit")="v14" or request.querystring("visit")="uv_ev" then%>
<div class="field"><label>CFP-7 fields</label><input type="checkbox" name="checkbox" value="cfp7" name=""></div>
<%end if
if request.querystring("visit")="v1" or request.querystring("visit")="v14" or request.querystring("visit")="uv_ev" or request.querystring("visit")="v8" then%>
<div class="field"><label>CFP–50º F1M&F2 </label><input type="checkbox" name="checkbox" value="cfp50"></div>
<%end if
if request.querystring("visit")="v2" or request.querystring("visit")="v8" or request.querystring("visit")="v14" or request.querystring("visit")="uv_ev" then%>
<div class="field"><label>OCT</label><input type="checkbox" name="checkbox" value="oct"></div>
<div class="field"><label>mfERG</label><input type="checkbox" name="checkbox" value="mferg"></div>
<%end if
%></div><%
end if%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma procurada no lab. de script que postei dois modos, um usando normal, que após ser seleciondo ele preenche o próximo e outro com AJAX, vai te ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

em AJAX

 

 

Default.asp

 
<html>  
<head>  
<title>Teste Combo</title>  
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />  
<script language="javascript" src="ajax.js"></script>  
</head>  
<body>  
Categoria:  
<select name="categoria" onchange="alimentarCombo(this.value);">  
   <option value="">[ Selecione ]</option>  
    <%  
    set rs = conn.execute("SELECT codigo, nome FROM categoria ORDER BY nome ASC")  
       if (not rs.eof) then  
            while (not rs.eof)  
                response.write("<option value="""&rs("codigo")&""">"&rs("nome")&"</option>")  
         rs.moveNext : wend  
       end if  
    set rs = nothing  
   %>  
</select>  
<br>  
Sub-Categoria: <div id="resultado"></div>  
</body>  
</html>  

 

ajax.js

    function GetXMLHttp() {  
     if (navigator.appName == "Microsoft Internet Explorer") {  
         xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  
     } else {  
         xmlHttp = new XMLHttpRequest();  
   }  
     return xmlHttp;  
}  
 var mod = GetXMLHttp();  

function alimentarCombo(valor) {  
     mod.open("GET", "Carrega.ajax.asp?id="+valor+"", true);  
     mod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
     mod.onreadystatechange = function() {  
         if (mod.readyState == 4) {  
             document.getElementById("resultado").innerHTML = mod.responseText;  
         }  
    };  
    mod.send(null);  
 }  

 

Carrega.ajax.asp

   <select name="sub_categoria">  
   <option value="">[ Selecione ]</option>  
    <%  
    set rs = conn.execute("SELECT codigo, nome FROM sub_categoria WHERE categoria_id = '"&request.queryString("id")&"'")  
        if (not rs.eof) then  
            while (not rs.eof)  
                response.write("<option value="""&rs("codigo")&""">"&rs("nome")&"</option>")  
            rs.moveNext :wend           end if  
    set rs = nothing  
    %>  
</select>  

 

outro exemplo

 

O codigo abaixo atualiza um segundo combo baseado na escolha do primeiro acessando o banco de dados sem dar refresh na página.Com uma estrutura de dados com duas tabelas:

tb_lanc_categ com os campos:

cod - Numeração Automática

categoria - Texto

 

e a tabela, tb_lanc_sub, com os campos:

cod_tipo - Numeração Automática

codcat - Número

desclanc - Texto

 

Arquivo index.asp

 

<% Response.Charset="ISO-8859-1" 'linha responsavel pela acentuação%>
<HTML>
<HEAD>
<TITLE>.:: Combos com AJAX ::.</TITLE>
<META NAME="Author" CONTENT="Wellington Marinheiro">
<script src="lanc_ComboAjax.js"> </script>
</HEAD>
<BODY>
<%  
if request.queryString("at")= "" then

   db = Server.MapPath("dados.mdb")
   Set cnn = Server.CreateObject("adodb.Connection")
   cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& db &";"

   SQL="SELECT * FROM tb_Lanc_categ ORDER by categoria"
   SET rs = Server.CreateObject("Adodb.recordset")
   rs.Open SQL,cnn
   if not rs.eof then
       lista = rs.getrows()
       total = ubound(lista,2)
   end if
   rs.close
   set rs = nothing
   %>
   <CENTER>
   Utilizando AJAX para atualizar um COMBOBOX
   <hr>
   <form name="form" action="index.asp?at=1" method="post">
       <table border="1" bgcolor=#F4F4F4 width=40% align="center">
           <tr>
               <td><B>Categoria</B>
               <td>
                   <select name="categoria" class="select"  Onchange="atualizaLanc(this.value);">
                       <option value="">selecionar...

                       <%
                       for t=0 to total
                           response.write "<option value=" & lista(0,t) & "|" & lista(1,t) &">" & lista(1,t) & "</option>"
                       next%>
                   </select>
               <tr>
                   <td><B>Lançamento:</B>
                   <td>
                       <div id="lanc">
                           <select name="Lancamento">
                               <option value="">Selecionar categoria</option>
                           </select>
                       </div>
               <tr>
                   <td colspan="2" align="center">
                   <INPUT TYPE="submit" value="Enviar">
               </tr>
           </table>
       </form>
   </CENTER>
<%
else
       response.write "<div align=center><B>Resultado:</B><BR>"
       response.write "Categoria selecionada: " & request.Form("nomecat") & "<BR>"
       response.write "Lançamento: " & request.Form("lancamento") & "<BR><BR>"
       response.write "<A HREF='index.asp'>Nova escolha</A>"
       response.write "</div>"
end If
%>

</body>
</html>

 

Arquivo lanclista.asp

 

<% Response.Charset="ISO-8859-1" 'linha responsavel pela acentuação

db = Server.MapPath("dados.mdb")
Set cnn = Server.CreateObject("adodb.Connection")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& db &";"

texto=Split(Request("ID"),"|")
cat = texto(0)

Set rs = Server.CreateObject("ADODB.Recordset")
sql = " Select * from tb_lanc_sub where codcat = " & cat & " order by desclanc"
rs.Open sql,cnn,3
%>
<select name="lancamento">
   <option value="">Selecionar categoria</option>
   <% while not rs.eof %>
           <option value="<%=rs("desclanc")%>"><%=rs("desclanc")%></option>
   <%        rs.MoveNext
   Wend%>
</select>
   <INPUT TYPE="hidden" NAME="nomecat" value="<%=texto(1)%>">
<%
rs.Close
Set rs = Nothing
%>

 

Arquivo lanc_comboajax.js

 

var requip;
function loadXMLDoc(url){
   requip = null;
   if (window.XMLHttpRequest) {
       requip= new XMLHttpRequest();
       requip.onreadystatechange = ProcessEquip; // o req.  foi alterado para requip
       requip.open("POST", url, true); // o req.  foi alterado para requip
       requip.send(null); // o req.  foi alterado para requip

   } else if (window.ActiveXObject) {
       try {
           requip= new ActiveXObject("Msxml2.XMLHTTP.4.0");
       } catch(e) {
           try {
               requip= new ActiveXObject("Msxml2.XMLHTTP.3.0");
           } catch(e) {
               try {
                   requip= new ActiveXObject("Msxml2.XMLHTTP");
               } catch(e) {
                   try {
                       requip= new ActiveXObject("Microsoft.XMLHTTP");
                   } catch(e) {
                       requip= false;
                   }
               }
           }
       }
       if (requip) {
           requip.onreadystatechange = ProcessEquip;
           requip.open("POST", url, true);
           requip.send();
       }
   }
}


function ProcessEquip(){
   if (requip.readyState == 4) {
       if (requip.status == 200) {
           document.getElementById("lanc").innerHTML = requip.responseText;
       } else {
           alert("Houve um problema ao obter os dados:\n" + requip.statusText);
       }
   }
}
function atualizaLanc(valor){
   loadXMLDoc("lancListaComb.asp?ID="+valor);
}

 

este script faz o preenchimento de um combo e pega o valor do combo preenchido pra fazer o outro combo, tipo:

 

um combo pais e outro combo estado

 

as tabelas saun:

 

pais- com os campos

cod_pais - chave primária

nome

 

estado -c om os campos

cod_pais - chave estrangeira

cod_estado

nome

 

as tabelas possuem relacionamento de um para muitos

 

<% Option Explicit 

'declaro as var 
dim var1,var2,var3,....., etc 
'recupero as var 
varpais=request.querystring("pais") 
'crioa a conexao 
%> 

<!--# include file="conexao/conexao.asp"--> 

<% 
'abro a conexao 
Call abre_conexao 
'crio o rs 
set rspais=server.createobject("ADODB.Recordset") 
'crio a SQL 
SQLpais="SELECT * FROM pais ORDER BY nome" 
rspais.open SQLpais,conexao,1,3 
%>

 

 

'aki vou criar o combo, onde no evento onchange ele irá enviar o value do combo pais para a mesma pag, para eu recuperar o codigo do pais e assim preencher o combo estado.

<form action="inserirend_action.asp" method="post"name="frmteste"> 
<select name="pais" size="1" Onchange="window.navigate('pag_atual.asp?pais='+frmteste.pais.value)"> 

<% while not rspais.eof%> 
<option value="<%=rs("cod_pais")%>"> 
<% if varpais=rs("pais") then 
response.write("Selecionado") 
end if%> 
<%=rs("nome")%> 
</option> 
<% rspais.movenext 
wend%> 
</select> 
<% set rspais=nothing%> 

'aki crio o combo estado 

<select name="estado"size="1"> 
if request("pais") ="" then%> 
<option value=""> selecione um pais 
<%else 
'crio o SQL estado 
SQLestado="Select * from estado where cod_pais="&varpais&" Order by nome" 
'crio o rsestado 
set rsestado=server.createobject("ADODB.Recordset") 
rsestado.open SQLestado,conexao,1,3 
<%while not rsestado.eof%> 
<option value="<%=rsestado("cod_estado")%>"> 
<%=rs("nome")%> 
</option> 
<%rs.movenext 
wend 
end if%> 
</select> 
<% set rsestado=nothing%> 
<% 'fecho a conexao 
call fecha_conexao%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tanta coisa para uma coisa supostamente simples?

 

 

deste modo utilizando o submit da mesma pagina com as variaveis nao da??



<%sqll="select * from usercenter where username LIKE '"&session("user")&"'"
rs2.open sqll,conn,1,3%>
<form name="form1" method="post">
<div class="field"><label>Study</label>
<select name="study" onChange="FormSubmit1('addfiles.asp?stud=<%=request.form("study")%>')">
<option value="<%= request.querystring("stud")%>"><%= request.querystring("stud")%></option>
<%While Not rs2.EOF%>
<option value="<%=rs2("nome_study")%>"><%= rs2("nome_study") %></option>
<%
rs2.MoveNext
Wend
rs2.close
%>
</select>
</form>

<form name="form2" method="post">
<%sqlll="select * from patient where study LIKE '"&stud&"'"
rs3.open sqlll,conn,1,3%>
<div class="field"><label>Patient</label>
<select name="patient" >
<option value="<%= request.querystring("pat")%>"><%= request.querystring("pat")%></option>
<%While Not rs3.EOF%>
<option value="<%=rs3("P_Init")%>"><%= rs3("P_Init") %></option>
<%
rs3.MoveNext
Wend
rs3.close
%>
</select>




<div class="field"><label>Visit</label>
<select name="visit" onChange="FormSubmit2('addfiles.asp?stud=<%=request.form("study")%>&pat=<%= request.form("patient")%>&visit=<%=request.form("visit")%>')">
<option value="<%= request.querystring("visit")%>"><%= request.querystring("visit")%></option>
<option value="v1">Visit 1 (Screening )</option>
<option value="v2">Visit 2 (Inclusion/Baseline)</option>
<option value="v8">Visit 8/10/12</option>
<option value="v14">Visit 14 (Month 24)</option>
<option value="uv_ev">Uncheduled Visit / Early Withdrawal </option>
</select>
</form>
<br><br>
</div>



 

Consegui por tudo a funcionar, tenho é aquele problema que tenho noutra pagina, quando faço uma selecao ele devolve a var em branco, so quando faço a seleção pela segunda vez e que ele manda a var

Compartilhar este post


Link para o post
Compartilhar em outros sites

foram na verdade 3 exemplos....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa, tens razao :s

 

Nao percebi os outros mas o ultimo parece-me +/- o que eu fiz, o que irrita e que funciona mas obriga a selecionar duas vezes de resto faz tudo o que é pedido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.