Jump to content

Formulário HTML não envia dados para o banco


Paulo Ananias

Postagens Recomendadas

Boa noite colegas,

Estou enfrentando um problema. Não encontrei nada a respeito, mas peço desculpas se esse tópico já foi levantado anteriormente aqui no fórum.

Meu objetivo no momento é enviar informações de um formulário html para o mysql. Contudo, preencho as informações e quando clico no botão submit, não acontece nada.

Não consegui determinar a causa do problema.

<?php
 
    if(isset($_POST['submit']))
    {
        //print_r($_POST['nome']);
        //print_r($_POST['cpf']);
        //print_r($_POST['email']);
        //print_r($_POST['senha']);
        //print_r($_POST['senhaconfirma']);
 
        include_once('config.php');
 
        $nome = $_POST['nome'];
        $cpf = $_POST['cpf'];
        $email = $_POST['email'];
        $senha = $_POST['senha'];
        $senhaconfirma = $_POST['senhaconfirma'];
 
        $resul = mysqli_query($conexao, "INSERT INTO usuarios ('Nome completo','CPF','Email','Senha','Confirmar senha')
        VALUES ('$nome','$cpf','$email','$senha','$senhaconfirma')");
    }
?>
 
<!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">
    <link rel="stylesheet" href="style formularios.css">
    <title>Formulario - cadastro</title>
</head>
<body>
    <div class="content">
        <h1>Fromulário de Cadastro</h1>
        <form id="form" action="Formulario-cadastro.php" method="GET">
            <div>
                <input type="text" placeholder="Nome completo" name="nome" id="nome" class="inputs required" oninput="namevalidate()">
                <span class="span-required">Nome dever ter no mínimo três caracteres</span>
            </div>
            <div>
                <input type="text" placeholder="CPF" name="cpf" id="cpf" class="inputs required" oninput="cpfvalidate()">
                <span class="span-required">O CPF deve conter 11 dígitos. Não utilize ponto ou traço.</span>
            </div>
            <div>
                <input type="email" placeholder="E-mail" name="email" id="email"class="inputs required" oninput="emailvalidate()">
                <span class="span-required">Digite um e-mail válido</span>
            </div>
            <div>
                <input type="password" placeholder="Senha" name="senha" id="senha"class="inputs required" oninput="senhavalidate()">
                <span class="span-required">Informe uma senha com no mínimo 4 caracteres.</span>
            </div>
            <div>
                <input type="password" placeholder="Digite a senha novamente" name="senhaconfirma" id="senhaconfirma" class="inputs required" oninput="confirmavalidate()">
                <span class="span-required">As senhas devem ser compatíveis</span>
            </div>
         
            <button type="submit" class="btn_enviar">Enviar2</button>
            <a href="#"class="btn">Cancelar</a>
        </form>
    </div>
</body>
<script>
    const form = document.getElementById('form');
    const campos = document.querySelectorAll('.required');
    const spans = document.querySelectorAll('.span-required');
    const emailregex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
 
    form.addEventListener('submit', (event) => {
        event.preventDefault();
        namevalidate();
        cpfvalidate();
        emailvalidate();
        senhavalidate();
        confirmavalidate();
    });
 
    function setError(index){
        campos[index].style.border = '2px solid #e63636';
        spans[index].style.display = 'block';
    }
 
    function removeError(index){
        campos[index].style.border = '';
        spans[index].style.display = 'none';
    }
 
    function namevalidate(){
         if(campos[0].value.length < 3){
            setError(0);
         }else{
            removeError(0);
         }
    }
 
    function cpfvalidate(){
        if (campos[1].value.length != 11){
            setError(1);
        }else{
            removeError(1);
        }
    }
 
    function emailvalidate(){
        if(!emailregex.test(campos[2].value)){
            setError(2);
        }else{
            removeError(2);
        }
    }
 
    function senhavalidate(){
        if(campos[3].value.length < 4){
            setError(3);
        }else{
            removeError(3);
            confirmavalidate();
        }
    }
 
    function confirmavalidate(){
        if (campos[4].value == campos[3].value){
            removeError(4);
        }else{
            setError(4);
        }
    }
</script>
</html>
Link to comment
Compartilhe em outros sites

<?php
 
$dbHost = 'Localhost';
$dbUsername = 'root';
$dbPassword = '';
$dbName = 'formulario-login';
 
$conexao = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName);
 
//if($conexao->connect_errno){
   //echo "Erro";
//}else {
   //echo "Conexão efetuada com sucesso";
//}
?>
Link to comment
Compartilhe em outros sites

  • Douglas Garcia mudou o título para Formulário HTML não envia dados para o banco
  • 1 month later...

Você adicionou um evento ao formulário que intercepta e para o submit (código abaixo), o que não é um problema, pois isso lhe permite realizar as validações javascript.

form.addEventListener('submit', (event) => {
        event.preventDefault(); // AQUI PARA O SUBMIT

Para que o formulário seja submetido, ao final você precisa forçar o mesmo após as validações. Você pode fazer isso através do método form.submit().

Importante se atentar que será necessário mudar seu código para que as validações parem a execução antes do submit, pois hoje, independentemente de sucesso ou falha, ele segue até o final.

  • Curtir 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...