Jump to content
acao

[Resolvido] função carregar combo e vários inputs

Recommended Posts

acao

bom dia, necessito de ajuda em criar função que carrega combo e 3 inputs text

tenho esta função em php que me procura todas as rua por param:

if (isset($_GET['cboLocalidadeLLLL']) && isset($_GET['CCcboConcelhoCC']) && isset($_GET['DDcboDistritoDD'])){
	$selectRua = new ClassInterfaceRegisto();
	$selectRua->valorParam1 = (int)$_GET['DDcboDistritoDD'];
	$selectRua->valorParam2 = (int)$_GET['CCcboConcelhoCC'];
	$selectRua->valorParam3 = (int)$_GET['cboLocalidadeLLLL'];
	$selectRua->setselecionarCol2Param3OrderBy1("todos_cp", "IdTodosCp", "Ruas", "DD", "CC", "LLLL", "Ruas");
	if($selectRua->rowCount > 0){
			$rsRua = $selectRua->rsRegisto;
			echo '<option value="0">selecione uma Rua</option>';
			for ($pIndex = 0; $pIndex < count($rsRua); $pIndex++) {
					echo '<option value="'.$rsRua[$pIndex]["IdTodosCp"].'">'. $rsRua[$pIndex]["Ruas"] .'</option>';
			}
		   /* if($selectRua->rowCount == 1){
					$selectCp = new ClassInterfaceRegisto();
					$selectCp->valorParam1 = (int)$rsRua[0]["IdTodosCp"];
					$selectCp->setselecionarCol3Param1("todos_cp","Cp4","Cp3","CpAlf", "IdTodosCp");
					if($selectCp->rowCount == 1){
							$selectCp = $selectCp->rsRegisto;
							echo $codPostal = $selectCp[0]["Cp4"].";".$selectCp[0]["Cp3"].";".$selectCp[0]["CpAlf"];
					}
			}*/
	}
}

tenho esta função em javascript que me carrega as ruas filtradas por combo localidades:

function varChangeCboLocalidade(){
	document.frRegUsuarios.cboLocalidade.value;
}		
	$(document).ready(function(){
		$('#cboLocalidade').change(function(){
		var valDistrito = document.frRegUsuarios.cboDistrito.value;
		var valConcelho = document.frRegUsuarios.cboConcelho.value;
		$('#cboRua').load('ClassGlobls/FuncPhp.php?cboLocalidadeLLLL='+ $('#cboLocalidade').val() +
				'&DDcboDistritoDD='+ valDistrito + '&CCcboConcelhoCC=' + valConcelho);
		document.getElementById('divRuas').style.display = '';
		});
	});

necessito que a função js varChangeCboLocalidade() continue a carregar as ruas

e se apenas existir 1 carregue o código postal.

			$.post('ClassGlobls/FuncPhp.php?cboRua='+ $('#cboRua').val(),function(data){
					var codPostal = (data);
					var cp = codPostal.split(";");
					document.getElementById('CodigoPostalNum').value = cp[0];
					document.getElementById('CodigoPostalNumRua').value = cp[1];
					document.getElementById('CodigoPostalNome').value = cp[2];
					document.getElementById('divCp').style.display = '';
			});
		});

cumps

acao

Edited by acao

Share this post


Link to post
Share on other sites
Rechousa

Viva,

Estás a retornar HTML quando deverias retornar JSON, este caso um array de objetos. Para este caso em particular, seria mais fácil, pois com JSON conseguias verificar quantos elementos tem o array e, se fosse apenas 1, então carregavas o código postal, se fossem mais de 1 então carregarias as ruas.

Neste caso, se calhar tens de fazer parsing de strings ou carregar os elementos option para a DOM e contar o número de registos que existem na DOM, para o objeto em questão.

Espero ter ajudado,


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
acao

boas noites, obrigado pela resposta,

eu não sei JSON, (provavelmente vai ser difícil para mim).

Para este caso em particular, seria mais fácil, pois com JSON conseguias verificar quantos elementos tem o array e, se fosse apenas 1, então carregavas o código postal, se fossem mais de 1 então carregarias as ruas.

