Ir para conteúdo

POWERED BY:

Arquivado

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

elton73ssa

[Resolvido] Problema com valor do Combo

Recommended Posts

Olá pessoal,

 

Tenho a seguinte combo

 

<select  id="imovel" name="imovel" style="width:150" onchange="return dropdown(this)"> 
<option value="0">Selecione</option>
<%while not rs.EOF %>
<option value="<%Response.Write(rs("BAIRRO") )%>" <%'=selected%>><%Response.Write(rs("BAIRRO"))%></option>
<%rs.MoveNext
wend
%>
</select>

Eu quero justamente pegar o valor bairro desse combo para mostrar numa <table> todos os bairros cadastrados.

O problema é que quando o bairro tem uma palavra só (Ex.: Copacabana) funciona, mas quando tem duas ou mais vai tudo contatenado (Ex.: Jardim Armando vai como "JardimAmando") e isso dificulta minha busca.

 

O código da instrução SQL:

 

n_bairro = request("imovel")

sql = "SELECT autonum, nome, fantasia, endereco, municipio, estado, bairro, cep, ddd, telefone, site " _
& "FROM Cliente " _
& "WHERE Bairro LIKE '%" &n_bairro& "%' " _
& "ORDER BY nome;"

Alguma luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sempre tive problema com essa linha

 

<option value="<%Response.Write(rs("BAIRRO") )%>" <%'=selected%>><%Response.Write(rs("BAIRRO"))%></option>

tente fazer assim pra ver o resultado

 


<select  id="imovel" name="imovel" style="width:150" onchange="return dropdown(this)"> 
<option value="0">Selecione</option>
<%

while not rs.EOF 

BAIRRO = rs("BAIRRO")

%>
 <option value="<%=BAIRRO%>" <%'=selected%>><%=BAIRRO%></option>
<%rs.MoveNext
wend
%>
</select>


 

 

 

1. quando você exibe o cod fonte o valor do option esta com espaco, ou esta junto?

 

2. veja o seu js se nao tem um tratamento de espaço na funcao dropdown()

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

você nao tem nenhum Bairro Código que individualize cada bairro ?

 

Por que dae, no value do Option, você colocava o Bairro_Codigo e quando você fosse pegar a informação na outra página, você fazia um Select, pegando esse Bairro_Codigo, para pegar o Nome do Bairro

 

select bairro from bairros where bairro_codigo = " & Request.Form("bairro_codigo")

Compartilhar este post


Link para o post
Compartilhar em outros sites

sempre tive problema com essa linha

 

<option value="<%Response.Write(rs("BAIRRO") )%>" <%'=selected%>><%Response.Write(rs("BAIRRO"))%></option>

tente fazer assim pra ver o resultado

 


<select  id="imovel" name="imovel" style="width:150" onchange="return dropdown(this)"> 
<option value="0">Selecione</option>
<%

while not rs.EOF 

BAIRRO = rs("BAIRRO")

%>
 <option value="<%=BAIRRO%>" <%'=selected%>><%=BAIRRO%></option>
<%rs.MoveNext
wend
%>
</select>


 

 

 

1. quando você exibe o cod fonte o valor do option esta com espaco, ou esta junto?

 

2. veja o seu js se nao tem um tratamento de espaço na funcao dropdown()

 

[]s

 

 

Não foi... http://forum.imasters.com.br/public/style_emoticons/default/no.gif

 

1. Quando eu dou um response.write o resultado vem sem espaços.

 

2. Não sei dizer... eis a função:

 

function dropdown(imovel){ 
       
   
 var comboclienteX = createXMLHTTP();
               comboclienteX.open("post", "objcliente.asp", true);
               comboclienteX.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
               comboclienteX.onreadystatechange=function(){
if (comboclienteX.readyState==4){
document.all.exibe_cliente.innerHTML = comboclienteX.responseText;}}
                                   
comboclienteX.send("id_imovel=" + frm1.imovel.value + "&codcidade="+frm1.codcidade.value);

 }

 

