Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RenanMonteiro

[Resolvido] Sistema de cadastro automatico

Recommended Posts

Quero fazer um sistema como esse:

http://upimpressao.com.br/midias/esquema-cadastro.jpg

Mas não sei nem por onde começar rs.

Eu até consigo fazer com que o formulário fique poste em outra página, mas pegar os dados e mandar pro MySql com um botão Enviar eu não sei!

Se alguém souber, por favor, da uma dica ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara isso é o simples do PHP + MySQL.

Vai no laboratório de Scripts, tem exemplo de Inserção, Exclusão e Edição de Dados no MySQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa... como o amigo Go Back disse isso é uma dúvida básica. Vou postar um pequeno exemplo aqui:

 

<?php
//faz a conexão com o banco de dados
include '../conC.php';

//verifica se a página está sendo acessada via post, se não cancela o envio
if($_SERVER['REQUEST_METHOD'] == "POST"){

//recebe os dados do formulário e trasnforma em variaveis
$nome = $_POST['nome'];
$email = $_POST['email'];
$sexo = $_POST['sexo'];
$telefone = $_POST['telefone'];

//linha que faz a query e verifica se tudo deu certo	
if(@mysql_query("INSERT INTO cadastro VALUES (NULL, '$nome', '$email', '$sexo', '$telefone')")){

	if(mysql_affected_rows() == 1){

		echo "Cadastro feito com suceso!" . "<br />";
		echo "<a href=\"index.php\">Voltar</a>";

	} else {

		echo "Algo deu errado, tente novamente" . "<br />";
		echo "<a href=\"index.php\">Voltar</a>";

	}

} 
} else {
echo "Algo deu errado, tente novamente" . "<br />";
echo "<a href=\"index.php\">Voltar</a>";

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, agradeço a ajuda, mas acho que expliquei errado, haha.

Cadastrar atraves de formulario pro banco de dados é batata, eu sei fazer rs.

Mas quero que ao postar no formulario, os dados vão para uma pagina, no caso o painel de controle, pra eu mediar que vai ser cadastrado ou não,

vai ter uma página com varios usuários com pedidos de cadastro, se eu apertar cadastrar, eles vão para o banco de dados, se não, eles são descartados, entenderam?

Isso acho que não é tão simples... A propósito, adorei o código do Beto, até coloquei mudei um sistema meu a linha de verificação de POST, muito boa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas, para que os usuários apareçam todos em uma página para você poder liberar eles já devem estar cadastrados no banco não é?

 

Se não como você vai recuperar as informações?

 

O jeito mais fácil, eu acho que é você deixar o cadastro liberado, mas colocar permissão para o usuário

 

Na sua tabela crie um campo permissao do tipo SET('0','1') se a o status for 1 ele está liberado.

 

Dai para mudar o status é só você dar um update no usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

exatamente Beto A., eu tava pensando em fazer uma tabela só pra guardar essas informações de usuários pendentes, e depois mandar os dados de uma tabela para outra, mas acho que não ficaria bom esse esquema... Boa sua ideia, só pra confimar. Quando faz o cadastro já vai pro banco de dados mas com o valor padrão de cadastrar = 0;

Ai na tela de painel aparecerá todos que estão com 0, se eu confirmar eles mudam pra = 1 e o usuário é cadastrado né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso Renan

 

Pelo menos é a forma como eu faria.

 

Ai todas as operações que for fazer com o usuário liberado você coloca como cláusula o 1, por exemplo, um usuário só pode logar se seu status for = 1.

 

Acho que ficaria mais simples do que realizar um pré-cadastro

 

Essa foi uma dúvida interessante. Quando eu tiver um tempinho aqui a tarde ou a noite vou montar um pra ver como fica.

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, de um update no usuário.

 

Acho que a melhor forma é usando Ajax, mas eu não lido com ele ainda, to aprendendo...

 

 

Então eu mandaria os dados do usuário para uma outra página onde eu faria o update do campo status.

 

Se alguem tiver uma sugestão melhor para isso eu gostaria muito de saber ^_^

 

 

Por nada, Renan... estamos ai para ajudar, e ser ajudados :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

desnecessário usar ajax.

 

faça o projeto sem ajax, se você quiser melhorar a experiencia do usuario, ai sim aplique ajax.

mas não resolvam com ajax, não é essa a intenção.

 

a tua dúvida é com php+html, não vamos colocar ajax agora, até que você consiga fazer oque você quer.

 

simples.

 

embaixo da listagem será um formulario com campos hidden

qndo clicar no cadastrar, você roda um UPDATE na tabela(envio do formulario, submit), setando o campo lá `liberar`, onde o id, é a informação do id do cara, que você guardou no hidden.

pronto, só isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi william, teria como você me mostrar esse código do botão na prática?

Vão aparecer vários usuários na mesma página... acho que alguma coisa muda né?

Tipo, um formulário para cada um que tiver...

Outra coisa. O Beto Disse pra colocar no MySQL SET no campo 'permicao'. Por que o SET é adequado nessa ocasião?

Compartilhar este post


Link para o post
Compartilhar em outros sites

leia e tente fazer:

 

embaixo da listagem será um formulario com campos hidden

qndo clicar no cadastrar, você roda um UPDATE na tabela(envio do formulario, submit), setando o campo lá `liberar`, onde o id, é a informação do id do cara, que você guardou no hidden.

pronto, só isso.

é um <form> que depois de enviado, roda uma query de UPDATE. Só isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Renan

 

É de extrema importância definir corretamente qual o tipo de dados um campo no DB vai armazenar.

 

Por exemplo usar campos do tipo Date para datas e int para dados númericos.

Leia esse post do Fabyo, ele vai esclarecer muita coisa sobre o banco de dados:

 

 

http://forum.imasters.com.br/topic/191441-escolhendo-um-tipo-de-campo-correto/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, demorou mais consegui fazer... esses dois dias foram tensos aqui na loja...

 

segue o código:

 

A tabela do banco:

 

CREATE TABLE `cadastro` (
 `id_cadastro` int(11) NOT NULL auto_increment,
 `nome` varchar(45) NOT NULL,
 `mail` varchar(60) NOT NULL,
 `pass` varchar(32) NOT NULL,
 `status` set('0','1') NOT NULL default '0',
 PRIMARY KEY  (`id_cadastro`)
) ENGINE=InnoDB 

 

O formulário que os usuários usam para se cadastrar no meu caso, index.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cadastro de Usuário</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="cad_usuario.php">
 <p>Nome:
   <input type="text" name="nome" id="nome" accesskey="n" tabindex="1" />
</p>
 <p>E-mail:
   <input type="text" name="mail" id="mail" accesskey="m" tabindex="2" />
 </p>
 <p>Senha:
   <input type="text" name="pass" id="pass" accesskey="p" tabindex="3" />
 </p>
 <p>
   <input type="submit" name="btn_cadastrar" id="btn_cadastrar" value="Cadastrar" accesskey="b" tabindex="4" />
</p>
</form>
</body>
</html>

 

O arquivo que faz o cadastro do usuário, cad_usuario.php:

 

<?php

include("conC.php");
//função básica anti sql inject
function anti_inject($str){
$str = mysql_real_escape_string($str);
$str = strip_tags($str);
$str = trim($str);
return $str;	
}

//verifico se recebo a página via post
if($_SERVER['REQUEST_METHOD'] == "POST"){
	//verifico se todos os dados foram preenchidos
	if(empty($_POST['nome']) or empty($_POST['pass']) or empty($_POST['mail'])){
			header("Location: index.php");
			exit;
	} else {

		$nome = anti_inject($_POST['nome']);
		$mail = anti_inject($_POST['mail']);
		$pass = anti_inject(md5($_POST['pass']));
		//aqui eu faço o insert do usuário já setando o status dele como 0, que seria não autorizado
		if(@mysql_query("INSERT INTO cadastro VALUES (NULL, '$nome', '$mail', '$pass', '0')") or die(mysql_error())){

			if(mysql_affected_rows() == 1){
			 	echo "Cadastro realizado com sucesso<br />";
				echo "<a href='index.php'>Voltar</a>";
				exit;
			} else {
				echo "Algum erro ocorreu, tente novamente";
				echo "<a href='index.php'>Voltar</a>";
				exit;
			}

		}
	}

} else {
	echo "Você não pode acessar esse arquivo diretamente<br />";
	echo "<a href='index.php'>Voltar</a>";
	exit;
}

 

O arquivo que lista os usuários que estão com a aprovação pendente, vis_usuarios.php:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Aprovar Usuários</title>
</head>

<body>
<?php
include("conC.php");

$status = '0';

$sql = "SELECT * FROM cadastro WHERE status = '$status'";
$consulta = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($consulta) == 0){
	echo "Não existem usuários pendentes";
	exit;
} else {

	while($row = mysql_fetch_array($consulta)){
		echo "Usuário: " . $row['nome'] . " email: " . $row['email'] . " está com aprovação pendente" . "<br />";
		echo '<form id="autorizar" name="autorizar" method="post" action="libera_usuario.php">';
		echo '<input name="id" id="id" type="hidden" value=" ' . $row["id_cadastro"] . ' " />';
		echo '<input type="submit" name="btn_cadastrar" id="btn_cadastrar" value="Liberar" accesskey="b" tabindex="4" /><br /><br />';
		echo '</form>';
	}

}