isto já faço eu em php a parte que está comentada filtra se for apenas um registo.

eu necessito de retornar para javascript o (objecto comba e uma string) string que depois transformo em array.

eu necessito sempre da combobox, mas queria carregar na combo localidades os imputs do cp porque há localidades sem rua e aparece na combo ruas uma linha em branco e ninguém quer clicar em linha em branco.

ps: já alterei o índice 0 da combo para aparecer clicar em linha em branco, mas assim não fica perfeito.

cumps

acao

Share this post


Link to post
Share on other sites
acao

ficou assim:

if (isset($_GET['cboLocalidadeLLLL']) && isset($_GET['CCcboConcelhoCC']) && isset($_GET['DDcboDistritoDD'])){
	$selectRua = new ClassInterfaceRegisto();
	$selectRua->valorParam1 = (int)$_GET['DDcboDistritoDD'];
	$selectRua->valorParam2 = (int)$_GET['CCcboConcelhoCC'];
	$selectRua->valorParam3 = (int)$_GET['cboLocalidadeLLLL'];
	$selectRua->setselecionarCol2Param3OrderBy1("todos_cp", "IdTodosCp", "Ruas", "DD", "CC", "LLLL", "Ruas");
	if($selectRua->rowCount > 0){
			$rsRua = $selectRua->rsRegisto;
			$ruas = array();
			$ruas[0]= array();
			foreach(array_keys($rsRua) as $pIndex) {
				   $ruas[0][]= array(  
							"IdTodosCp"=>$rsRua[$pIndex]["IdTodosCp"],	  
							"Ruas"=>$rsRua[$pIndex]["Ruas"]
							);
			}
			if($selectRua->rowCount == 1){
					$selectCp = new ClassInterfaceRegisto();
					$selectCp->valorParam1 = (int)$rsRua[0]["IdTodosCp"];
					$selectCp->setselecionarCol3Param1("todos_cp","Cp4","Cp3","CpAlf", "IdTodosCp");
					if($selectCp->rowCount == 1){
							$selectCp = $selectCp->rsRegisto;
							$ruas[1][]= array(  
							"codPostal" => $selectCp[0]["Cp4"].";".$selectCp[0]["Cp3"].";".$selectCp[0]["CpAlf"]
							);
					}
			}
			echo json_encode($ruas);
	}
}


function varChangeCboLocalidade(){
	$('#cboLocalidade').val();
}		
	$(document).ready(function(){
			$('#cboLocalidade').change(function(){
				  var valDistrito = $('#cboDistrito').val();
				  var valConcelho = $('#cboConcelho').val();
					$.ajax({	  
							type: "GET",
							url : 'ClassGlobls/FuncPhp.php?cboLocalidadeLLLL='+ $('#cboLocalidade').val() +
										'&DDcboDistritoDD='+ valDistrito + '&CCcboConcelhoCC=' + valConcelho,
							dataType : "json",	  
							contentType: "application/json; charset=utf-8",
							success : function(data){
									var options = "";
									$.each(data, function(key, valor){
											if(key === 0){
													if(valor.length > 1){
															options = '<option value="0">Selecione uma rua</option>';
													}
													$.each(valor, function(pIndex, values){
															options += '<option value="' + valor[pIndex]["IdTodosCp"] + '">' + valor[pIndex]["Ruas"] + '</option>';
															$('#CodigoPostalNum').val("");
															$('#CodigoPostalNumRua').val("");
															$('#CodigoPostalNome').val("");
													 });
											} else if (key === 1) {
													$.each(valor, function(pIndex, values){
															var codPostal = valor[pIndex]["codPostal"];
															var cp = codPostal.split(";");
															$('#CodigoPostalNum').val(cp[0]);
															$('#CodigoPostalNumRua').val(cp[1]);
															$('#CodigoPostalNome').val(cp[2]);
															$('#divCp').show();
													});
											 }
									});
									$('#cboRua').html(options).show();
									$('#divRuas').show();
							}
					});//termina o ajax
			});
	});

cumps

acao

Edited by acao

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.