Dee, essa é a tabela de Clientes cujos campos são:

 

Cod

Nome

Endereco

Bairro, etc

 

Não posso pegar pelo Cod pq senão vai me retornar apenas os detalhes daquele cliente. Preciso pegar pelo bairro pq tem mais de um cliente em cada bairro. Daí eu mostro com um while todos os clientes daquele bairro vindo do combo.

 

O problema, pelo que vejo, está justamente quando o bairro tem mais de uma palavra. O resultado vem tudo junto e o sql nao consegue localizar quando está tudo junto. Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ue, isso esta estranho

 

ele monta o option sem espaco mesmo sem haver replace???

 

cola o html montado do select que da problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

ue, isso esta estranho

 

ele monta o option sem espaco mesmo sem haver replace???

 

cola o html montado do select que da problema

 

 

Tedk's o replace não funcionou simplesmente pq não existem espaços em branco a serem substituidos. O valor do select, quando tem mais de uma palavra, retorna tudo junto, entendeu? Eu preciso que retorne exatamente como está cadastrado no banco, com os devidos espaços em branco.

 

 

Aqui está o codigo completo do combo.

 

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

<%

codestado = request("codestado")
codcidade = request("codcidade")

if len(codcidade) then

	filtro = " WHERE CIDADES.id_cidade = "&codcidade
else
	filtro = ""
end if


call abre_conectar



sql = "SELECT CIDADES.CIDADE, CIDADES.ID_CIDADE, CLIENTE.AUTONUM, CLIENTE.FANTASIA, CLIENTE.MUNICIPIO, CLIENTE.BAIRRO "
sql = sql & "FROM CIDADES INNER JOIN CLIENTE "
sql = sql & "ON CIDADES.CIDADE = CLIENTE.MUNICIPIO "
sql = sql & filtro & " ORDER BY CLIENTE.FANTASIA"

set rs = cnn.Execute(sql)




%>

<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td>

<select  id="imovel" name="imovel" style="width:150" onchange="return dropdown(this)"> 
<option value="0">Selecione</option>
<%while not rs.EOF 

BAIRRO = rs("BAIRRO")

%>
 <option value="<%=BAIRRO%>" <%'=selected%>><%=BAIRRO%></option>
<%rs.MoveNext
wend
%>
</select>

</td>
</tr>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha, peguei seu cod e mudei pela minha tabela e os espaços apareceram normais

 

<option value="Cabo Frio">Cabo Frio</option>

 

 

<option value="Paraty">Paraty</option>

 

 

 

 

 

mostre como esta o html sem espaço

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha, peguei seu cod e mudei pela minha tabela e os espaços apareceram normais

 

<option value="Cabo Frio">Cabo Frio</option>

 

 

<option value="Paraty">Paraty</option>

 

 

 

 

 

mostre como esta o html sem espaço

 

 

Não entendi o que você quer que eu mostre...

 

Vou começar do principio.

 

Tenho três combos. A combo1 puxa os estados direto do banco. A combo2 é preenchida via ajax de acordo com o valor da combo1. A combo3 é preenchida via ajax de acordo com o valor da combo2.

 

Por sua vez, de acordo com o valor que eu selecionar na combo3 um div é mostrado com os detalhes.

 

 

Aqui está o html direto da página na internet. Note que aparece normal, com os espaços:

<table border="0" cellpadding="0" cellspacing="0">
	<tbody><tr>
		<td>
