Ir para conteúdo

POWERED BY:

Arquivado

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

djtuca2

Gravando no Banco Mysql - Ajax, PHP e Mysql

Recommended Posts

Olá Pessoal,

Adaptei o codigo do site abaixo em meu form porém ele esta gravando o numero do estado no banco de dados porém eu gostaria de gravar o nome, como proceder?

http://www.daviferreira.com/posts/populando-selects-de-cidades-e-estados-com-ajax-php-e-jquery

Teve um usuario que mencionou como prodecer para fazer isso porém não consegui identificar onde colocar o código;

Olá pessoal, uma forma para armazenar o NOME do estado no banco de dados, ao invés do CÓDIGO do estado, 
é criar uma consulta com o código do estado recebido do formulário, para trazer o nome do estado, 
e daí sim ser salvo no banco de dados.

//Recebe do formulário o código do estado
$estado	= $_POST ["cod_estados"];

// Faz a consulta para trazer o nome do estado pelo código recebido
$sql = "SELECT cod_estados, nome FROM estados WHERE cod_estados = ". $estado;

// Pega o nome do estado e atribui à string $estado_nome.
$res = mysql_query( $sql );
while ( $row = mysql_fetch_assoc( $res ) ) { $estado_nome = $row['nome'];};

//Para salvar no banco, utilize a string $estado_nome.

Agradeço desde já a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O link não está abrindo, mas o que você precisa mudar é o valor recebido em $estado. Em vez de "cod_estado" tem que usar o elemento que tenha o nome do estado em vez do seu código. Ou talvez mudar o HTML para enviar o nome do estado em vez do código

Talvez este meu código lhe seja útil: http://rberaldo.com.br/combo-com-as-cidades-e-estados-do-brasil-usando-ajax/

PS: funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mostre como fez. Deve ter feito algo errado.

Habilite todas as exibições de erro, como mostrado neste tópico, na Orientação No. 3 e também faça debug das queries como mostrado no mesmo link

ps: java e javascript são coisas bem diferentes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me expressei errado, foi no "JavaScript "

Tentei dessa forma no form

<label for="cadastro_uf">Estado:</label>
<select name="cadastro_uf" id="cadastro_uf" class="form-control">
      <option value=""></option>
      <?php
        $sql = "SELECT cadastro_uf, sigla
            FROM estados
            ORDER BY sigla";
        $res = mysql_query( $sql );
        while ( $row = mysql_fetch_assoc( $res ) ) {
          echo '<option value="'.$row['sigla'].'">'.$row['sigla'].'</option>';
        }
      ?>
    </select>

Tambem tentei mudando no select name mas não consegui.

No arquivo que recebe os dados eu tambem tentei mudar para a sigla e não foi.

ps:tentei colocar seu codigo dentro do meu projeto e não consegui também

Compartilhar este post


Link para o post
Compartilhar em outros sites

ao mudar de salvar o cod_estado para nome do estado você modificou tambem o tipo de dado do campo?

se ele salvava codigo (provalvemente int) e agora você salva nome (string) o campo no banco deve ser alterado para receber o tipo correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

djtuca2,

Mostre como você pega o valor vindo do formulário e monta o insert para inserir no banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

djtuca2,

Mostre como você pega o valor vindo do formulário e monta o insert para inserir no banco de dados.

Kelvim,

Estou utilizando o form em bootstrap, este campo é parte de outros que ao clicar no botao de cadastrar ele faz uma validação em javascript, segue o codigo da validação

function validarCadastro(e){

  $("#result").html('<img src="dist/img/loader.gif">');

    var envio = $.post("plugins/php/dataInput.php", { 
    // Cadastro
    cadastro_uf:                  document.getElementById('cadastro_uf').value,
	
    TYPE:          e
  })

  envio.done(function(data) { $("#result").html(data); })
        
  envio.fail(function() { alert("Não foi possível carregar essa requisição."); })  
}

