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 Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • 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
×

Informação importante

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