<select id="imovel" name="imovel" style="width: 150px;" onchange="return dropdown(this)"> 
<option value="0">Selecione</option>

 <option value="PITUBA">PITUBA</option>

 <option value="PARALELA">PARALELA</option>

 <option value="CAMINHO DAS ARVORES">CAMINHO DAS ARVORES</option>

 <option value="BARRA">BARRA</option>

 <option value="BARRIS">BARRIS</option>

 <option value="BARRIS">BARRIS</option>

 <option value="ITAIGARA">ITAIGARA</option>

 <option value="CAMINHO DAS ARVORES">CAMINHO DAS ARVORES</option>

 <option value="BARRIS">BARRIS</option>

 <option value="PERNAMBUES">PERNAMBUES</option>

 <option value="BARRIS">BARRIS</option>

 <option value="PARQUE BELA VISTA">PARQUE BELA VISTA</option>

 <option value="PITUBA">PITUBA</option>

 <option value="NAZARE">NAZARE</option>

 <option value="ITAIGARA">ITAIGARA</option>

 <option value="CIDADE JARDIM">CIDADE JARDIM</option>

 <option value="SAO CRISTOVAO">SAO CRISTOVAO</option>

 <option value="BARRIS">BARRIS</option>

 <option value="CAMINHO DAS ARVORES">CAMINHO DAS ARVORES</option>

 <option value="ITAIGARA">ITAIGARA</option>

 <option value="PERO VAZ">PERO VAZ</option>

 <option value="FAZENDA GRANDE">FAZENDA GRANDE</option>

 <option value="BOCA DO RIO">BOCA DO RIO</option>

</select>
		</td>
	</tr>
</tbody></table>


 

E aqui está o código completo de onde vai aparecer os detalhes do valor selecionado no combo3(bairro):

 

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

<%


codestado = request("codestado")
codcidade = request("codcidade")
id_imovel = request("id_imovel")


call abre_conectar

sql = "SELECT autonum, nome, fantasia, endereco, municipio, estado, bairro, cep, ddd, telefone, site " _
		& "FROM Cliente " _
		& "WHERE Bairro LIKE '%" &id_imovel& "%' " _
		& "ORDER BY nome;"

set rs = cnn.Execute(sql)


%>
<%while not rs.EOF%>
<table width="294" border="0" cellspacing="0" cellpadding="0" class="tahoma_11_515151">
<tr>
<td width="55" height="15" align="right">
<strong>Loja:</strong></td>
<td width="7"> </td>
<td width="232"><%=server.HTMLEncode(rs("FANTASIA"))%></td>
</tr>
<tr>
<td height="15" align="right"><strong>Cidade:</strong></td>
 <td> </td>
<td><%Response.Write(rs("MUNICIPIO"))%></td>
</tr>
<tr>
 <td height="15" align="right"><strong>Bairro:</strong></td>
 <td> </td>
 <td><%Response.Write(rs("BAIRRO"))%></td>
 </tr>
</table>
<BR />
<%rs.MoveNext
end
call fecha_conectar
set rs = nothing	
%>

Não liguem para os nomes das variáveis; esqueci de mudar. http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

 

A variável id_imovel me retorna o valor do combo3, que nesse caso será um bairro da tabela clientes.

 

Se eu der um response.write logo abaixo de

id_imovel = request("id_imovel")
, se tiver selecionado CAMINHO DAS ARVORES, aparecerá CAMINHODASARVORES :angry:

 

Dessa forma minha instrução SQL vai dizer que não achou os clientes desse bairro, pq está tudo junto... Se o bairro tiver uma palavra só, traquilo.

 

Não faz sentido... Onde está wally? :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

pedi pra ver o html do option pra ver se o erro era na montagem do select... mas nao é

 

entao vamos por eliminação pra achar o erro

 

se você der im .write em id_imovel vai printar BairroSemEspaco, correto?

 

 

 

 

quando o usuario seleciona o combo, executa a funcao dropdown() que acessa a pagina acima

 

de um alert(id_imovel) no js pra ver como ele esta recebendo o texto - pra seber se o erro é na passagem do js

Compartilhar este post


Link para o post
Compartilhar em outros sites

pedi pra ver o html do option pra ver se o erro era na montagem do select... mas nao é

 

entao vamos por eliminação pra achar o erro

 

se você der im .write em id_imovel vai printar BairroSemEspaco, correto?

 

 

 

 

quando o usuario seleciona o combo, executa a funcao dropdown() que acessa a pagina acima

 

