Insert Data into PHP PDO database

Asked

Viewed 1,047 times

1

Good evening, I would like a help in my code. I am trying to enter some data, coming from a form, in the database. Follow code:

insert Register.php

session_start();
include_once("settings.php");



//Verifica se clicou no botão
$enviarCadastro=filter_input(INPUT_POST, 'enviarCadastro', FILTER_SANITIZE_STRING);
if($enviarCadastro){
    $nome = $_POST['nome'];
    $sobrenome = $_POST['sobrenome'];
    $data = $_POST['data'];
    $data_int = (int)$data;
    $cpf = $_POST['cpf'];
    $cpf_int = (int)$cpf;
    $email = $_POST['email'];
    $pais = $_POST['pais'];
    $estado = $_POST['estado'];
    $login = $_POST['login'];
    $senha = $_POST['senha'];
    $rsenha = $_POST['rsenha'];





    $inserir = $pdo->prepare("INSERT INTO cadastro(nome, sobrenome, data, cpf, email, pais, estado, login, senha, rsenha) VALUES (:nome, :sobrenome, :data, :cpf, :email, :pais, :estado, :login, :senha, :rsenha)");

    $PreparaDados = array(
        ':nome' => $nome,
        ':sobrenome' => $sobrenome,
        ':data' => $data_int,
        ':cpf' => $cpf_int,
        ':email' => $email,
        ':pais' => $pais,
        ':estado' => $estado,
        ':login' => $login,
        ':senha' => $senha,
        ':rsenha' => $rsenha,

    );

    $inserir->bindParam(':nome', $nome, PDO::PARAM_STR, 50);
    $inserir->bindParam(':sobrenome', $sobrenome, PDO::PARAM_STR, 50);
    $inserir->bindParam(':data', $data_int, PDO::PARAM_INT, 50);
    $inserir->bindParam(':cpf', $cpf_int, PDO::PARAM_INT, 50);
    $inserir->bindParam(':email', $email, PDO::PARAM_STR, 50);
    $inserir->bindParam(':pais', $pais, PDO::PARAM_STR, 50);
    $inserir->bindParam(':estado', $estado, PDO::PARAM_STR, 50);
    $inserir->bindParam(':login', $login, PDO::PARAM_STR, 50);
    $inserir->bindParam(':senha', $senha, PDO::PARAM_STR, 50);
    $inserir->bindParam(':rsenha', $rsenha, PDO::PARAM_STR, 50);

    $inserir->execute($PreparaDados);

    if($inserir->execute($PreparaDados)){
        echo"Sucesso";
    }else{
        echo"Falha";
    }   
}else{
    //Dados Não enviado para o banco de dados
    $_SESSION ['NãoCadastrado'] = "Cadastro não realizado";
    header("Location: cadastro.php");
}

php.

