Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal to dando continuidade nos tutoriais para iniciantes e esse aqui é para quem ja leu:
http://forum.imasters.com.br/index.php?showtopic=191441
Esse tutorial é para usuarios iniciantes que estao começando agora e querem aprender a mecher com PHP e banco de dados, sei que é dificil achar um tutorial bem mastigado assim, e falta exemplos completos no manual do php, e as vezes a pessoa acaba pegando um script pronto mas nao entende muito e o pior a maioria das vezes o sistema esta mal feito assim o usuario acaba aprendendo errado pensando que é o certo.
esse tutorial é bem basico, e criei como exemplo 2 tabelas uma para usuario e outra para estados
e é mais para você aprender mesmo , acabei criando varias funções que ficaram mais para aprendizado do que funcional, mas a ideia é você entender como as coisas funcionam
com esse sistema você vai aprender:
* Listar os dados de um banco de dados
* Salvar dados do formulario para banco de dados
* Excluir dados do banco
* Editar dados do banco
* Carregar um combobox(select do html) com dados vindos do banco de dados
* Validações especiais para deixar o php funcionando 100% sem erros
* Varios macetes e dicas de uso em sistemas com o uso de um arquivo de verificações basicas o init.php
>
OBS Esse sistema esta puro em PHP nao me preocupei com nenhuma validação em javascriptpara isso voce pode acessar o forum de javascript e tirar as duvidas sobre validações de formulario
e tambem nao me preocupei com validações de dados vindos do formulario, pois eu estou planejando fazer um tutorial só para isso, para validações em php com filtros e segurança de dados
tabela.sql
CREATE TABLE usuarios (
id_usuario SMALLINT ( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR ( 45 ) NOT NULL,
email VARCHAR ( 64 ) NOT NULL UNIQUE,
data_nascimento DATE NOT NULL,
sexo ENUM ( 'M', 'F' ) NOT NULL,
preferencias SET ( 'R', 'S', 'P', 'F' ) NOT NULL COMMENT 'R=Romance;S=Suspense;P=Policial;F=Ficção',
salario DECIMAL ( 10,2 ) NOT NULL,
endereco VARCHAR ( 30 ) NOT NULL,
bairro VARCHAR ( 20 ) NOT NULL,
cidade VARCHAR ( 45 ) NOT NULL,
fk_estado SMALLINT ( 5 ) UNSIGNED NOT NULL,
login VARCHAR ( 40 ) NOT NULL,
senha CHAR ( 32 ) NOT NULL
);
CREATE TABLE estados ();
INSERT INTO estados VALUES ( NULL , "AC", "Acre");
INSERT INTO estados VALUES ( NULL , "AL", "Alagoas");
INSERT INTO estados VALUES ( NULL , "AP", "Amapá");
INSERT INTO estados VALUES ( NULL , "AM", "Amazonas");
INSERT INTO estados VALUES ( NULL , "BA", "Bahia");
INSERT INTO estados VALUES ( NULL , "CE", "Ceará");
INSERT INTO estados VALUES ( NULL , "DF", "Distrito Federal");
INSERT INTO estados VALUES ( NULL , "ES", "Espirito Santo");
INSERT INTO estados VALUES ( NULL , "GO", "Goiás");
INSERT INTO estados VALUES ( NULL , "MA", "Maranhão");
INSERT INTO estados VALUES ( NULL , "MT", "Mato Grosso");
INSERT INTO estados VALUES ( NULL , "MS", "Mato Grosso do Sul");
INSERT INTO estados VALUES ( NULL , "MG", "Minas Gerais");
INSERT INTO estados VALUES ( NULL , "PA", "Pará");
INSERT INTO estados VALUES ( NULL , "PB", "Paraíba");
INSERT INTO estados VALUES ( NULL , "PR", "Paraná");
INSERT INTO estados VALUES ( NULL , "PE", "Pernambuco");
INSERT INTO estados VALUES ( NULL , "PI", "Piauí");
INSERT INTO estados VALUES ( NULL , "RN", "Rio Grande do Norte");
INSERT INTO estados VALUES ( NULL , "RS", "Rio Grande do Sul");
INSERT INTO estados VALUES ( NULL , "RJ", "Rio de Janeiro");
INSERT INTO estados VALUES ( NULL , "RO", "Rondônia");
INSERT INTO estados VALUES ( NULL , "RR", "Roraima");
INSERT INTO estados VALUES ( NULL , "SC", "Santa Catarina");
INSERT INTO estados VALUES ( NULL , "SP", "São Paulo");
INSERT INTO estados VALUES ( NULL , "SE", "Sergipe");
INSERT INTO estados VALUES ( NULL , "TO", "Tocantins"); </div>
como podem ver é uma tabela apenas para podermos usar no sistema, sao coisas ficticias que usei apenas para passar exemplos uteis de varios campos no banco de dados, talves o unico campo que você nao saiba para que serve nessa tabela é o "preferencias", esse preferencia é para o usuario escolher qual tipo de filme ele gosta, usei esse exemplo para você entender como usar o campo SET() do mysql
pessoal eu nao faço codigos html fora do padrao, e todos meus codigos sao valido pelo W3C, mas eu nao me preocupei em deixar os codigos validos pois a ideia é passar mais informação sobre o sistema de cadastro, e se eu for me preoculpar com tudo isso eu nunca iria postar esse tutorial, pois meu tempo anda curto demais.
index.html:
<a href="cadastro.php">Cadastrar Usuarios</a><br />
<a href="listar.php">Listar Usuarios</a>
cadastro.php
<?php
//Verifico se o arquivo existe
if(file_exists("init.php")) {
require "init.php";
} else {
echo "Arquivo init.php nao foi encontrado";
exit;
}if(!function_exists("Abre_Conexao")) {
echo "Erro o arquivo init.php foi auterado, nao existe a função Abre_Conexao";
exit;
}
Abre_Conexao();
$re = mysql_query("select * from estados order by estado"); echo "Erro o arquivo init.php foi auterado, nao existe \$erros";
exit;
}
echo $erros[mysql_errno()];
exit;
}
?><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Cadastro</title>
<style></style>
</head>
<body>
<form id="form1" name="form1" method="post" action="salvar.php">
<table width="400" border="0" align="center">
<tr>
<td width="145">Nome</td>
<td width="245"><input name="nome" type="text" id="nome" maxlength="45" class="textBox" /></td>
</tr>
<tr>
<td>Email</td>
<td><input name="email" type="text" id="email" maxlength="64" class="textBox" /></td>
</tr>
<tr>
<td>Data Nascimento</td>
<td>
<?php
/*aqui eu criei uma função para montar o combo para mim, na propria função a seguir eu explico como ela funciona*/
echo monta_select("dia", 1, 31);
echo monta_select("mes", 1, 12);
echo monta_select("ano", 1940, 1988);
?>
</td>
</tr>
<tr>
<td>Sexo</td>
<td><input name="sexo" type="radio" value="M" checked="checked" /><label>Masculino</label>
<input name="sexo" type="radio" value="F" /> <label>Feminino</label></td>
</tr>
<tr>
<td>Preferencias de Filmes </td>
<td><select name="preferencias[]" class="textBox" multiple="multiple" id="preferencias">
<option value="R">Romance</option>
<option value="S">Suspense</option>
<option value="P">Policial</option>
<option value="F">Ficção</option>
</select>
</td>
</tr>
<tr>
<td>Salario</td>
<td><input name="salario" type="text" id="salario" maxlength="5" class="textBox" /></td>
</tr>
<tr>
<td>Endereco</td>
<td><input name="endereco" type="text" id="endereco" maxlength="30" class="textBox" /></td>
</tr>
<tr>
<td>Bairro</td>
<td><input name="bairro" type="text" id="bairro" maxlength="20" class="textBox" /></td>
</tr>
<tr>
<td>Cidade</td>
<td><input name="cidade" type="text" id="cidade" maxlength="45" class="textBox" /></td>
</tr>
<tr>
<td>Estado</td>
<td><select name="estados" id="estados" class="textBox" >
<?php$id = $l["id_estado"];
$estado = $l["estado"];
$uf = $l["uf"];
echo "<option value=\"$id\">$uf - $estado</option>\n";
}@mysql_close();
?>
</select> </td>
</tr>
<tr>
<td>Login</td>
<td><input name="login" type="text" id="login" maxlength="40" class="textBox" /></td>
</tr>
<tr>
<td>Senha</td>
<td><input name="senha" type="password" id="senha" maxlength="10" class="textBox" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="Salvar" style="cursor:pointer;" /></td>
</tr>
</table>
</form>
</body>
</html></div>
salvar.php
<?php
/*verifico se os dados estao vindos do formulario, porque se uma pessoa acessar essa pagina diretamente
poderia dar erro, entao eu testo antes*/
if($_SERVER["REQUEST_METHOD"] == "POST") {
$nome = $_POST["nome"];
$email = $_POST["email"];
$data = "{$_POST["ano"]}-{$_POST["mes"]}-{$_POST["dia"]}";
$sexo = $_POST["sexo"];$preferencias = isset($_POST["preferencias"]) ? implode(",", $_POST["preferencias"]) : "";
$salario = $_POST["salario"];
$endereco = $_POST["endereco"];
$bairro = $_POST["bairro"];
$cidade = $_POST["cidade"];
$estados = $_POST["estados"];
$login = $_POST["login"];
$senha = $_POST["senha"];
//aqui ja expliquei, mas denovo: ele verifica se o arquivo existe
if(file_exists("init.php")) {
require "init.php";
} else {
echo "Arquivo init.php nao foi encontrado";
exit;
}if(!function_exists("Abre_Conexao")) {
echo "Erro o arquivo init.php foi auterado, nao existe a função Abre_Conexao";
exit;
}
Abre_Conexao();
if(@mysql_query("INSERT INTO usuarios VALUES ( NULL , '$nome', '$email', '$data' , '$sexo', echo "Registro efetuado com sucesso<br />";
}
} else {
//verifico se nao estao tentando gravar um dado que ja existe, pois usei UNIQUE na tabela
if(mysql_errno() == 1062) {
echo $erros[mysql_errno()];
exit; echo "Erro nao foi possivel efetuar o cadastro";
exit;
}
@mysql_close();
}
}
?>
<a href="index.html">Voltar</a>
listar.php
<a href="index.html">Voltar</a>
<?php
if(file_exists("init.php")) {
require "init.php";
} else {
echo "Arquivo init.php nao foi encontrado";
exit;
}
if(!function_exists("Abre_Conexao")) {
echo "Erro o arquivo init.php foi auterado, nao existe a função Abre_Conexao";
exit;
}
Abre_Conexao();
$re = mysql_query("SELECT * FROM usuarios INNER JOIN estados ON usuarios.fk_estado = estados.id_estado ORDER BY usuarios.nome;");
if(mysql_errno() != 0) {
if(!isset($erros)) {
echo "Erro o arquivo init.php foi auterado, nao existe $erros";
exit;
}
echo $erros[mysql_errno()];
exit;
}
?>
<table width="100%" border="1">
<tr>
<td>Ações</td>
<td>Nome</td>
<td>Email</td>
<td>Data Nasc.</td>
<td>Sexo</td>
<td>Preferencias</td>
<td>salario</td>
<td>Endereço</td>
<td>Bairro</td>
<td>Cidade</td>
<td>Estado</td>
<td>Login</td>
</tr>
<?php
while($l = mysql_fetch_array($re)) {
$id = $l["id_usuario"];
$nome = $l["nome"];
$email = $l["email"];
$data = implode("/", array_reverse(explode("-", $l["data_nascimento"])));
$sexo = $l["sexo"] == "M" ? "Masculino" : "Feminino";
$preferencia = Pega_Preferencia($l["preferencias"]);
$salario = $l["salario"];
$endereco = $l["endereco"];
$bairro = $l["bairro"];
$cidade = $l["cidade"];
$estado = $l["estado"];
$login = $l["login"];
echo "
<tr>
<td><a href=\"editar.php?id=$id\">[Editar]</a> <a href=\"excluir.php?id=$id\">[Excluir]</a></td>
<td> $nome</td>
<td> $email</td>
<td> $data</td>
<td> $sexo</td>
<td> ". monta_combo($preferencia). "</td>
<td> ". number_format($salario, 2, ",", "."). "</td>
<td> $endereco</td>
<td> $bairro</td>
<td> $cidade</td>
<td> $estado</td>
<td> $login</td>
</tr>\n";
}
@mysql_close();
?>
</table>
editar.php
<?php
if(file_exists("init.php")) {
require "init.php";
} else {
echo "Arquivo init.php nao foi encontrado";
exit;
}
if(!function_exists("Abre_Conexao")) {
echo "Erro o arquivo init.php foi auterado, nao existe a função Abre_Conexao";
exit;
}
$id = $_GET["id"];
Abre_Conexao();
$re = mysql_query("select count(*) as total from usuarios where id_usuario = $id");
$total = mysql_result($re, 0, "total");
if($total == 1) {
$re = mysql_query("select * from usuarios, estados where estados.id_estado = usuarios.fk_estado and usuarios.id_usuario = $id");
$dados = mysql_fetch_array($re);
}
?><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Cadastro</title>
<style></style>
</head>
<body>
<form id="form1" name="form1" method="post" action="salvar_edicao.php">
<input type="hidden" name="id" value="<?php echo $id; ?>" />
<table width="400" border="0" align="center">
<tr>
<td width="145">Nome</td>
<td width="245"><input name="nome" type="text" id="nome" maxlength="45" class="textBox" value="<?php echo $dados["nome"]; ?>" /></td>
</tr>
<tr>
<td>Email</td>
<td><input name="email" type="text" id="email" maxlength="64" class="textBox" value="<?php echo $dados["email"]; ?>" /></td>
</tr>
<tr>
<td>Data Nascimento</td>
<td>
<?php
$arr = explode("-", $dados["data_nascimento"]);
echo Seleciona_Item($arr[2], monta_select("dia", 1, 31));
echo Seleciona_Item($arr[1], monta_select("mes", 1, 12));
echo Seleciona_Item($arr[0], monta_select("ano", 1940, 1988));
?>
</td>
</tr>
<tr>
<td>Sexo</td>
<td><input name="sexo" type="radio" value="M" <?php echo $dados["sexo"] == "M" ? "checked=\"checked\"" : ""; ?> /><label>Masculino</label>
<input name="sexo" type="radio" value="F" <?php echo $dados["sexo"] == "F" ? "checked=\"checked\"" : ""; ?> /> <label>Feminino</label></td>
</tr>
<tr>
<td>Preferencias de Filmes </td>
<td><select name="preferencias[]" class="textBox" multiple="multiple" id="preferencias">
<?php
$combo = "<option value=\"R\">Romance</option>
<option value=\"S\">Suspense</option>
<option value=\"P\">Policial</option>
<option value=\"F\">Ficção</option>";
$arr = explode(",", $dados["preferencias"]);$combo = preg_replace("#<option value=\"{$arr[$i]}\">#is", "<option value=\"{$arr[$i]}\" selected=\"selected\">", $combo);
}
echo $combo;
?>
</select>
</td>
</tr>
<tr>
<td>Salario</td>
<td><input name="salario" type="text" id="salario" maxlength="5" class="textBox" /></td>
</tr>
<tr>
<td>Endereco</td>
<td><input name="endereco" type="text" id="endereco" maxlength="30" class="textBox" /></td>
</tr>
<tr>
<td>Bairro</td>
<td><input name="bairro" type="text" id="bairro" maxlength="20" class="textBox" /></td>
</tr>
<tr>
<td>Cidade</td>
<td><input name="cidade" type="text" id="cidade" maxlength="45" class="textBox" /></td>
</tr>
<tr>
<td>Estado</td>
<td><select name="estados" id="estados" class="textBox" >
<option value="0">Selecione</option>
<?php
$re = mysql_query("select * from estados order by estado"); echo "Erro o arquivo init.php foi auterado, nao existe $erros";
exit;
}
echo $erros[mysql_errno()];
exit;
}$id = $l["id_estado"];
$estado = $l["estado"];
$uf = $l["uf"];
echo Seleciona_Item($dados["id_estado"], "<option value=\"$id\">$uf - $estado</option>");
}
@mysql_close();
?>
</select> </td>
</tr>
<tr>
<td>Login</td>
<td><input name="login" type="text" id="login" maxlength="40" class="textBox" /></td>
</tr>
<tr>
<td>Senha</td>
<td><input name="senha" type="password" id="senha" maxlength="10" class="textBox" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="Salvar" style="cursor:pointer;" /></td>
</tr>
</table>
</form>
</body>
</html>
excluir.php
<?php
if($_SERVER["REQUEST_METHOD"] == "GET") {
if(file_exists("init.php")) {
require "init.php";
} else {
echo "Arquivo init.php nao foi encontrado";
exit;
}
if(!function_exists("Abre_Conexao")) {
echo "Erro o arquivo init.php foi auterado, nao existe a função Abre_Conexao";
exit;
}
$id = $_GET["id"];
Abre_Conexao();
if(mysql_query("delete from usuarios where id_usuario = $id")) {
if(mysql_affected_rows() == 1){
echo "Registro deletado com sucesso<br />";
}
}
}
?>
<a href="listar.php">Voltar</a>
salvar_edicao.php
<?php
if($_SERVER["REQUEST_METHOD"] == "POST") {
$id = $_POST["id"];
$nome = $_POST["nome"];
$email = $_POST["email"];
$data = "{$_POST["ano"]}-{$_POST["mes"]}-{$_POST["dia"]}";
$sexo = $_POST["sexo"];
$preferencias = isset($_POST["preferencias"]) ? implode(",", $_POST["preferencias"]) : "";
$salario = $_POST["salario"];
$endereco = $_POST["endereco"];
$bairro = $_POST["bairro"];
$cidade = $_POST["cidade"];
$estados = $_POST["estados"];
$login = $_POST["login"];
$senha = $_POST["senha"];
if(file_exists("init.php")) {
require "init.php";
} else {
echo "Arquivo init.php nao foi encontrado";
exit;
}
if(!function_exists("Abre_Conexao")) {
echo "Erro o arquivo init.php foi auterado, nao existe a função Abre_Conexao";
exit;
}
Abre_Conexao();
if(@mysql_query("UPDATE usuarios SET nome = '$nome',if(mysql_affected_rows() == 1){
echo "Registro atualizado com sucesso";
}
} else {
if(mysql_errno() == 1062) {
echo $erros[mysql_errno()];
exit; echo "Erro nao foi possivel efetuar a edição";
exit;
}
@mysql_close();
}
}
?>
<a href="listar.php">Voltar</a>
arquivos completos para download: Cadastro.zip
Pessoal qualquer duvida quanto os sistema ou alguma duvida só postar no forum mesmo que responderemos
bom espero que esse exemplo seja util
versao do sistema de cadastro mais simples
http://forum.imasters.com.br/index.php?showtopic=201046
abraços
OBS Topico atualizado 24/06/2009 ir para ultimas paginas nelas tem outras atualizações do sistema de cadastro incluindo sistema de login com niveis de acesso
Carregando comentários...