acao Posted July 1, 2015 at 09:12 AM Report #585626 Posted July 1, 2015 at 09:12 AM (edited) 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 July 1, 2015 at 09:16 AM by acao
acao Posted July 1, 2015 at 08:05 PM Author Report #585663 Posted July 1, 2015 at 08:05 PM boas noites alternativas? cumps acao
Rechousa Posted July 1, 2015 at 10:05 PM Report #585673 Posted July 1, 2015 at 10:05 PM 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
acao Posted July 1, 2015 at 11:04 PM Author Report #585678 Posted July 1, 2015 at 11:04 PM 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
Solution acao Posted July 2, 2015 at 10:54 PM Author Solution Report #585714 Posted July 2, 2015 at 10:54 PM (edited) 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 July 13, 2015 at 10:09 PM by acao
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now