Ir ao conteúdo
  • Cadastre-se

Sistema de Cadastro com PHP e MySQL não funciona


Posts recomendados

Oi colegas do fórum!

 

Eu decidir criar um sistema de cadastro de funcionários utilizando PHP e MySQL. Eu fiz os campos de cadastro e criei o Bando de Dados "empresa" e a tabela "funcionarios" com os seguintes campos: "Nome", "E-mail", "Setor", "Cargo" e "Foto".

 

Eu estou utilizando o Wampserver de 64 bits, a versão 2.5.

 

Eu fiz o código conforme eu tinha aprendido e dá até a mensagem que o cadastro foi efetuado, mas quando vou ver phpMyAdmin não tem nada cadastrado.

 

Os códigos são esses:

 

funcionarios.php

<!doctype html><?phprequire_once "config.php";?><html><head><meta charset="utf-8">	<title>Cadastro de Funcionários</title>    <link rel="stylesheet" text="text/css" href="estilo.css"></head><body>	<div id="cadastro">    	<form method="post" action="?go=cadastrar">    		<table id="tab_cadastro">            	<tr>                	<td>Nome:</td>                    <td><input type="text" name="nome" id="Nome" class="txt" /></td>                </tr>                <tr>                        <td>E-mail:</td>                    <td><input type="text" name="email" id="E-mail" class="txt" /></td>                </tr>                <tr>                        <td>Setor:</td>                    <td><input type="text" name="setor" id="Setor" class="txt" /></td>                </tr>                <tr>                        <td>Cargo:</td>                    <td><input type="text" name="cargo" id="Cargo" class="txt" /></td>                </tr>                <tr>                        <td>Foto:</td>                    <td><input type="text" name="foto" id="Foto" class="txt" /></td>                                                       </tr>                <tr>                        <td colspan="2"><input type="submit" value="Cadastrar" id="botao_cad"></td>                                                       </tr>            </table>        </form>    </div></body></html><?phpif(@$_GET['go'] == 'cadastrar'){	$nome = $_POST['nome'];	$email = $_POST['email'];	$setor = $_POST['setor'];	$cargo = $_POST['cargo'];	$foto = $_POST['foto'];		if(empty($nome)){		echo "<script>				alert('Preencha todos os campos para cadastrar.');				history.back();		      </script>";	}elseif(empty($email)){		echo "<script>				alert('Preencha todos os campos para cadastrar.');				history.back();		      </script>";	}elseif(empty($setor)){		echo "<script>				alert('Preencha todos os campos para cadastrar.');				history.back();		      </script>";	}elseif(empty($cargo)){		echo "<script>				alert('Preencha todos os campos para cadastrar.');				history.back();		      </script>";	}elseif(empty($foto)){		echo "<script>				alert('Preencha todos os campos para cadastrar.');				history.back();		      </script>";	}else{		$query1 = mysql_fetch_row(mysql_query("SELECT * FROM funcionarios WHERE Nome = '$nome'"));		if($query1 == 1){			echo "<script>				  	alert('Funcionário já existe.');					history.back();		      	  </script>";		}else{			mysql_query("insert into funcionarios (nome, email, setor, cargo, foto) values ('$nome','$email','$setor','$cargo','$foto')");			echo "<script>				  	alert('Funcionário cadastrado com sucesso.');		      	  </script>";			echo "<meta http-equiv='refresh' content='0, url=funcionarios.php'>";		}	}}?>

config.php

<meta charset="utf-8"><?php$con = @mysql_connect("localhost","root","") or die("Não foi possível conectar com o servidor de dados!");mysql_select_db("empresa", $con) or die("Banco de Dados não localizado!");?>

estilo.css

