Ir para conteúdo

Arquivado

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

josenilson

Como Retornar o valor de uma tabela em um Select Option

Recommended Posts

Olá pessoal estou usando uma função Ajax com uma lista de arquivos para manipular em um <select option> os ESTADOS E CIDADES no meu formulário.
A função e esta.
<script type="text/javascript"> 


$(document).ready(function () {


$.getJSON('estados_cidades.json', function (data) {


var items = [];
var options = '<option value="">escolha um estado</option>'; 


$.each(data, function (key, val) {
options += '<option value="' + val.nome + '">' + val.nome + '</option>';
}); 
$("#estados").html(options); 


$("#estados").change(function () { 


var options_cidades = '';
var str = ""; 


$("#estados option:selected").each(function () {
str += $(this).text();
});


$.each(data, function (key, val) {
if(val.nome == str) { 
$.each(val.cidades, function (key_city, val_city) {
options_cidades += '<option value="' + val_city + '">' + val_city + '</option>';
}); 
}
});


$("#cidades").html(options_cidades);


}).change(); 


});


});


</script>

e o meu HTML no caso o select option é este código abaixo.

<!--inicio do seletor-ESTADO--> 
<select id="estados" style="width:170px;font-size: 13px" name="uf" required class="form-control">
<option value=""></option>
</select>
<!--fim do seletor-ESTADO--> 


<!--inicio do seletor-CIDADE--> 
<select id="cidades" style="width:220px;font-size: 13px" name="cidade" value="<?php echo $cliente['Cidade']; ?>"required class="form-control" >
 <option value=""></option>
</select>
<!--fim do seletor-CIDADE-->
Esta funcionando tudo bem, eu consigo salvar o que seleciono no option normalmente, porem a minha dificuldade e na hora de editar esse bendito select option, como eu retorno os valores em um select option ? quero dizer na hora de editar os inputs eu consigo trazer o que já esta cadastrado, só que o select option vem vazio, não estou conseguindo retornar os valores no select de ESTADOS e Cidades.
como faço isso ?
Deixo aqui meu agradecimento e um pequeno pedido, se for possível posta a resolução como chego nesse resultado, pois estou iniciando na programação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando ao clicar você já traz do banco o estado e compara se o estado que você está trazendo é igual ao do banco

$.each(data, function (key, val) {
  options += '<option value="' + val.nome + '" val.nome == "<php? $estadoSalvo ?>"? "selected" : ""' + val.nome + '</option>';
}); 

O mesmo para Cidade, com a diferença que você já deve ter trago a lista de cidades especificas para esse estado.

espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa mano blz ?

Obrigado por tentar me ajudar, mas tem como esplicar melhor essa solução, sou iniciante em programação, não entendi bem como fazer.

eu tenho que adicionar esse código que você posto no meu script json ? e chamar o option quando editar o form ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse trecho que eu postei, foi uma pequena alteração no que você mesmo postou de JS lá em cima.

$.each(data, function (key, val) {
options += '<option value="' + val.nome + '">' + val.nome + '</option>';
});
$("#estados").html(options);

e do jeito que eu sugeri:

