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.