I'm having trouble inserting data into my form. The problem involves the transaction engine of my form, displaying the error message of die
before even loading the page.
My advisor said that the problem occurs because the code is running directly without any processing. He also said that this would be solved by putting all the code inside a function, calling it only if the access method was POST
. For this, a test would be done, where it would be tested if the access method was GET
or POST
, if it was GET
would display the form normally, if it were POST
would call the function that deals with the registry. / p>
How would this test of the access method be done?
Follow the code that deals with the registration in the forms:
<?php
//CONEXÃO COM O BANCO DE DADOS
include_once("conexao.php");
function cadastrar(){
//VARIÁVEIS COM DADOS DO FORMULÁRIO
$nome = $_POST["nome"];
$email = $_POST["email"];
$senha = $_POST["senha"];
$senhaConfirm = $_POST["senhaConfirm"];
$telefone = $_POST["telefone"];
$celular = $_POST["celular"];
$rua = $_POST["rua"];
$bairro = $_POST["bairro"];
$numero = $_POST["numero"];
$cidade = $_POST["cidade"];
$estado = $_POST["estado"];
$cep = $_POST["cep"];
$complemento = $_POST["complemento"];
$usuario = $_POST["usuario"];
$nomeMercado = $_POST["nomeMercado"];
$cnpj = $_POST["cnpj"];
$telefoneMercado = $_POST["telefoneMercado"];
$celularMercado = $_POST["celularMercado"];
$expedienteInicio = $_POST["expedienteInicio"];
$expedienteFim = $_POST["expedienteFim"];
$arquivo = $_POST["arquivo"];
//INICIO DA TRANSAÇÃO
$pdo->beginTransaction();
//INSERÇÃO DE DADOS NA TABELA ENDEREÇO
$insertEndereco = $pdo->prepare("INSERT INTO ENDERECO(BAIRRO, CEP, CIDADE, COMPLEMENTO, ESTADO, NUMERO, RUA) VALUES(:bairro, :cep, :cidade, :complemento, :estado, :numero, :rua)");
$insertEndereco->bindValue(':bairro',$bairro);
$insertEndereco->bindValue(':cep',$cep);
$insertEndereco->bindValue(':cidade',$cidade);
$insertEndereco->bindValue(':complemento',$complemento);
$insertEndereco->bindValue(':estado',$estado);
$insertEndereco->bindValue(':numero',$numero);
$insertEndereco->bindValue(':rua',$rua);
$testaInsertEndereco = $insertEndereco->execute();
//VERIFICA SE A INSERÇÃO DE DADOS DE ENDEREÇO RETORNA TRUE(FOI REALIZADA)
if (!$testaInsertEndereco) {
die("Oops, houve um erro no cadastro de seu endereço, tente novamente ou contacte a adaministração.");
}
$cod_endereco = $pdo->lastInsertId();
//INSERÇÃO DE DADOS NA TABELA USUARIO
$insertUsuario = $pdo->prepare("INSERT INTO USUARIO(TIPO_USUARIO, NOME_USUARIO, E-MAIL_USUARIO, SENHA_USUARIO, CELULAR, COD_ENDERECO, TELEFONE) VALUES (:usuario,:nome,:email,:senha,:celular,:cod_endereco,:telefone)");
$insertUsuario->bindValue(':usuario',$usuario);
$insertUsuario->bindValue(':nome',$nome);
$insertUsuario->bindValue(':email',$email);
$insertUsuario->bindValue(':senha',$senha);
$insertUsuario->bindValue(':celular',$celular);
$insertUsuario->bindValue(':cod_endereco',$cod_endereco);
$insertUsuario->bindValue(':telefone',$telefone);
$testaInsertUsuario = $insertUsuario->execute();
if (!$testaInsertUsuario) {
die("Oops, houve um erro no cadastro de seus dados pessoais, tente novamente ou contacte a adaministração.");
}
$cod_usuario = $pdo->lastInsertId();
//INSERÇÃO DE DADOS NA TABELA SUPERMERCADO
$insertMercado = $pdo->prepare("INSERT INTO SUPERMERCADO (CNPJ, NOME, FOTO_SUPERMERCADO, INICIO_EXPEDIENTE,
FIM_EXPEDIENTE, TELEFONE) VALUES (:cod_endereco_mercado, :cod_usuario, :cnpj, :nomeMercado, :arquivo, :expedienteInicio, :expedienteFim, :$telefoneMercado)");
$insertMercado->bindValue(':cod_endereco_mercado',$cod_endereco);
$insertMercado->bindValue(':cod_usuario',$cod_usuario);
$insertMercado->bindValue(':cnpj',$cnpj);
$insertMercado->bindValue(':nomeMercado',$nomeMercado);
$insertMercado->bindValue(':arquivo',$arquivo);
$insertMercado->bindValue(':expedienteInicio',$expedienteInicio);
$insertMercado->bindValue(':expedienteFim',$expedienteFim);
$insertMercado->bindValue(':telefoneMercado',$telefoneMercado);
$testaInsertMercado = $insertMercado->execute();
//CASO TENHA DADO ALGUM ERRO NA TRANSAÇÃO rollBack IRÁ CANCELAR TODAS ELAS
if (!$testaInsertMercado) {
die("Oops, houve um erro no cadastro de seu mercado, tente novamente ou contacte a adaministração.");
$pdo->rollBack();
}
//FINALIZANDO TRANSAÇÃO
$pdo->commit();
}
?>