$.each(data, function (key, val) {
options += '<option value="' + val.nome + '" val.nome == "<php? $estadoSalvo ?>"? "selected" : ""' + val.nome + '</option>';
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu só não sei como esse option vai buscar no banco e comparar, como você ta fazendo isso ?

essa variável $estadoSalvo chama alguma coisa ?

options += '<option value="' + val.nome + '" val.nome == "<php? $estadoSalvo ?>"? "selected" : ""' + val.nome +

Compartilhar este post


Link para o post
Compartilhar em outros sites

essa variável $estadoSalvo chama alguma coisa ?

Essa variável é estado salvo no banco. que você quer que apareça como selecionado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue o código de exemplo:

<!-- Aqui vou verificar se tem id, se tiver não roda o $(document).ready(function () { -->
<?php if(isset($_GET['idCliente'])){

        $idlogin = filter_var($_GET["idCliente"], FILTER_SANITIZE_NUMBER_INT);
        $dadosuser = pegarid('Cliente', 'idCliente', $idCliente);
        if ($dadosuser):
            $cliente = $dadosuser;
        else:
            echo "não encontrado";
        endif;
    ?>

    <script type="text/javascript">
        $(document).ready(function () {
             chamar_funcao_editar('<?= $cliente["uf"]; ?>','<?= $cliente["Cidade"]; ?>');
        });
        function chamar_funcao_editar(estado,cidade){
            $.getJSON('estados_cidades.json', function (data) {
                var options = '<option value="'+estado+'">'+estado+'</option>';
                $.each(data, function (key, val) {
                    options += '<option value="' + val.nome + '">' + val.nome + '</option>';
                });
                $("#estados").html(options);
            });
            $('#cidades').html('<option value="'+cidade+'">'+cidade+'</option>');
        }
        function chamar_funcao_cidade(){
            $.getJSON('estados_cidades.json', function (data) {
                var options_cidades = '';
                var str = $('#estados').val();
                $.each(data, function (key, val) {
                    if(val.nome == str) {
                        $.each(val.cidades, function (key_city, val_city) {
                            options_cidades += '<option value="' + val_city + '">' + val_city + '</option>';
                        });
                    }
                });
                $("#cidades").html(options_cidades);
            });
        }
    </script>

<?php }else{?>
<!--FUNÇÃO APLICADA NO SELECT OPTION ESTADOS E CIDADES NO FORMULARIO--->
<script type="text/javascript">
		$(document).ready(function () {
		
			$.getJSON('estados_cidades.json', function (data) {
			
				var items = [];
				var options = '<option value="">escolha um estado</option>';	
			
				$.each(data, function (key, val) {
					
					options += '<option value="' + val.nome + '">' + val.nome + '</option>';
					
				});	
				
				$.each(data, function (key, val) {
  				options += '<option value="' + val.nome + '" val.nome == "<php? $uf ?>"? "selected" : ""' + val.nome + '</option>';
				}); 
								
				$("#estados").html(options);				
				
				$("#estados").change(function () {				
				
					var options_cidades = '';
					var str = "";					
					
					$("#estados option:selected").each(function () {
						str += $(this).text();
					});
					
					$.each(data, function (key, val) {
						if(val.nome == str) {							
							$.each(val.cidades, function (key_city, val_city) {
								options_cidades += '<option value="' + val_city + '">' + val_city + '</option>';
							});							
						}
					});

					$("#cidades").html(options_cidades);
					
				}).change();		
			
			});
		
		});

</script>	
<?php } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por luiz monteiro
      Olá. Tenho 3 formulários em uma mesma pagina, onde cada um tem 1 input type text.
      O que preciso é recuperar o nome desses inputs e o valor correspondente ao formulário submetido.
      =============
      form name="formulario1" id="formulario1"
      input type="text" name="nome1" value="valor1" /form
      form name="formulario2" id="formulario2"
      input type="text" name="nome2" value="valor2" /form
      form name="formulario3" id="formulario3"
      input type="text" name="nome3" value="valor3" /form
      =============
      ..........
      var formulario_submetido = document.getElementById("formulario1"); formulario_submetido.addEventListener('submit', function(e) { e.preventDefault(); //tentei console.log(document.querySelectorAll('#'+this.id + ' input').name); //tentei var formula = new FormData(formulario_submetido); console.log(formula.input['type=text'].name); //tentei console.log(formula.get(input['type=text']).name); ..........
        no console.log(e), ele está nessa hierarquia   form -> srcElement -> input -> attributes -> name 
      Como recupero o valor do name dele e o valor do value?
       
      Agradeço desde já.
    • Por ment0r
      Boa noite pessoal, tudo bem?
       
      Estou desenvolvendo um sistema simples com exibição de formulário via modal. Uma vez cadastrado o serviço (tabela possui apenas dois campos, id e nome), eles são exibidos numa tabela com um ícone que permite a alteração do nome.

       
      Eu clico no ícone e é chamado um modal que é gerado via ajax (pois são vários registros).
       

       
      Nesse modal é mostrado o serviço e uma vez alterado, o botão Salvar chama uma função que atualiza a tabela servico, concluindo a tarefa. Fiz o mesmo processo pra cadastrar o serviço, com a diferença de que o modal está presente na mesma página, ou seja, não é chamado via ajax.
       
      Eis os códigos:
      <a href="#" onclick="modalUpdate(<?= trim($array['id']) ?>)"> <i class='bx bx-edit'></i> </a> // Trecho onde eu chamo a função modalUpdate. Função btAltServico click:
      $('#btAltServico').click(function() { var inpnome = $('#nome'); var inpid = $('#id'); if (inpnome.val() == '') { swal("Atenção", "Por favor, preencha os campos obrigatórios", "warning"); if (inpnome.val() == '') { inpnome.css("border","2px solid #f94545"); } else { inpnome.css("border",""); } alert(inpnome); alert(inpid); } else { $.ajax({ url: '../inc/ajax/altServico.php', type: 'post', dataType: 'json', // pode ser html data: { nome : inpnome.val(), id : inpid.val() }, success: function(resposta){ if (resposta == 1) { inpnome.val(""); inpnome.css("border",""); swal("Sucesso", "Serviço alterado", "success"); } else { if (resposta == 0) { swal("Erro", "Serviço não alterado. Log de erro gerado.", "error"); } else { swal("Atenção", "Serviço já cadastrado", "warning"); } } } }) } });  
      E modalUpdate.php :
       
      <?php /* * altServico.php * * Script responsável pelo update de serviços na tabela servico * * Função chamada pelo arquivo ajax.js */ //if ($_POST) { require'../conn.php'; require'../../class/class.geral.php'; $geral = new Geral(); $nome = $_POST['nome']; $id = $_POST['nome']; $ativo = 1; // Verifica se o servico já foi cadastrado $sqlVer = "select nome from algo68_db_cliente.servico where nome = '".$nome."' and id <> ".$id.""; $queryVer = mysqli_query($conn, $sqlVer); $resultVer = mysqli_num_rows($queryVer); if ($resultVer > 0) { echo json_encode(2); // servico já cadastrado } else { // Update do servico $sql = "update algo68_db_cliente.servico set nome = '".$nome."', ativo = ".$ativo." where id = ".$id; $query = mysqli_query($conn, $sql); $result = mysqli_affected_rows($conn); if ($result > 0) { echo json_encode(1); // alterou o servico } else { $geral->logErro(date('d/m/Y|H:i:s'), @$_SERVER[REQUEST_URI], 'AlterarServico', mysqli_error($conn)); echo json_encode(0); // não alterou o servico } } //} ?> O problema é que quando clico no botão Salvar, não acontece nada - se eu colocar um alert qualquer na função click, só pra saber se está chegando, também não da nada. E está da mesma forma que o cadastro de serviço, que funciona perfeitamente.

      Bom, é isso pessoal, tentei ser o mais breve e especifico possível. Qualquer ajuda é bem vinda, obrigado a todos, desde já.
    • Por Danilo - Jesus voltará!
      Olá pessoal, tenho uma div a qual através de um select categorias eu trago dados de empresas do banco, aí preciso clicar nas listagens das empresas e pegar o ID quando clica no checkbox e gravar pelo ajax novamente na session feita no arquivo php tipo um carrinho de compras, que essa parte já tenho... só não to conseguindo pegar os ids gerados dinamicamente no retorno feito do ajax, eles aparecem com F12 ao inspecionar, mas não aceita eu clicar para pegar o ID, acho que é algo de DOM, mas não to sabendo fazer... alguém aí saberia me ajudar como pegar esses ids ao clicar, já que eles vem dinamicamente?
       
      obrigado
    • Por joao b silva
      <input type="text" class="form-control" id="produto" name="produto"  onblur="BuscaPr()">
       
       
      Ola. eu chamo a função JS a seguir  no onblur do input acima. cikiqyeu is alerts para confirmar a chamada da função. ta chamando. mas alem dos alerts nao acontece mais nada. segue a função JS e o arquivo php que é chamado no ajax:
       
       
      FUNSAO JS
       
          function BuscaPr(){
              var buscaTexto = document.getElementById('produto').value
              alert(buscaTexto) 
              alert(buscaTexto.length) 
              $.ajax({
                  method: 'post',
                  url: 'sistema/produto/buscapr.php',
                  data: {busca: 'sim', texto: buscaTexto},
                  dataType: 'json',
                  success: function(retorno){
                          if(retorno.qtd == 0){
                              alert('q = 0')
                                  $('#resbuscapro').html('<p>Não encontramos resultados para sua busca</p>');
                          }else{
                              alert('q + 0')
                                  $('#resbuscapro').html(retorno.dados);
                          }
                  }
              });
          }

      O ARQUIVO PHP:
       
      <?php
      if (!session_id()):
          session_start();
      endif;
      require_once('_app/Config.inc.php');
      require_once('./Lib.php');
      if (isset($_POST['busca']) && $_POST['busca'] == 'sim'):
          $textoBusca = strip_tags($_POST['texto']);
          $retorno = array();
          $Par = "EM={$_SESSION['userlogin']['emCODIGO']}";
          $Fil = " where emCODIGO = :EM and prDESCRICAO like '%{$textoBusca}%' ";
          $Produto = new Read;
          $Produto->FullRead("select * from produto {$Fil}", $Par);
          if ($Produto->getResult()):
              $retorno['qtd'] = $Produto->getRowCount();
              foreach ($Produto->getResult() as $pro):
                  extract($pro);
                  $retorno['dados'] .= '<a href="#" id='.$prCODIGO.':'.$prVENDA.'">'. utf8_encode($prDESCRICAO).'</a>';
              endforeach;
          endif;
          echo json_encode($retorno);
      endif;
      ?>
    • Por Flaviaac
      Boa tarde pessoal,
       
      Sou iniciante em Desenvolvimento Web e não estou conseguindo resolver um problema no meu código, se alguém puder me ajudar agradeço imensamente.
       

      Vamos lá!
       
      Na tela de cadastro eu tenho um campo tipo select, onde escolho o tipo de documento, e no campo de baixo eu tenho um tipo text que mostrará a quantidade de anos para descarte deste documento. Então quando o usuário selecionar um dos documentos no campo de cima automaticamente deve aparecer o valor do tempo de descarte no campo de baixo, e ai sim o usuário poderá cadastrar o documento em si.
       
      Obs.: estou ignorando o restante dos campos de cadastro pois não são relevantes para este problema.
       

       
      Este evento está funcionando perfeitamente, o problema é que quando clico no botão "cadastrar" o campo de "periodicidade de descarte" não está salvando no bando de dados com o valor exibido, mas sim como zero.
       
      No arquivo processa_cadastro.php quando dou um var_dump em $periodo_doc ele imprime: int(0)
       
       
      Não consegui identificar onde estou errando.
       
      Por favor, poderiam me dar uma luz.
      Obrigada!
       
       
       
      Segue os códigos para entendimento.
       
       
      tipo_arquivo.sql:
      -- phpMyAdmin SQL Dump -- version 5.2.0 -- https://www.phpmyadmin.net/ -- -- Host: localhost -- Tempo de geração: 12-Jul-2022 às 14:46 -- Versão do servidor: 10.4.24-MariaDB -- versão do PHP: 7.4.29 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Banco de dados: `sistemadescarte` -- -- -------------------------------------------------------- -- -- Estrutura da tabela `tipo_arquivo` -- CREATE TABLE `tipo_arquivo` ( `id_tipo` int(11) NOT NULL, `nome_tipo` varchar(255) NOT NULL, `descarte` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Extraindo dados da tabela `tipo_arquivo` -- INSERT INTO `tipo_arquivo` (`id_tipo`, `nome_tipo`, `descarte`) VALUES (1, 'Ata Extraordinária', 5), (2, 'Ata Ordinária', 5), (3, 'carta', 8), (4, 'Memorando', 10), (5, 'Memorando Circular', 8), (6, 'Ofício', 5), (7, 'Ofício Circular', 5), (8, 'Processo', 10); -- -- Índices para tabelas despejadas -- -- -- Índices para tabela `tipo_arquivo` -- ALTER TABLE `tipo_arquivo` ADD PRIMARY KEY (`id_tipo`), ADD KEY `id_tipo` (`id_tipo`); -- -- AUTO_INCREMENT de tabelas despejadas -- -- -- AUTO_INCREMENT de tabela `tipo_arquivo` -- ALTER TABLE `tipo_arquivo` MODIFY `id_tipo` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=21; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;  
      documento.sql:
      -- phpMyAdmin SQL Dump -- version 5.2.0 -- https://www.phpmyadmin.net/ -- -- Host: localhost -- Tempo de geração: 12-Jul-2022 às 14:47 -- Versão do servidor: 10.4.24-MariaDB -- versão do PHP: 7.4.29 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Banco de dados: `sistemadescarte` -- -- -------------------------------------------------------- -- -- Estrutura da tabela `documento` -- CREATE TABLE `documento` ( `ID_DOC` int(11) NOT NULL, `NUMERO_DOC` varchar(20) NOT NULL, `TIPO_DOC` int(11) NOT NULL, `INTERESSADO` varchar(255) NOT NULL, `TITULO` varchar(400) NOT NULL, `OBS` varchar(400) DEFAULT NULL, `PERIODICIDADE` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Extraindo dados da tabela `documento` -- INSERT INTO `documento` (`ID_DOC`, `NUMERO_DOC`, `TIPO_DOC`, `INTERESSADO`, `TITULO`, `OBS`, `PERIODICIDADE`) VALUES (2, '788741-2019/65', 1, 'admin', 'Ata extraordinária de 2018', 0), (3, '888888-2021/21', 3, 'gerencia', 'Carta a gerencia', 0), (4, '333653-2022/1', 8, 'teste', 'Processo', 'teste na observação', 0), (6, '224568-2022/3', 2, 'teste', 'Ata Ordinária', 0); -- -- Índices para tabelas despejadas -- -- -- Índices para tabela `documento` -- ALTER TABLE `documento` ADD PRIMARY KEY (`ID_DOC`), ADD KEY `TIPO_DOC` (`TIPO_DOC`); -- -- AUTO_INCREMENT de tabelas despejadas -- -- -- AUTO_INCREMENT de tabela `documento` -- ALTER TABLE `documento` MODIFY `ID_DOC` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2295; -- -- Restrições para despejos de tabelas -- -- -- Limitadores para a tabela `documento` -- ALTER TABLE `documento` ADD CONSTRAINT `documento_ibfk_1` FOREIGN KEY (`TIPO_DOC`) REFERENCES `tipo_arquivo` (`id_tipo`); COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;  
       
      cadastro.php:
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script type="text/javascript" src="js/descarte.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <title>Cadastro de Documento</title> </head> <form action="" method="post"> <div class="form-row"> <!-- tipo de documento --> <div class="form-group col-md-1"> <label>Tipo de Documento</label> <select name="tipo" id="tipo" class="form-control" onchange="funcaoDescarte()"> <option selected>Selecione...</option> <!--------------- P H P ----------------> <?php while($row = $result->fetch_assoc()) { echo "<option value=".$row['id_tipo'].">".$row['nome_tipo']."</option>"; } ?> <!--------------- F I M P H P ---------> </select> </div> </div> <div class="form-row"> <!-- tempo para descarte --> <div class="form-group col-md-2"> <span class="form-text">Periodicidade para descarte deste documento:</span> <input name="descarte" type="text" class="form-control" id="descarte" value="" disabled=""> <input type="text" readonly class="form-control-plaintext" value="Anos"> </div> </div> <!------------------- botão cadastrar e limpar ----------------------------------------------> &nbsp; </br> <div class="form-row"> <!-- Cadastrar e Limpar --> <div class="form-group col-md-4"> <button type="submit" name="cadastrar_doc" class="btn btn-primary">Cadastrar</button> <button type="reset" name="limpar_doc" class="btn btn-primary">Limpar campos</button> </div> </div> </form  
      descarte.js:
      function funcaoDescarte(){ var x = document.getElementById("tipo").value; y = $.ajax({ url:"periodicidade.php", method:"POST", data:{ id : x }, success:function(data){ $("#descarte").val(data); } }) }  
      periodicidade.php:
      <?php include_once "conexao.php"; $k = $_POST['id']; $k = trim($k); $sql = "SELECT * FROM tipo_doc WHERE id_tipo ='{$k}'"; $result = $conn->query($sql); while($row = $result->fetch_assoc()){ echo $row['descarte']; } ?>  
      processa_cadastro.php:
      <?php $tipo_doc = intval(filter_input(INPUT_POST, 'tipo', FILTER_SANITIZE_NUMBER_INT)); $periodo_doc = intval(filter_input(INPUT_POST, 'descarte', FILTER_SANITIZE_NUMBER_INT)); if(isset($_POST['cadastrar_doc'])) { if($tipo_doc !='' || $periodo_doc !='') { $stmt = $conn->prepare("INSERT INTO documento (tipo_doc, periodicidade) VALUES (?, ?)"); $stmt->bind_param("ii", $tipo_doc, $periodo_doc); $stmt->execute(); echo "<span class='alert alert-success'> Cadastrado com sucesso</span>"; $erro = mysqli_error($conn); echo "Ocorreu o seguinte erro: ", '"', $erro, '"<br>'; }else{ echo "<span class='alert alert-danger'> Não cadastrado</span>"; $erro = mysqli_error($conn); echo "Ocorreu o seguinte erro: ", '"', $erro, '"<br>'; } } $stmt->close(); $conn->close(); ?>  
       
×

Informação importante

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