2
I’m having trouble inserting data into my form. The problem involves the transaction mechanism of my form, displaying the error message of die
before you even load the page.
My advisor said the problem is because the code is running directly without any treatment. He also said that this would be solved by placing all the code inside a function, only calling it if the access method was POST
. For this, a test would be made, where it would be tested if the access method was GET
or POST
, if it is GET
would display the form normally, if it were POST
would be called the function that handles the register.
How this test of the access method would be done?
Follow the code that handles the registration 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();
}
?>
I did as follows: if($_SERVER["REQUEST_METHOD"] == "POST"){ register(); } Function register(){ /code that handles the records/ } But the page does not load, giving php error.
– Anderson Amorim
which error shows ?
– MagicHat
Well, I was not very specific in the error, actually the error occurs when I submit the form data, that is, tighten in registering. The error is HTTP ERROR 500.
– Anderson Amorim