Ir para conteúdo

POWERED BY:

Arquivado

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

Fernando Nito

[Resolvido] Cadastro não é adicionado no banco de dados em MySQL

Recommended Posts

Estou estudando PHP através de um livro emprestado, chamado "PHP & MYSQL - Guia Introdutório 2ª Edição" do autor Claudio Adonai Muto (O livro é muito bom para iniciantes, recomendo ;) )

Neste livro, possui um exemplo de cadastro. Quando é completado os campos e envio as informações, para no arquivo "validacadastro.php" e não mostra nenhum erro, apesar do display_erros estar On e o error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT. :blink:

 

frmcadastra.php

<html>
<head>
<title>Cadastrando um cliente</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">

<?
	include "cabecalho.php";
	
	$matricula = $_POST["txmatricula"];
	$nome = $_POST["txnome"];
	$endereco = $_POST["txendereco"];
	$cidade = $_POST["txcidade"];
	
	$matricula = $matricula;
	$nome = $nome;
	$endereco = $endereco;
	$cidade = $cidade;	
?>

<table width="100%" border="0" cellspacing="0">
	<tr>
		<td> </td>
	</tr>
	
	<tr>
		<td>
			<div align="center">
				<font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><i><font size="3">MiniCadastro de Funcionário</font></i></b></font>
			</div>
		</td>
	</tr>
	
	<tr>
		<td>
			<hr>
		</td>
	</tr>
	
	<tr>
		<td>
			<font face="Verdana, Arial, Helvetica, sans-serif" size="2">Preencha os dados do funcionário abaixo:</font>
		</td>
	</tr>
	
	<tr>
		<td>
			<form name="form1" method="post" action="validacadastro.php">
			
				<table width="100%" border="0" cellspacing="0">
				
					<tr>
						<td width="15%"> </td>
						<td width="85%"> </td>
					</tr>
				
					<tr>
						<td width="15%">
							<div align="right">
								<font size="2" face="Verdana, Arial, Helvetica, sans-serif">Matrícula: </font>
							</div>
						</td>
					
						<td width="15%">
							<input type="text" name="txmatricula" size="5" maxlength="5" value="<? echo $matricula; ?>">
						<td>
					</tr>
				
					<tr>
						<td width="15%">
							<div align="right">
								<font size="2" face="Verdana, Arial, Helvetica, sans-serif">Nome: </font>
							</div>
						</td>
					
						<td width="85%">
							<input type="text" name="txnome" size="40" maxlength="50" value="<? echo $nome; ?>">
						</td>
					</tr>
				
					<tr>
						<td width="15%">
							<div align="right">
								<font size="2" face="Verdana, Arial, Helvetica, sans-serif">Endereço: </font>
							</div>
						</td>
					
						<td width="85%">
							<input type="text" name="txendereco" maxlength="70" size="60" value="<? echo $endereco; ?>">
						</td>
					</tr>
				
					<tr>
						<td width="15%">
							<div align="right">
								<font size="2" face="Verdana, Arial, Helvetica, sans-serif">Estado: </font>
							</div>
						</td>
					
						<td width="85%">
							<input type="text" name="txcidade" maxlength="2" size="3" value="<? echo $cidade; ?>">
						</td>
					</tr>
				
					<tr>
						<td width="15%" height="16"> </td>
						<td width="85%" height="16"> </td>
					</tr>
				
					<tr>
						<td width="15%"> </td>
						<td width="85%">
							<input type="submit" name="Submit" value="Cadastrar">
							<input type="reset" name="Submit2" value="Limpar">
						</td>
					</tr>
				
					<tr>
						<td width="15%">
							<font face="Arial, Helvetica, sans-serif" size="2"><a href="index.php">Voltar</a></font>
						</td>
					
						<td width="85%"> </td>
					</tr>
				</table>
			</form>
		</td>
	</tr>
</table>

<?
	include "rodape.php";
?>
</body>
</html>

validacadastro.php

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<?
  $conec; /*variavel pra conexão com o banco*/
  $bco; /*variavel pra conexão com o banco */
  $conectou = 0; 
  $matricula = $_POST['txmatricula'];
  $nome = $_POST['txnome'];
  $endereco = $_POST['txendereco'];
  $cidade = $_POST['txcidade'];
  
  include "conexao.php";
  if ($conectou) {
	include "cabecalho.php";

	$stgsql = "insert into FUNCIONARIOS values ('$matricula','$nome','$endereco','$cidade')";

	$res = mysql_query($stgsql,$conec);
	if ($res) {
	include "sucessoinclusao.php";
	} else {
	include "erroinclusao.php";
	}
			
	include "rodape.php";
  }
?>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo menos no livro tá daquela forma.

Mas pela lógica tá certo, FUNCIONARIOS é o nome da tabela que criei e os outros são as variáveis que são digitadas no form da página frmcadastra.php :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo menos no livro tá daquela forma.

Mas pela lógica tá certo, FUNCIONARIOS é o nome da tabela que criei e os outros são as variáveis que são digitadas no form da página frmcadastra.php :unsure:

