Ir para conteúdo

POWERED BY:

Arquivado

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

Evandro Domingues

Montar URL com variáveis

Recommended Posts

:huh:

Eu tenho uma página, index.asp.

Ela inicial com a seleção total dos registros.

Eu tenho um combo onde faço a filtragem dos generos então a url passa a ser index.asp?f=genero

Eu posso também alterar a ordenação dos registros, selecionando no combobox... então a url ficaria index.asp?o=ordem.

Mas como faço, caso a url já esteja com a variável f, para incluir no final a variável o, então ficaria assim

index.asp?f=genero&o=ordem ou index.asp?o=ordem&f=genero

 

vou postar o código de teste para melhor entender.

 

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<%
var MM_catalogo_STRING = "dsn=catalogo;"
%>
<%
var rsFilmes__MMColParam1 = String(Request.QueryString("f"));
var rsFilmes__MMColParam2 = String(Request.QueryString("o"));
var rsFilmes_cmd = Server.CreateObject ("ADODB.Command");
rsFilmes_cmd.ActiveConnection = MM_catalogo_STRING;
rsFilmes_cmd.CommandText = "SELECT ID, COD, NOME, GENERO FROM FILMES";
if ((rsFilmes__MMColParam1 != "") && (rsFilmes__MMColParam1 != "undefined")) {
 rsFilmes_cmd.CommandText = rsFilmes_cmd.CommandText + " WHERE GENERO = ?";
}
rsFilmes_cmd.CommandText = rsFilmes_cmd.CommandText + " ORDER BY";
if ((rsFilmes__MMColParam2 = "") && (rsFilmes__MMColParam2 = "undefined")) {
 rsFilmes_cmd.CommandText = rsFilmes_cmd.CommandText + " NOME ASC";
} else {
 if (rsFilmes__MMColParam2 = "0") {
   rsFilmes_cmd.CommandText = rsFilmes_cmd.CommandText + " NOME ASC";
 } else {
   if (rsFilmes__MMColParam2 = "1") {
     rsFilmes_cmd.CommandText = rsFilmes_cmd.CommandText + " COD ASC";
   }
 }
}
rsFilmes_cmd.Prepared = true;
if (rsFilmes__MMColParam1 != "" && rsFilmes__MMColParam1 != "undefined") {
 rsFilmes_cmd.Parameters.Append(rsFilmes_cmd.CreateParameter("param1", 5, 1, -1, rsFilmes__MMColParam1));
}
var rsFilmes = rsFilmes_cmd.Execute();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
 function filtragenero(filtro) {
   if (window.XMLHttpRequest) {
     xmlhttp=new XMLHttpRequest();
   } else {
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
   xmlhttp.onreadystatechange=function() {
     if (xmlhttp.readyState==4 && xmlhttp.status==200) {
       document.getElementById("tudo").innerHTML=xmlhttp.responseText;
     }
   }
   if (filtro == "") {
     xmlhttp.open("GET","index.asp",true);
     xmlhttp.send();
   } else {
     if (filtro == "99") {
       xmlhttp.open("GET","index.asp",true);
       xmlhttp.send();
     } else {
       xmlhttp.open("GET","index.asp?f="+filtro,true);
       xmlhttp.send();
     }
   }
 }
 function ordenaresultado(ordem) {
   if (window.XMLHttpRequest) {
     xmlhttp=new XMLHttpRequest();
   } else {
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
   xmlhttp.onreadystatechange=function() {
     if (xmlhttp.readyState==4 && xmlhttp.status==200) {
       document.getElementById("tudo").innerHTML=xmlhttp.responseText;
     }
   }
   if (ordem == "") {
     xmlhttp.open("GET","index.asp",true);
     xmlhttp.send();
   } else {
     if (ordem == "0") {
       xmlhttp.open("GET","index.asp",true);
       xmlhttp.send();
     } else {
       xmlhttp.open("GET","index.asp?o="+ordem,true);
       xmlhttp.send();
     }
   }
 }
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>.:: Catálogo On-Line ::.</title>
<script language="javascript" src="js/ajax.js"></script>
</head>
<body>
<div id="tudo">
 <div id="ferramentas">
   <table width="100%" border="0" cellpadding="0" cellspacing="0" id="tbl_ferramentas">
     <tr>
       <form action="index.asp" method="get" name="frm_ferramentas" target="_self" id="frm_ferramentas">
         <td width="11%">Filtragem</td>
         <td width="39%">
           <label>
             <select name="slt_filtragem" id="slt_filtragem" onchange="filtragenero(this.options[this.selectedIndex].value);">
               <option value="" selected="selected" > </option>
               <option value="99">Todos</option>
               <option value="0" >Não Classificados</option>
               <option value="1" >Ação</option>
               <option value="2" >Animação</option>
               <option value="3" >Aventura</option>
               <option value="4" >Bíblico/Religião</option>
               <option value="5" >Comédia</option>
               <option value="6" >Documentário</option>
               <option value="7" >Drama</option>
               <option value="8" >Épico</option>
               <option value="9" >Faroeste</option>
               <option value="10">Ficção</option>
               <option value="11">Guerra</option>
               <option value="12">Musical</option>
               <option value="13">Policial</option>
               <option value="14">Romance</option>
               <option value="15">Show</option>
               <option value="16">Suspense</option>
               <option value="17">Telenovela</option>
               <option value="18">Terror</option>
             </select>
           </label>
         </td>
         <td width="12%">Ordenação</td>
         <td width="38%">
           <label>
             <select name="slt_ordenacao" id="slt_ordenacao" onchange="ordenaresultado(this.options[this.selectedIndex].value);">
               <option value="" selected="selected" > </option>
               <option value="0" >Ordem Alfabética</option>
               <option value="1" >Código</option>
             </select>
           </label>
         </td>
       </form>
     </tr>
   </table>
 </div>
 <div id="mainContent">
   <h1 align="left">Filmes...</h1>
   <% if (rsFilmes.EOF && rsFilmes.BOF) { %>
     <div align="left">
       <table width="100%" border="0" align="center" cellpadding="2" cellspacing="2" bordercolor="#FFFFFF" bgcolor="#FFFFFF">
         <tr>
           <td>
             <div align="center">
               <h2>Nenhum Título Encontrado!!!</h2>
             </div>
           </td>
         </tr>
       </table>
     </div>
   <% } %>
   <% if (!rsFilmes.EOF || !rsFilmes.BOF) { %>
     <% while (!rsFilmes.EOF) {%>
       <p><%=(rsFilmes.Fields.Item("COD").Value)%>   -   <%=(rsFilmes.Fields.Item("NOME").Value)%></p>
     <% rsFilmes.MoveNext(); } %>
   <% } %>
 </div>
 <div id="footer">
 </div>
</div>
</body>
</html>
<%
rsFilmes.Close();
%>

 

A minha dificuldade está nas funções:

filtragenero(filtro)

ordenaresultado(ordem)

Espero que tenham entendido e possam me ajudar.

 

Vlw. :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só, melhor você usar o ASP mesmo, pegar a querystring atual e jogar nas proximas variáveis!

 

Se preferir posso te mandar para o fórum de ASP

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só, melhor você usar o ASP mesmo, pegar a querystring atual e jogar nas proximas variáveis!

 

Se preferir posso te mandar para o fórum de ASP

 

Ok... vlw mesmo a ajuda Ted.

Eu estou é precisando disso, uma luz pra saber pelo menos que caminho tomar.

Pode me transferir pra ASP sim.

 

O importante é que preciso desta solução.

 

Vlw msm. Obrigado.

 

:joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma vez montada a url, a pagina destino precisará recuperar os valores existentes nas variaveis passadas na url.

Para isso, usamos o Request.Querystring:

filtro=Request.Querystring("f")

 

Podemos também usar o Response.Querystring

Response.Querystring("f")

 

Numa clausula sql, podemos usar assim:

sql="Select * from tabela where campo ='"&filtro&"'"

 

Pode fazer assim também:

filtro=Resquest.Querystring("f")
if filtro="" then
sql="select * from tabela"
else
sql="select * from tabela where campo='"&filtro&"'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma vez montada a url, a pagina destino precisará recuperar os valores existentes nas variaveis passadas na url.

Para isso, usamos o Request.Querystring:

filtro=Request.Querystring("f")

Podemos também usar o Response.Querystring

Response.Querystring("f")

Numa clausula sql, podemos usar assim:

sql="Select * from tabela where campo ='"&filtro&"'"

Pode fazer assim também:

filtro=Resquest.Querystring("f")
if filtro="" then
sql="select * from tabela"
else
sql="select * from tabela where campo='"&filtro&"'"

 

Grande Vinicius...

entendi o que disse, mas minha dúvida ainda é:

como monto a linha da url, sem perder os valores que já havia montado antes ?

veja... esta parte de recuperar os valores e parametrizar o sql já estou fazendo:

 

<%
var rsFilmes__MMColParam1 = String(Request.QueryString("f"));
var rsFilmes__MMColParam2 = String(Request.QueryString("o"));
var rsFilmes_cmd = Server.CreateObject ("ADODB.Command");
rsFilmes_cmd.ActiveConnection = MM_catalogo_STRING;
rsFilmes_cmd.CommandText = "SELECT ID, COD, NOME, GENERO FROM FILMES";
if ((rsFilmes__MMColParam1 != "") && (rsFilmes__MMColParam1 != "undefined")) {
 rsFilmes_cmd.CommandText = rsFilmes_cmd.CommandText + " WHERE GENERO = ?";
}
rsFilmes_cmd.CommandText = rsFilmes_cmd.CommandText + " ORDER BY";
if ((rsFilmes__MMColParam2 = "") && (rsFilmes__MMColParam2 = "undefined")) {
 rsFilmes_cmd.CommandText = rsFilmes_cmd.CommandText + " NOME ASC";
} else {
 if (rsFilmes__MMColParam2 = "0") {
   rsFilmes_cmd.CommandText = rsFilmes_cmd.CommandText + " NOME ASC";
 } else {
   if (rsFilmes__MMColParam2 = "1") {
     rsFilmes_cmd.CommandText = rsFilmes_cmd.CommandText + " COD ASC";
   }
 }
}
rsFilmes_cmd.Prepared = true;
if (rsFilmes__MMColParam1 != "" && rsFilmes__MMColParam1 != "undefined") {
 rsFilmes_cmd.Parameters.Append(rsFilmes_cmd.CreateParameter("param1", 5, 1, -1, rsFilmes__MMColParam1));
}
var rsFilmes = rsFilmes_cmd.Execute();
%>

 

Até aqui, tudo certo e funcionando corretamente. :clap:

 

Aí fica a dúvida e dificuldade na tag select do html... onde no onchange eu passo o valor para montar a url. :ermm:

 

neste ponto:

        <form action="index.asp" method="get" name="frm_ferramentas" target="_self" id="frm_ferramentas">
         <td width="11%">Filtragem</td>
         <td width="39%">
           <label>
             <select name="slt_filtragem" id="slt_filtragem" onchange="filtragenero(this.options[this.selectedIndex].value);">
               <option value="" selected="selected" > </option>
               <option value="99">Todos</option>
               <option value="0" >Não Classificados</option>
               <option value="1" >Ação</option>
               <option value="2" >Animação</option>
               <option value="3" >Aventura</option>
               <option value="4" >Bíblico/Religião</option>
               <option value="5" >Comédia</option>
               <option value="6" >Documentário</option>
               <option value="7" >Drama</option>
               <option value="8" >Épico</option>
               <option value="9" >Faroeste</option>
               <option value="10">Ficção</option>
               <option value="11">Guerra</option>
               <option value="12">Musical</option>
               <option value="13">Policial</option>
               <option value="14">Romance</option>
               <option value="15">Show</option>
               <option value="16">Suspense</option>
               <option value="17">Telenovela</option>
               <option value="18">Terror</option>
             </select>
           </label>
         </td>
         <td width="12%">Ordenação</td>
         <td width="38%">
           <label>
             <select name="slt_ordenacao" id="slt_ordenacao" onchange="ordenaresultado(this.options[this.selectedIndex].value);">
               <option value="" selected="selected" > </option>
               <option value="0" >Ordem Alfabética</option>
               <option value="1" >Código</option>
             </select>
           </label>
         </td>
       </form>

 

Ou seja, a página inicia com index.asp.

Quando seleciono um valor para filtragem no "select 1", ele passa o valor para a "variável f" e eu monto a url assim:

index.asp?f=valor

Então se seleciono um valor para ordenacao no "select 2", ele passa o valor para a "variável o" e eu monto a url assim:

index.asp?o=valor

Só que se eu quero utilizar a filtragem e ordenação juntas onde a url passaria a ser:

index.asp?f=valor&o=valor ou index.asp?o=valor&f=valor

:huh:

não estou conseguindo pois quando utilizo a ordenacao, eu perco o filtro e quando utilizo a filtragem eu perco a ordem.

Entendeu ? ou vejo todo o recordset ordenado ou vejo o recordset filtrado porém sem ordem... ou melhor a ordem física dos registros no bd.

 

Não estou conseguindo fazer isto.

 

Vlw.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tanto numa opção como na outra, faz um if comparando o valor da variavel (f ou o), se estiverem vazias, não acrescenta isso na url, e se tiverem algum valor, acrescenta na variavel.

Porque como está, ele não verifica a existencia da outra variavel na composição da url, por isso que não está combinando na mesma url as duas variaveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

existe uma função que coloquei no lab. de script, onde você pode concatenar e recuperar valores de uma url, faça uma pesquisa, pode te ajudar também...

até mais amigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tanto numa opção como na outra, faz um if comparando o valor da variavel (f ou o), se estiverem vazias, não acrescenta isso na url, e se tiverem algum valor, acrescenta na variavel.

Porque como está, ele não verifica a existencia da outra variavel na composição da url, por isso que não está combinando na mesma url as duas variaveis.

 

Opa... legal pela atenção.

Isso mesmo. Pensei mesmo em fazer esta checagem, e até tentei de algumas formas, apesar de ter um conhecimento bem rudimentar do que estou fazendo.

O que acontece é que não estou conseguindo. :(

Estou tentando de diversas formas, mas não consigo chegar à uma solução.

;) Pode me dar uma dica, ou um exemplo de como faria isto ?

Vlw companheiro.

 

existe uma função que coloquei no lab. de script, onde você pode concatenar e recuperar valores de uma url, faça uma pesquisa, pode te ajudar também...

até mais amigo

 

Ooopaaaa... Vlw msm companheiro. :joia:

Vou buscar, pesquisar, estudar e aprender sim.

 

Grande ajuda.

 

Obrigado. ^_^

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.