?>
</body>
</html>

 

O arquivo que faz o update do usuario, libera_usuario.php:

 

<?php

include("conC.php");

if($_SERVER['REQUEST_METHOD'] == "POST"){

	if(empty($_POST['id'])){

		echo "O ID não pode ser nulo";
		echo "<a href='index.php'>Voltar</a>";

	} else {

		$id_cadastro = $_POST['id'];

		$sql = "UPDATE `testes`.`cadastro` SET `status` = '1' WHERE `cadastro`.`id_cadastro` = '$id_cadastro' LIMIT 1 ";
		$resultado = mysql_query($sql) or die(mysql_error());

		if(mysql_affected_rows() == 1){
			echo "Usuário liberado com sucesso<br ?>";
			echo "<a href='vis_usuarios.php'>Voltar</a>";
		}

	}

} else {
	echo "Você não pode acessar esse arquivo diretamente<br />";
	echo "<a href='index.php'>Voltar</a>";
}

 

E é isso... agora para melhorar a experiencia do usuário é só aplicar ajax ou o que seja :)

 

Aqui funcionou direitinho xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

AAAAAH maravilha! :clap:

obrigado mesmo Beto, seu código funcionou perfeitamente, além de ser levinho e simples de se entender, poderia até transformar o tópico em tutorial rs.

Gostei da função anti sql inject, agora coloquei em todas as páginas parecidas com essa. Obrigado mesmo, abraço. Te devo uma, haha :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.