Agora o Arquivo que faz o input após a validação de todos os campos do form

				$PUT = $DB->prepare("INSERT INTO cadastro (cadastro_id, cadastro_relac, cadastro_status, cadastro_data_pedido, cadastro_nome_cliente, cadastro_telefone, cadastro_endereco, cadastro_cidade, cadastro_uf, cadastro_cep, cadastro_projeto, cadastro_tipo_servico, cadastro_velocidade, cadastro_vlan, delin_obs, cadastro_lat, cadastro_long) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
					$PUT->execute(array(trim($_POST['cadastro_id']),
										$_POST['cadastro_relac'],
										$_POST['cadastro_status'],
										$_POST['cadastro_data_pedido'],
										$_POST['cadastro_nome_cliente'],
										$_POST['cadastro_telefone'],
										$_POST['cadastro_endereco'],
										$_POST['cadastro_cidade'],
										$_POST['cadastro_uf'],
										$_POST['cadastro_cep'],
										$_POST['cadastro_projeto'],
										$_POST['cadastro_tipo_servico'],
										$_POST['cadastro_velocidade'],
										$_POST['cadastro_vlan'],
										$_POST['delin_obs'],
										$_POST['cadastro_lat'],
										$_POST['cadastro_long']
										)); 

Você mudou o name do <select>. Logo, precisa mudar o valor em $_POST para usar cadastro_uf em vez de cod_estado

Beraldo,

Tudo que era cod_estado alterei para cadastro_uf

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ainda assim não inseri?

debungando, coloque echo para $_POST['cadastro_uf'], para confirmar se a segla está chegando certo

var_dumpp($PUT) para ver e verifique o insert se foi montado corretamente

outra dica que posso dar é habilitar os erros do php, para exibir as mensagens do erro.

como você está trabalhando com ajax, pode fazer a requisição com a janela de desenvolvedor do Chrome aberta, na aba network e verificar os envios e as resposta do servidor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kelvim,

Deixei Sigla na opcao de option e ele insere a sigla agora no banco, porém agora ele não me traz a cidade.

      <?php
        $sql = "SELECT cadastro_uf, sigla FROM estados ORDER BY sigla";
        $res = mysql_query( $sql );
        while ( $row = mysql_fetch_assoc( $res ) ) {
          echo '<option value="'.$row['sigla'].'">'.$row['sigla'].'</option>';
        }
      ?>

Acredito eu que é devido o POST estar trazendo a sigla exemplo "RJ" e esta sigla não ter na tabela de cidades e sim o numero dela. alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

se na tabela de cidade não tem referencia a sigla você pode resolver fazendo um join entre cidade e uf.

SELECT *.tabelaCidade FROM tabelaCidade

JOIN estados ON codigo_uf = codigoUfNaCidade

where sgla = $_POST['cadastro_uf']

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o relacionamento das tabelas é feito com o ID, tem que manter o ID no value, voltando a ser como era antes.

Só faria sentido alterar para sigla se você posse retirar o relacionamento ou alterá-lo para usar a sigla em vez do ID

Compartilhar este post


Link para o post
Compartilhar em outros sites

se na tabela de cidade não tem referencia a sigla você pode resolver fazendo um join entre cidade e uf.

SELECT *.tabelaCidade FROM tabelaCidade

JOIN estados ON codigo_uf = codigoUfNaCidade

where sgla = $_POST['cadastro_uf']

Dessa forma resolveu, tambem forcei no banco ao invez do ID, colocar a sigla e foi também. agradeço muito a sua ajuda.

Se o relacionamento das tabelas é feito com o ID, tem que manter o ID no value, voltando a ser como era antes.

Só faria sentido alterar para sigla se você posse retirar o relacionamento ou alterá-lo para usar a sigla em vez do ID

Fiz dessa forma e funcionou tambem, agradeço muito a sua ajuda e paciência.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por ILR master
      Fala galera, tudo certo?
       
      Seguinte: No servidor A estou tentando fazer uma consulta com o servidor B, mas está dando erro.
      Estou usando o mesmo código de conexão do servidor B que funciona perfeitamente, mas no servidor A, dá erro.
      Segue código:
       
      $host = 'servidor B';
      $user = 'user';
      $pass = '********';
      $db   = 'banco';
       
      // conexão e seleção do banco de dados
      $conexao = mysqlI_connect($host, $user, $pass, $db);
      mysqlI_set_charset($conexao,"utf8");
      //print "Conexão rodando e OK!"; 
      //mysqlI_close($conexao);
       
      Alguém pode me ajudar?
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
×

Informação importante

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