Sua tabela tem apenas Matricula, nome, endereço e cidade?

Caso tenha mais campos, a sintaxe está errada. Caso contrário, o erro está em outro lugar provavelmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei essa linha pra mostrar o erro e mesmo assim a página fica em branco :huh:

Estou testando através do EasyPHP e sempre mostrou os erros <_<

como disse, já conferi o display_errors e o error_reporting

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo menos no livro tá daquela forma.

Mas pela lógica tá certo, FUNCIONARIOS é o nome da tabela que criei e os outros são as variáveis que são digitadas no form da página frmcadastra.php :unsure:

Sua tabela tem apenas Matricula, nome, endereço e cidade?

Caso tenha mais campos, a sintaxe está errada. Caso contrário, o erro está em outro lugar provavelmente.

 

Está sim...

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troca isto

$res = mysql_query($stgsql,$conec);

Por isto

$res = mysql_query($stgsql,$conec) or die(mysql_error());

Veja o erro que aparece

 

Carlos Eduardo

Coloquei e ainda não deu erro! <_<

Coloquei o "or die(mysql_error())" no conexao.php, que é o arquivo que realiza a conexão com o bd e mesmo assim a página do validacadastro.php fica em branco http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque:

$stgsql = "insert into FUNCIONARIOS values ('$matricula','$nome','$endereco','$cidade')";

	$res = mysql_query($stgsql,$conec);
	if ($res) {
	include "sucessoinclusao.php";
	} else {
	include "erroinclusao.php";
	}
por:
$stgsql = "INSERT INTO `funcionarios` VALUES ('{$matricula}','{$nome}','{$endereco}','{$cidade}')";
	echo $stgsql;

	$res = mysql_query($stgsql)or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá, mas inseriu o registro ??

Faça um header location, e não um include...

 

http://br.php.net/manual/en/function.header.php

 

Poste o teu arquivo de de conexão, tô achando que não tá entrando no teu if.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não inseriu nada e nem imprimiu algo.

Também pensei que poderia ser problema com o arquivo de conexão, já que fucei tudo no form e na validação mas ainda nem descobri o erro :s

 

conexao.php

<?
$conec = mysql_connect("localhost", "admin", "admin"); /*eu criei esse usuario e senha e tem permissão pra tudo, até uso ele em outro sisteminha de teste*/

if ($conec) {
	$bco = mysql_select_db("lsm_teste",$conec);
	if ($bco)
		$conectou = 1;
	} else {
		echo "Banco de dados não encontrado.";
	}
} else {
	echo "Erro na conexão.";
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá.. faz assim:

include "conexao.php";
  if ($conectou) {
troca por:

include "conexao.php";
echo 'valor da var: $conectou: ',$conectou;
  //if ($conectou) {
e comenta o } de fechamento do IF tb.. veja se insere, e nos diga oque resultou dos echos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alterei pela if comentada e fechei comentado também e olha o resultado após preencher o form:

Imagem Postada

confirmei até se era o arquivo certo que estava alterando, por que não é possível ¬¬'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pergunta bem idiota... Teu PHP tá funcionando direito??? Porque ele não executou nenhum echo...

 

Testa colocar para imprimir qualquer coisa... Tipo, na primeira linha do validacadastro.php, você coloca isto

echo '<h1>Estou aqui. Estou funcionando</h1>';

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque no validacadastro.php:

 

<?
$conec; /*variavel pra conexão com o banco*/
$bco; /*variavel pra conexão com o banco */

 

PARA:

 

<?
$conec = NULL; /*variavel pra conexão com o banco*/
$bco = NULL; /*variavel pra conexão com o banco */

espero que resolva, boa sorte

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pergunta bem idiota... Teu PHP tá funcionando direito??? Porque ele não executou nenhum echo...

 

Testa colocar para imprimir qualquer coisa... Tipo, na primeira linha do validacadastro.php, você coloca isto

echo '<h1>Estou aqui. Estou funcionando</h1>';

Carlos Eduardo

Também reparei que não imprime nenhum echo... o estranho que é instalei o wordpress no EasyPHP e funciona normalmente. Na dúvida, desinstalei e instalei o EasyPHP e não imprimiu essa linha de teste.

 

Troque no validacadastro.php:

 

<?
$conec; /*variavel pra conexão com o banco*/
$bco; /*variavel pra conexão com o banco */

 

PARA:

 

<?
$conec = NULL; /*variavel pra conexão com o banco*/
$bco = NULL; /*variavel pra conexão com o banco */

espero que resolva, boa sorte

Também não funcionou :(

 

Vou desinstalar o EasyPHP e instalar o PHP manualmente mesmo pra ver se o erro não é do EasyPHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisa desinstalar o EasyPHP, basta que você faça assim:

 

echo $stgsql;

 

Aí depois você cola o sql no PHPMyAdmin e ve o erro que aparece. O nome da tabela deve ser ficar em minusculo como no print que está num post lá encima.

O campo matricula deve ser int e chave primária.

 

Na duvida cola o echo aqui.

 

Abraço.

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.