<form action="inserirCadastro.php" method="post" enctype="multipart/form-data" >


            <!--      NOME        -->
            <?php $nome = array_key_exists('nome', $_POST) ? $_POST['nome'] : ''; ?>
            <p><input type="text" name="nome" id="nome" placeholder="Nome" class="form-control input-md" maxlength="25" value="<?php echo $nome; ?>" /></p>
            <?php
                if($_POST) {
                $nome = $_POST['nome'];
                    if ($nome == "") {
                    echo '<p style="font-family: Microsoft JhengHei Light; color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
            }}?>    


            <!--      SOBRENOME        -->
            <?php $sobrenome = array_key_exists('sobrenome', $_POST) ? $_POST['sobrenome'] : ''; ?>
            <p><input type="text" name="sobrenome" id="sobrenome" placeholder="Sobrenome" class="form-control input-md" maxlength="25" value="<?php echo $sobrenome; ?>"/></p>
            <?php
                if($_POST) {
                $sobrenome = $_POST['sobrenome'];
                    if ($sobrenome == "") {
                    echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
            }}?>


            <!--      DATA        -->
            <?php $data = array_key_exists('data', $_POST) ? $_POST['data'] : ''; ?>
            <p><input type="text" name="data" id="data" placeholder="Data de Nascimento" class="form-control input-md" maxlength="10"  OnKeyUp="mascaraData(this);" onkeypress='return SomenteNumero(event)' value="<?php echo $data; ?>"/></p>
            <script language="JavaScript" type="text/javascript">
                function mascaraData(campoData){
                var data = campoData.value;
                    if (data.length == 2){
                    data = data + '/';
                    document.forms[0].data.value = data;
                    return true;              
                }
                if (data.length == 5){
                  data = data + '/';
                  document.forms[0].data.value = data;
                  return true;
                }
            }
            </script>
            <script language='JavaScript'>
                function SomenteNumero(e){
                var tecla=(window.event)?event.keyCode:e.which;   
                if((tecla>47 && tecla<58)) return true;
                else{
                    if (tecla==8 || tecla==0) return true;
                else  return false;
                }
            }
            </script>
            <?php
            if($_POST) {
            $data = $_POST['data'];
                if ($data== "") {
            echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
            }}?>


            <!--      CPF        -->
            <?php $cpf = array_key_exists('cpf', $_POST) ? $_POST['cpf'] : ''; ?>
            <p><input type="text" name="cpf" id="cpf" placeholder="CPF" class="form-control input-md" maxlength="11" value="<?php echo $cpf; ?>"></p>
            <?php
                function validaCPF($cpf)
                {   // Verifiva se o número digitado contém todos os digitos
                    $cpf = str_pad(preg_replace('[^0-9]', '', $cpf), 11, '0', STR_PAD_LEFT);                        
                    // Verifica se nenhuma das sequências abaixo foi digitada, caso seja, retorna falso
                    if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '11111111111' || $cpf == '22222222222' || $cpf == '33333333333' || $cpf == '44444444444' || $cpf == '55555555555' || $cpf == '66666666666' || $cpf == '77777777777' || $cpf == '88888888888' || $cpf == '99999999999')
                    {
                    return false;
                    }
                    else
                    {   // Calcula os números para verificar se o CPF é verdadeiro
                        for ($t = 9; $t < 11; $t++) {
                            for ($d = 0, $c = 0; $c < $t; $c++) {
                                $d += $cpf{$c} * (($t + 1) - $c);
                            }                    
                            $d = ((10 * $d) % 11) % 10;
                            if ($cpf{$c} != $d) {
                                return false;
                            }
                        }                    
                        return true;
                    }
                }           
                // Verifica se o botão de validação foi acionado
                if(isset($_POST['cadastrar']))
                    {// Adiciona o numero enviado na variavel $cpf_enviado, poderia ser outro nome, e executa a função acima
                    $cpf_enviado = validaCPF($_POST['cpf']);
                    // Verifica a resposta da função e exibe na tela
                    if($cpf_enviado == true)
                        echo '';
                    elseif($cpf_enviado == false)
                        echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> CPF Inválido!</p>';
                }
            ?>
            <small><a href="#myModal" data-toggle="modal" data-target="#myModal"><p style="font-size:10px;">Por que o CPF ?</p></a></small>

            <!-- Modal -->
            <div id="myModal" class="modal fade" role="dialog">
                <div class="modal-dialog">
                    <!-- Modal content-->
                    <div class="modal-content">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal">&times;</button>
                            <h4 class="modal-title"><center><p style="font-family:Gill Sans MT Condensed; font-size:35px;font-family: Microsoft JhengHei Light;">Por que o CPF ?</p></center></h4>
                        </div>
                        <div class="modal-body">
                            <p style="font-family: Microsoft JhengHei Light;"> Para evitar o "flood" de comentários em nosso site, optamos por pedir o número do CPF para que o usúario possa se cadastrar somente uma vez no site.</p>
                            <p style="font-family: Microsoft JhengHei Light;">Evitando assim, de qualquer usúario ter duas ou mais contas registradas no site.</p>
                        </div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                        </div>
                    </div>
                </div>
            </div>


            <!--      EMAIL        -->
            <?php $email = array_key_exists('email', $_POST) ? $_POST['email'] : ''; ?>
            <p><input type="text" name="email" id="email" placeholder="E-mail" class="form-control input-md" maxlength="50" value="<?php echo $email; ?>"/></p>
            <?php
            if($_POST){
            $email = $_POST['email'];
                if ($email == "") {
                    echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
            }}?>
            <?php
            function isMail($email){
                $er = "/^(([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}){0,1}$/";
                if (preg_match($er, $email)){
                return true;
                } else {
                return false;
                }
            }
            if(isset($_POST['cadastrar']))
                $emailvalida = isMail($_POST['email']);
            {
            if (isMail($email))
            {               
            } elseif (@$emailvalida == false) {
                echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Email inválido!</p>';
            }}
            ?>


            <!--      PAIS        -->
            <?php $pais = array_key_exists('pais', $_POST) ? $_POST['pais'] : ''; ?>
                    <p><input type="text" name="pais" id="pais" placeholder="País" class="form-control input-md" maxlength="50" value="<?php echo $pais; ?>" /></p>
                <?php
                if($_POST) {
                $pais = $_POST['pais'];
                    if ($pais == "") {
                        echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
            }}?>


            <!--      ESTADO        -->
            <?php $estado = array_key_exists('estado', $_POST) ? $_POST['estado'] : ''; ?>
            <p><input type="text" name="estado" id="estado" placeholder="Estado" class="form-control input-md" maxlength="50" value="<?php echo $estado; ?>" /></p>
            <?php
            if($_POST) {
            $estado = $_POST['estado'];
                if ($estado == "") {
                echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
            }}?>


            <legend style="color:#fff">Social</legend>


            <!--      LOGIN        -->
            <?php $login = array_key_exists('login', $_POST) ? $_POST['login'] : ''; ?>
            <p><input type="text" name="login" id="login" placeholder="Login" class="form-control input-md" maxlength="15" value="<?php echo $login; ?>"/></p>
            <?php
            if($_POST) {
            $login = $_POST['login'];
                if ($login == "") {
                    echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
            }}?>        


            <!--      SENHA        -->
            <?php $senha = array_key_exists('senha', $_POST) ? $_POST['senha'] : ''; ?>
            <p><input type="password" name="senha" id="senha" placeholder="Senha" class="form-control input-md" value="<?php echo $senha; ?>"/></p>

            <?php
            if($_POST) {
            $senha = $_POST['senha'];
                if ($senha == "") {
                    echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
            }}?>


            <!--      RSENHA        -->
            <?php $rsenha = array_key_exists('rsenha', $_POST) ? $_POST['rsenha'] : ''; ?>
            <p><input type="password" name="rsenha" id="rsenha" placeholder="Confirme a Senha" class="form-control input-md" value="<?php echo $rsenha; ?>"/></p>
            <?php
            if($_POST) {
            $senha          = $_POST['senha'];
            $senhaConfirma  = $_POST['rsenha'];
                if ($senha == "") {
                    echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Campo não preenchido!</p>';
                } else if ($senha == $senhaConfirma) {                   
                } else {
                    echo '<p style="font-family: Microsoft JhengHei Light;color:#fff;"><strong style="color:#8E0303;">Aviso:</strong> Senha não confere!</p>';
                }              
            }
            ?>

            <script type="text/javascript">
                $(document).ready(function() {
                $('#rsenha').bind('cut copy paste', function(event) {
                event.preventDefault();
                }); 
             });
            </script>

            <p style="float:right;">

            <input type="submit" name="enviarCadastro" value="Cadastrar" class="form-control input-md" />

        </form>