body{	margin: 0;	padding: 0;	outline: none;	font-family: "Arial";}.txt{	height: 35px;	width: 250px;	border: none;	border-radius: 5px;	background-color: #EEE;	padding: 4px;	}#tab_cadastro{	height: 250px;	margin: 0 auto;	padding: 10px;	margin-top: 200px;}#botao_cad{	width: 100px;	height: 30px;	background-color: #EFEFEF;	border-radius: 4px;	border: 1px solid #CCC;}

Alguém pode me ajudar?

Link para o comentário
Compartilhar em outros sites

Qual é a versão do seu PHP ? Só para lembrar que o MySQL foi desapreciado numa das versões do PHP 5.

 

Versão 5.5. Eu conseguir achar o erro, o problema era que tinha um atributo "E-mail" no BD e tentava inserir "email". Era isso que estava atrapalhando o cadastro. Aproveitei e reformulei o código.

Link para o comentário
Compartilhar em outros sites

@Air-Gear

 

Que bom que achou o erro.

Uma dica, passe a usar a extensão MySQLi, e evite de fazer do jeito que fez, tudo no mesmo código( prefira usar o formulário em um arquivo diferente do arquivo php que recebe os dados do formulário)

 

Ok! Eu posso colocar o novo código para vocês verem o que eu posso melhorar? Já que estou "enferrujado" com programação PHP.

Link para o comentário
Compartilhar em outros sites

@Air-Gear

 

Sim,  pode postar e perguntar qualquer coisa sobre ele :)

 

OK! O Novo código é esse:

 

funcionarios.php

<?phprequire ("config.php");?><html><head>    <meta charset="utf-8">	<title>Cadastro de Funcionários</title>    <link rel="stylesheet" text="text/css" href="estilo.css"></head><body>	<div id="cadastro">    	<form name="signup" method="post" action="cadastro.php">    		<table id="tab_cadastro">            	<tr>                	<td>Nome:</td>                    <td><input type="text" name="nome" required placeholder="Nome do funcionário" id="nome" class="txt" /></td>                </tr>                <tr>                        <td>E-mail:</td>                    <td><input type="text" name="email" required placeholder="E-mail do Funcionário" id="email" class="txt" /></td>                </tr>                <tr>                        <td>Setor:</td>                    <td><input type="text" name="setor" required placeholder="Setor do Funcionário" id="setor" class="txt" /></td>                </tr>                <tr>                        <td>Cargo:</td>                    <td><input type="text" name="cargo" required placeholder="Cargo do Funcionário" id="cargo" class="txt" /></td>                </tr>                <tr>                        <td>Foto:</td>                    <td><input type="text" name="foto" required placeholder="Foto do Funcionário" id="foto" class="txt" /></td>                </tr>                <tr>                        <td colspan="2"><input type="submit" value="Cadastrar" name="go" id="botao_cad"></td>                </tr>            </table>        </form>    </div></body></html>

estilo.css

