Array
(
)

Formulario + PHP para gravar no MySql

Lucas Azevedo
   - 25 set 2014

Galera,
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
#Código<?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!!

Wander :)
   - 25 set 2014

As duas opçoes sao validas. Te falar a verdade qual opcao é melhor é dificil

Fernando Blomer
   - 23 out 2014

Fala Lucas,
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:

#Código
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.
#Código<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.
#Código
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.

Ronaldo Lanhellas
   - 23 out 2014

Discordando dos comentários acima, você está fazendo da forma errada, se quiser seguir uma boa prática de projeto. Primeiramente você deve estudar como funciona uma arquitetura MVC e entenderá que há divisões entre Formulário, Regra de Negócios e CRUD no banco. Estude um pouco sobre DAO (Data Access Object).

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.