Settings.php

    <?php
$pdo = new PDO("mysql:host=localhost;dbname=bd_winfo", "root", ""); 

?>

No error appears, just returns on Else as "Failure"

1 answer

1


session_start();
include_once("settings.php");

//Verifica se clicou no botão
$enviarCadastro=filter_input(INPUT_POST, 'enviarCadastro', FILTER_SANITIZE_STRING);
if($enviarCadastro){
    $nome = $_POST['nome'];
    $sobrenome = $_POST['sobrenome'];
    $data = $_POST['data'];
    $data_int = (int)$data;
    $cpf = $_POST['cpf'];
    $cpf_int = (int)$cpf;
    $email = $_POST['email'];
    $pais = $_POST['pais'];
    $estado = $_POST['estado'];
    $login = $_POST['login'];
    $senha = $_POST['senha'];
    $rsenha = $_POST['rsenha'];

    $inserir = $pdo->prepare("INSERT INTO cadastro(nome, sobrenome, data, cpf, email, pais, estado, login, senha, rsenha) VALUES (:nome, :sobrenome, :data, :cpf, :email, :pais, :estado, :login, :senha, :rsenha)");

    $inserir->bindParam(':nome', $nome, PDO::PARAM_STR, 50);
    $inserir->bindParam(':sobrenome', $sobrenome, PDO::PARAM_STR, 50);
    $inserir->bindParam(':data', $data_int, PDO::PARAM_INT, 50);
    $inserir->bindParam(':cpf', $cpf_int, PDO::PARAM_INT, 50);
    $inserir->bindParam(':email', $email, PDO::PARAM_STR, 50);
    $inserir->bindParam(':pais', $pais, PDO::PARAM_STR, 50);
    $inserir->bindParam(':estado', $estado, PDO::PARAM_STR, 50);
    $inserir->bindParam(':login', $login, PDO::PARAM_STR, 50);
    $inserir->bindParam(':senha', $senha, PDO::PARAM_STR, 50);
    $inserir->bindParam(':rsenha', $rsenha, PDO::PARAM_STR, 50);

    if($inserir->execute()){
        echo"Sucesso";
    }else{
        echo"Falha";
    }   
}else{
    //Dados Não enviado para o banco de dados
    $_SESSION ['NãoCadastrado'] = "Cadastro não realizado";
    header("Location: cadastro.php");
}
  • I added this command line and it’s still the same. Error on line: $insert->execute($Prepare data); In the case there is a Prepare data variable that would be the one of the array I did not post. I don’t know if an array is needed to insert into the database.

  • $Prepared = array( ':first name' => $first name, ':last name' => $last name, ':date' => $date, ':Cpf' => $cpf_int, ':data' => $data_int, ':email' => $email, ':parents' => $parents, ':status' => $status, ':password' => $password, ':rsenha' => $rsenha, );

  • This array has two indexes ":data" there is the problem, lacked login

  • It worked! Now no error appeared. I added an if($insert->execute($Preparadados)) to see if it is registering and not this one. I’ll edit to show the code.

  • Two problems: 1) You are running sql twice. 2) You must pass the array at run or use bindParam(), either

  • Personally I prefer to use bindParam(), so it is possible to pass the variable, the type and size, working as a further validation

  • If no error appeared on the screen, it was probably registered, take a look at the database by phpMyAdmin or Mysql Workbench

  • Deletes the array and refers to sql would be which line ?

  • I edited my answer with the full code

  • It wasn’t. Could it be the $insert line = $Pdo? because it’s double-quote, I don’t know if it has anything to do with it. Returns as Failed again.

  • The only difference between the quotes is that the double allows string interpolation. The variable $pdo has a valid connection? The error may be in the connection to the bank and not in the execution

  • Yes, this all ok, I even made a record in the database with a previous php page.

  • If it helps, I’ll post my form.

  • If everything is ok check the variable names and if they are arriving correctly (use var_dump($inserir)) also check data types and sizes (both in php and in the database)

  • I switched the date and Cpf values to scan the database and made the changes to the code for string and registered. Have any problem if I let register the numeric values as sweep ?

  • No way register as int....

  • Problem does not have, but may not be the most performatic, if you want to register as int should use bindParam(':cpf', $cpf_int, PDO::PARAM_INT);

Show 12 more comments

Browser other questions tagged

You are not signed in. Login or sign up in order to post.