body{	margin: 0;	padding: 0;	outline: none;	font-family: "Arial";}.txt{	height: 35px;	width: 250px;	border: none;	border-radius: 5px;	background-color: #EEE;	padding: 4px;	}#tab_cadastro{	height: 250px;	margin: 0 auto;	padding: 10px;	margin-top: 200px;}#tab_lista{    height: 300px;    margin: 0 auto;    margin-top: 100px;}#botao_cad{	width: 100px;	height: 30px;	background-color: #EFEFEF;	border-radius: 4px;	border: 1px solid #CCC;}#cor_cabecalho{    background-color: #AAA;}

config.php

<meta charset="utf-8"><?php$host = "localhost";$user = "root";$pass = "";$banco = "empresa";$conexao = @mysql_connect($host,$user,$pass) or die(mysql_error());mysql_select_db($banco)or die(mysql_error());?>

mysqllistar.php

<<?phpfunction mysqllistar($conexao,$sql,$falha = 1){    if(empty($sql) OR !($conexao))    {        return 0; //Erro com a conexão e ou consulta SQL    }    if (!($lista = @mysql_query($sql,$conexao)))    {        if($falha)            echo "Erro na SQL.";        exit;    }    return $lista;}?>

listar.php

<html>    <head>        <meta charset="utf-8">                <title>Lista de Funcionários</title>        <link rel="stylesheet" text="text/css" href="estilo.css">    </head>    <body>    <?php        // Fazemos o include do arquivo com as config do banco de dados        include "config.php";        // Executa a cláusula SQL        include "mysqllistar.php";        //Executa a consulta        $sql = "SELECT * FROM funcionarios";        $lista = mysqllistar($conexao,$sql);    ?>    <table id="tab_lista">        <?php            $cont = 0;            // Exibe o resultado da nossa consulta            echo "<td id='cor_cabecalho'>ID</td>";            echo "<td id='cor_cabecalho'>Nome</td>";            echo "<td id='cor_cabecalho'>E-mail</td>";            echo "<td id='cor_cabecalho'>Setor</td>";            echo "<td id='cor_cabecalho'>Cargo</td>";            echo "<td id='cor_cabecalho'>Foto</td>";            while ($row = mysql_fetch_array($lista))            {	// Zebramos nossa linha da tabela onde pegamos o cont dividimos por 2                // se o resto for zero mostramos uma cor, se não for mostramos outra                if ($cont % 2 == 0)                {                    $cor = "#f2f2f2";                }                else                {                    $cor = "#ffffff";                }                echo "<tr bgcolor='".$cor."'>";                echo "<td>".$row['id']."</td>";                echo "<td>".$row['nome']."</td>";                echo "<td>".$row['email']."</td>";                echo "<td>".$row['setor']."</td>";                echo "<td>".$row['cargo']."</td>";                echo "<td>".$row['foto']."</td>";                echo "<td colspan='2'><a href='#'><input type='submit' value='Editar' name='go_editar' id='botao_cad'></a></td>";                echo "<td colspan='2'><a href='#'><input type='submit' value='Excluir' name='go_excluir' id='botao_cad'></a></td>";                echo "</tr>";                $cont = $cont + 1;             };        ?>    </table>    </body></html>

Esses códigos estão estão funcionando beleza, o que vocês sugerem pra melhora-los? E outra, eu estou fazendo agora um código pra editar, excluir e fazer uma busca por filtro.

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Air-Gear

 

Eu diminuiria a quantidade de linhas, alteraria  para a sintaxe alternativa do php, 

O cabeçalho da tabela pode ficar fora do php,  as linhas da tabela em "zebra" que você calcula no php.. dá para fazer via CSS

Alteraria o mysql para  mysqli, retiraria a função mysql listar  e faria de forma mais simples...  e por fim  ao invés de usar o fetch_array(), usaria o fetch_object()

 

Bem é isso, seu código pode funcionar bem,  mas ele esta bem sujinho.

Link para o comentário
Compartilhar em outros sites

@dif

 

Eu fiz as modificações e ficou de boa, exceto pelo cadastro que não está sendo efetuado, de novo. A listagem está funcionando. Segue os novos códigos.

 

funcionarios.php

<?phprequire ("config.php");?><html><head>    <meta charset="utf-8">	<title>Cadastro de Funcionários</title>    <link rel="stylesheet" text="text/css" href="estilo.css"></head><body>	<div id="cadastro">    	<form name="signup" method="post" action="cadastro.php">    		<table id="tab_cadastro">            	<tr>                	<td>Nome:</td>                    <td><input type="text" name="nome" required placeholder="Nome do funcionário" id="nome" class="txt" /></td>                </tr>                <tr>                        <td>E-mail:</td>                    <td><input type="text" name="email" required placeholder="E-mail do Funcionário" id="email" class="txt" /></td>                </tr>                <tr>                        <td>Setor:</td>                    <td><input type="text" name="setor" required placeholder="Setor do Funcionário" id="setor" class="txt" /></td>                </tr>                <tr>                        <td>Cargo:</td>                    <td><input type="text" name="cargo" required placeholder="Cargo do Funcionário" id="cargo" class="txt" /></td>                </tr>                <tr>                        <td>Foto:</td>                    <td><input type="text" name="foto" required placeholder="Foto do Funcionário" id="foto" class="txt" /></td>                </tr>                <tr>                        <td colspan="2"><input type="submit" value="Cadastrar" name="go" id="botao_cad"></td>                </tr>            </table>        </form>    </div></body></html>

cadastro.php

<html><head>    <meta charset="utf-8">    <title>Cadastro de Funcionários</title>    <link rel="stylesheet" text="text/css" href="estilo.css"></head><body><?phprequire ("config.php");?><?php$nome = $_POST['nome'];$email = $_POST['email'];$setor = $_POST['setor'];$cargo = $_POST['cargo'];$foto = $_POST['foto'];$sql = $conexao->prepare("INSERT INTO funcionarios (nome, email, setor, cargo, foto) VALUES ('$nome','$email','$setor','$cargo','$foto')");echo "<script>				  	alert('Funcionário cadastrado com sucesso.');	  </script>";echo "<meta http-equiv='refresh' content='0, url=funcionarios.php'>";?></body></html>

estilo.css

body{	margin: 0;	padding: 0;	outline: none;	font-family: "Arial";}.txt{	height: 35px;	width: 250px;	border: none;	border-radius: 5px;	background-color: #EEE;	padding: 4px;	}table#tab_lista{    height: 250px;    margin: 0 auto;    padding: 10px;    margin-top: 100px;    border-collapse: collapse;    box-shadow: 5px 5px 2.5px #888888;    border:1px solid #000000;}table#tab_lista td, tr {    border: 1px solid #CCC;}#tab_cadastro{	height: 250px;	margin: 0 auto;	padding: 10px;	margin-top: 200px;}input#botao_cad{	width: 100px;	height: 30px;	background-color: #EFEFEF;	border-radius: 4px;	border: 1px solid #CCC;}#cor_cabecalho{    background-color: #AAA;    font-weight: bold;    text-align: center;}

listar.php

<html>    <head>        <meta charset="utf-8">                <title>Lista de Funcionários</title>        <link rel="stylesheet" text="text/css" href="estilo.css">    </head>    <body>    <?php        include "config.php";    if ($sql = $conexao->prepare("SELECT * FROM funcionarios")) {        $sql->execute();        // Atribui o resultado encontrado a variáveis        $sql->bind_result($id, $nome, $email, $setor, $cargo, $foto);    }    ?>    <table id="tab_lista">            <td id='cor_cabecalho'>ID</td>            <td id='cor_cabecalho'>Nome</td>            <td id='cor_cabecalho'>E-mail</td>            <td id='cor_cabecalho'>Setor</td>            <td id='cor_cabecalho'>Cargo</td>            <td id='cor_cabecalho'>Foto</td>        <?php        $cont = 0;            while ($sql->fetch()){                echo "<tr>";                echo "<td>". $id ."</td>";                echo "<td>". $nome ."</td>";                echo "<td>". $email ."</td>";                echo "<td>". $setor ."</td>";                echo "<td>". $cargo ."</td>";                echo "<td>". $foto ."</td>";                echo "<td colspan='2'><a href='#'><input type='submit' value='Editar' name='go_editar' id='botao_cad'></a></td>";                echo "<td colspan='2'><a href='#'><input type='submit' value='Excluir' name='go_excluir' id='botao_cad'></a></td>";                echo "</tr>";                $cont = $cont + 1;             }        // Fecha a consulta        $sql->close();        // Fecha a conexão com o banco de dados        $conexao->close();        ?>    </table>    </body></html>

config.php

<meta charset="utf-8"><?php$host = "localhost";$user = "root";$pass = "";$banco = "empresa";$conexao = new mysqli($host,$user,$pass,$banco);if (mysqli_connect_errno()) {    die('Não foi possível conectar-se ao banco de dados: ' . mysqli_connect_error());    exit();}?>
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...