Formulario + PHP para gravar no MySql
25/09/2014
0
Mais uma vez venho recorrer a ajuda aqui no fórum. Seguinte, Tenho um Formulário pra cadastrar dados no MySql, qual seria o melhor jeito de enviar para MySql. O PHP na mesma pagina do Formulário?? Ou o PHP em outra pagina enviando os dados via post e depois do insert retorno para o form com a mensagem de erro ou sucesso!
Pergunto? Qual melhor forma para fazer isso? to no caminho certo??!
Abaixo parte do codigo php do INSERT, DELETE E UPDATE
Arquivo CRUD_FORM.php
<?php // RECEBE VARIAVEIS NESCESSARIAS if(isset($_GET['id'])){ $id = "$_GET[id]"; } // ACOES DE CRUD - TBCLINICAS // INSERT if (isset($_POST['acao']) && ($_POST['acao'] == 'insert')){ try { $cnpjMask = preg_replace("/\D+/", "", $_POST['cnpj']); // remove qualquer caracter não numérico $InsertClinica=$pdo->prepare("INSERT INTO tbclinicas(cnpj, nome, regra, status)VALUES(:cnpj, :nome, :regra, :status)"); $InsertClinica->bindValue(":cnpj",$cnpjMask, PDO::PARAM_INT); $InsertClinica->bindValue(":nome",$_POST['nome'], PDO::PARAM_STR); $InsertClinica->bindValue(":regra",$_POST['regra'], PDO::PARAM_STR); $InsertClinica->bindValue(":status","S", PDO::PARAM_STR); $InsertClinica->execute(); $sucesso = ''; echo""; } catch(PDOException $e) { $error = ''; echo""; } }; // READ // READ //UPDATE if (isset($_POST['acao']) && ($_POST['acao'] == 'update')){ try { $cnpjMask = preg_replace("/\D+/", "", $_POST['cnpj']); // remove qualquer caracter não numérico $UptClinica=$pdo->prepare("UPDATE tbclinicas SET cnpj=:cnpj, nome=:nome, regra=:regra WHERE id=:id"); $UptClinica->bindValue(":id", $id, PDO::PARAM_INT); $UptClinica->bindValue(":cnpj",$cnpjMask, PDO::PARAM_INT); $UptClinica->bindValue(":nome",$_POST['nome'], PDO::PARAM_STR); $UptClinica->bindValue(":regra",$_POST['regra'], PDO::PARAM_STR); $UptClinica->execute(); $sucesso = ''; echo""; } catch(PDOException $e) { $error = ''; echo""; } }; // DELETE if (isset($_GET['acao']) && ($_GET['acao'] == 'delete')){ try { $DelClinica=$pdo->prepare("DELETE FROM tbclinicas WHERE id=:id"); $DelClinica->bindValue(":id",$id, PDO::PARAM_INT); $DelClinica->execute(); $sucesso = ''; echo""; } catch(PDOException $e) { $error = ''; echo""; } }; ?>
Agradeço de já a atenção de todos!!
Lucas Azevedo
Posts
25/09/2014
Wander Santos
23/10/2014
Fernando Blomer
Cara acho que você está no caminho certo sim. Eu sempre separo formulários de classes e depois retorno a informação ao formulário.
Em minhas classes de CRUD eu faço da seguinte maneira:
function cadastraDado($nome) { global $banco; $sql = "INSERT INTO setor (nome) VALUES ('$nome')"; $resultado = $banco->Execute($sql); if(!$resultado){ return "erro"; }else{ return ""; } }
No arquivo com o formulário faço um formulário normal, porem sem nada no action. Desta forma redireciono o formulário para a mesma página.
<form action="" method="post">
ainda na página do formulário tem o seguinte código que chama e executa meu CRUD e mostra a resposta.
if(isset($_POST['nome']) && $_POST['nome'] != ''){ include('class/dadosSetor.class.php'); $class_dados = new dadosSetor; $class_dados->dados(); $resultado = $class_dados->cadastraDado($_POST['nome']); if(isset($resultado) && $resultado == 'erro'){ //Mensagem de erro }elseif(isset($resultado) && $resultado == ''){ //Mensagem de sucesso } }
Espero ter ajudado.
23/10/2014
Ronaldo Lanhellas
Enfim, resumidamente: Você tem que ter seu formulário de cadastro, que passa as informações via POST para uma classe PHP que realizará o tratamento necessário com os dados (sem fazer nada com o banco) e por fim você passa os dados tratados para uma outra classe que irá inserir,deletar,alterar ou remover esses registros.
Fazendo da forma que você está fazendo hoje você tornar-se dependente de uma visualização em HTML, modularizando seu projeto você pode a qualquer hora mudar a interface do seu projeto sem interferir na lógica do sistema.
Clique aqui para fazer login e interagir na Comunidade :)