de um alert(id_imovel) no js pra ver como ele esta recebendo o texto - pra seber se o erro é na passagem do js

 

Eu dei um alert no js drowpdown e ele me retorna como eu quero, com espaços normais...alert puro não veio nada. Tive que criar a variavel primeiro.

 

var id_imovel = frm1.imovel.value;
alert(id_imovel);

Não acredito também que o erro esteja no arquivo ajax.js... Será?

 

function createXMLHTTP() 
	{
		var ajax;
		try 
		{
			ajax = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch(e) 
		{
			try 
			{
				ajax = new ActiveXObject("Msxml2.XMLHTTP");
				alert(ajax);
			}
			catch(ex) 
			{
				try 
				{
					ajax = new XMLHttpRequest();
				}
				catch(exc) 
				{
					 alert("Esse browser não tem recursos para uso do Ajax");
					 ajax = null;
				}
			}
			return ajax;
		}
	
	
		   var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
							    "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
							    "Microsoft.XMLHTTP"];
		   for (var i=0; i < arrSignatures.length; i++) 
		   {
				try 
				{
					var oRequest = new ActiveXObject(arrSignatures[i]);
					return oRequest;
				} 
				catch (oError) 
				{
			    }
		   }
		
			   throw new Error("MSXML is not installed on your system.");
	}

:wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

o seu select é imovel apenas?

 

e voce recupera id_imovel?

 

tem algum campo id_imovel? ou foi apenas erro de digitação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse seu codigo esta muito enrrolado

 

function dropdown(imovel){

você nao nao usa a var imovel da funcao

 

comboclienteX.send("id_imovel=" + frm1.imovel.value + "&codcidade="+frm1.codcidade.value);

 

 

 

melhora esse js pra nao correr risco de perder informação na passagem de valores

 

pq você nao usa jquery?

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse seu codigo esta muito enrrolado

 

function dropdown(imovel){

você nao nao usa a var imovel da funcao

 

comboclienteX.send("id_imovel=" + frm1.imovel.value + "&codcidade="+frm1.codcidade.value);

 

 

 

melhora esse js pra nao correr risco de perder informação na passagem de valores

 

pq você nao usa jquery?

 

Consegui resolver. Acho que não foi caso de nomes na função não usados. http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

 

Pesquisando na net achei uma função que funcionou; mas nao sei dizer porquê... :unsure:

 

Essa funcionou (retorna as palavras separadas) http://forum.imasters.com.br/public/style_emoticons/default/joia.gif :

var xmlHttp

function dropdown(imovel)
{

xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	{
		alert ("Este browser no suporta HTTP Request")
		return
	}

var url="objcliente.asp" // o arquivo que ir executar a SQL das lojas
url=url+"?id_imovel="+imovel // recebe o valor do bairro para filtrar as lojas
url=url+"&sidjs="+Math.random()
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}

/* Essa func ir exibir o resultado na DIV */
function stateChanged()
{ 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{ 
		document.getElementById("exibe_cliente").innerHTML=xmlHttp.responseText
	}
}

/* Instancia */
function GetXmlHttpObject()
{
var objXMLHttp=null

	if (window.XMLHttpRequest)
	{
		objXMLHttp=new XMLHttpRequest()
	}
	else if (window.ActiveXObject)
	{
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
	}
return objXMLHttp
}

 

Essa não funcionou (retorna as palavras juntas) :huh: :

function dropdown(imovel){ 
  
       
   
 var comboclienteX = createXMLHTTP();
               comboclienteX.open("post", "objcliente.asp", true);
               comboclienteX.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
               comboclienteX.onreadystatechange=function(){
                           if (comboclienteX.readyState==4){// abaixo o texto do gerado no arquivo executa.asp e colocado no div
                                      document.all.exibe_cliente.innerHTML = comboclienteX.responseText;}}
                                      

comboclienteX.send("imovel=" + frm1.imovel.value);


}


Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você estava disposto a mudar o ajax, iria sugerir usar o jquery que facilita muito no ajax e em varias outras coisas

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.