Ir para conteúdo

POWERED BY:

Arquivado

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

testao35

formulario

Recommended Posts

Ae galera to com um probleminha aqui, no meu formulario, a função dele é só enviar os dados pro banco, e ta funcionando direitinho só que quando eu acesso a pagina do formulario ele imprimi na tela, como se eu ja tivesse enviado ele, a mensagem "Informações cadastradas com sucesso!" queria que ele mostrasse a mensagem, só depois que eu enviar o formulario, e ele fazer a checagem.

Olhem o código ai.

<?php
include 'config.php';
?>
<html>
	<head>
		<title>Aprendendo</title>
	</head>
	<body>
		<h1>Cadastro de clientes:</h1>
		<form enctype="multipart/form-data" method="post">
Nome: <input type="text" name="nome"/> <br /><br />
Telefone: <input type="tel" name="telefone"  /><br /><br />
Endereço: <textarea name="endereco"> </textarea><br /><br />
Observação: <textarea name="obs"> </textarea><br /><br />
<input type="submit" name="acao" value="Enviar" />

<?php
	
		$nome =  @$_POST['nome'];
		$telefone =  @$_POST['telefone'];
		$endereco =  @$_POST['endereco'];
		$obs =  @$_POST['obs'];
		
	$selecionardb = mysql_select_db('aulas');
		
		$inserir = mysql_query("INSERT INTO clientes (nome,telefone,endereco,obs) VALUES ('".$nome."','".$telefone."','".$endereco."','".$obs."')") or die(mysql_error());
		
		if ($inserir){
		echo '<script> alert ("Informações cadastradas com sucesso!");</script>';
		}else{
			if(empty($_POST['nome']) or ($_POST['telefone'])  or ($_POST['endereco'])  or ($_POST['obs'])){
			echo '<script> alert ("Preencha todos os campos")</script>';
			}
		}
?>

</form>
<a href="index2.php">Listar Clientes</a>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ofereça um condicional para o código, adicione um IF no início do código para verificar se o post fora enviado.

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

codigos...

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso esta acontecendo por que o código php está executando direto quando você entra na página, você pode concertar isso desta forma

<?php
include 'config.php';
?>
<html>
	<head>
		<title>Aprendendo</title>
	</head>
	<body>
		<h1>Cadastro de clientes:</h1>
<!--caso a página não seja a index é só mudar o nome no action-->
		<form enctype="multipart/form-data" method="post" action="index.php?action=cadastrar">
Nome: <input type="text" name="nome"/> <br /><br />
Telefone: <input type="tel" name="telefone"  /><br /><br />
Endereço: <textarea name="endereco"> </textarea><br /><br />
Observação: <textarea name="obs"> </textarea><br /><br />
<input type="submit" name="acao" value="Enviar" />

<?php
//esse if serve para só deixar o código php funcionar caso o botão enviar do form tenha sido pressionado
	if($_REQUEST['action'] === 'cadastrar'){
		$nome =  @$_POST['nome'];
		$telefone =  @$_POST['telefone'];
		$endereco =  @$_POST['endereco'];
		$obs =  @$_POST['obs'];
		
	$selecionardb = mysql_select_db('aulas');
		
		$inserir = mysql_query("INSERT INTO clientes (nome,telefone,endereco,obs) VALUES ('".$nome."','".$telefone."','".$endereco."','".$obs."')") or die(mysql_error());
		
		if ($inserir){
		echo '<script> alert ("Informações cadastradas com sucesso!");</script>';
		}else{
			if(empty($_POST['nome']) or ($_POST['telefone'])  or ($_POST['endereco'])  or ($_POST['obs'])){
			echo '<script> alert ("Preencha todos os campos")</script>';
			}
		}
}
?>

</form>
<a href="index2.php">Listar Clientes</a>
</body>
</html>

e eu recomendaria fazer um laço também para verificar se os campos do formulário foram realmente preenchidos pois o comando INSERT grava as entradas no banco e retorna TRUE (1) mesmo se os dados forem nulos

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso esta acontecendo por que o código php está executando direto quando você entra na página, você pode concertar isso desta forma

<?php
include 'config.php';
?>
<html>
	<head>
		<title>Aprendendo</title>
	</head>
	<body>
		<h1>Cadastro de clientes:</h1>
<!--caso a página não seja a index é só mudar o nome no action-->
		<form enctype="multipart/form-data" method="post" action="index.php?action=cadastrar">
Nome: <input type="text" name="nome"/> <br /><br />
Telefone: <input type="tel" name="telefone"  /><br /><br />
Endereço: <textarea name="endereco"> </textarea><br /><br />
Observação: <textarea name="obs"> </textarea><br /><br />
<input type="submit" name="acao" value="Enviar" />

<?php
//esse if serve para só deixar o código php funcionar caso o botão enviar do form tenha sido pressionado
	if($_REQUEST['action'] === 'cadastrar'){
		$nome =  @$_POST['nome'];
		$telefone =  @$_POST['telefone'];
		$endereco =  @$_POST['endereco'];
		$obs =  @$_POST['obs'];
		
	$selecionardb = mysql_select_db('aulas');
		
		$inserir = mysql_query("INSERT INTO clientes (nome,telefone,endereco,obs) VALUES ('".$nome."','".$telefone."','".$endereco."','".$obs."')") or die(mysql_error());
		
		if ($inserir){
		echo '<script> alert ("Informações cadastradas com sucesso!");</script>';
		}else{
			if(empty($_POST['nome']) or ($_POST['telefone'])  or ($_POST['endereco'])  or ($_POST['obs'])){
			echo '<script> alert ("Preencha todos os campos")</script>';
			}
		}
}
?>

</form>
<a href="index2.php">Listar Clientes</a>
</body>
</html>

e eu recomendaria fazer um laço também para verificar se os campos do formulário foram realmente preenchidos pois o comando INSERT grava as entradas no banco e retorna TRUE (1) mesmo se os dados forem nulos

 

O problema de quando eu entro na pagina e aparece a mensagem foi resolvido, só que quando eu envio o formulário e se ele estiver vazio e eu enviar,e ele aprece que foram cadastradas com sucesso e ta aparecendo isso tbm. :

Notice: Undefined index: acao in C:\xampp\htdocs\php5\cadastro.php on line 18

Compartilhar este post


Link para o post
Compartilhar em outros sites

a, isso é só um notice pq quando você entra na página a ação do REQUEST ainda não foi encontrada, não é nenhum problema e você pode resolver de duas formas, ai vai código com as duas formas comentadas

<?php
include 'config.php';
?>
<html>
	<head>
		<title>Aprendendo</title>
	</head>
	<body>
		<h1>Cadastro de clientes:</h1>
<!--caso a página não seja a index é só mudar o nome no action-->
		<form enctype="multipart/form-data" method="post" action="index.php?action=cadastrar">
Nome: <input type="text" name="nome"/> <br /><br />
Telefone: <input type="tel" name="telefone"  /><br /><br />
Endereço: <textarea name="endereco"> </textarea><br /><br />
Observação: <textarea name="obs"> </textarea><br /><br />
<input type="submit" name="acao" value="Enviar" />

<?php
/*primeira forma: quando você declara ini_set("display_errors",0); não aparecem mais erros, nem warnings e nem notices, eu não recomendo usar essa forma enquanto está desenvolvendo a aplicação e sim só depois de pronta para que o usuário não veja possíveis erros
use a segunda forma que está comentada abaixo*/

//esse if serve para só deixar o código php funcionar caso o botão enviar do form tenha sido pressionado

// segunda forma: o caractere @ serve para suprimir warnings e notices que geralmente não são realmente erros
	if(@$_REQUEST['action'] === 'cadastrar'){
		$nome =  @$_POST['nome'];
		$telefone =  @$_POST['telefone'];
		$endereco =  @$_POST['endereco'];
		$obs =  @$_POST['obs'];
		
	$selecionardb = mysql_select_db('aulas');
		
		$inserir = mysql_query("INSERT INTO clientes (nome,telefone,endereco,obs) VALUES ('".$nome."','".$telefone."','".$endereco."','".$obs."')") or die(mysql_error());
		
		if ($inserir){
		echo '<script> alert ("Informações cadastradas com sucesso!");</script>';
		}else{
			if(empty($_POST['nome']) or ($_POST['telefone'])  or ($_POST['endereco'])  or ($_POST['obs'])){
			echo '<script> alert ("Preencha todos os campos")</script>';
			}
		}
}
?>

</form>
<a href="index2.php">Listar Clientes</a>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

a, isso é só um notice pq quando você entra na página a ação do REQUEST ainda não foi encontrada, não é nenhum problema e você pode resolver de duas formas, ai vai código com as duas formas comentadas

<?php
include 'config.php';
?>
<html>
	<head>
		<title>Aprendendo</title>
	</head>
	<body>
		<h1>Cadastro de clientes:</h1>
<!--caso a página não seja a index é só mudar o nome no action-->
		<form enctype="multipart/form-data" method="post" action="index.php?action=cadastrar">
Nome: <input type="text" name="nome"/> <br /><br />
Telefone: <input type="tel" name="telefone"  /><br /><br />
Endereço: <textarea name="endereco"> </textarea><br /><br />
Observação: <textarea name="obs"> </textarea><br /><br />
<input type="submit" name="acao" value="Enviar" />

<?php
/*primeira forma: quando você declara ini_set("display_errors",0); não aparecem mais erros, nem warnings e nem notices, eu não recomendo usar essa forma enquanto está desenvolvendo a aplicação e sim só depois de pronta para que o usuário não veja possíveis erros
use a segunda forma que está comentada abaixo*/

//esse if serve para só deixar o código php funcionar caso o botão enviar do form tenha sido pressionado

// segunda forma: o caractere @ serve para suprimir warnings e notices que geralmente não são realmente erros
	if(@$_REQUEST['action'] === 'cadastrar'){
		$nome =  @$_POST['nome'];
		$telefone =  @$_POST['telefone'];
		$endereco =  @$_POST['endereco'];
		$obs =  @$_POST['obs'];
		
	$selecionardb = mysql_select_db('aulas');
		
		$inserir = mysql_query("INSERT INTO clientes (nome,telefone,endereco,obs) VALUES ('".$nome."','".$telefone."','".$endereco."','".$obs."')") or die(mysql_error());
		
		if ($inserir){
		echo '<script> alert ("Informações cadastradas com sucesso!");</script>';
		}else{
			if(empty($_POST['nome']) or ($_POST['telefone'])  or ($_POST['endereco'])  or ($_POST['obs'])){
			echo '<script> alert ("Preencha todos os campos")</script>';
			}
		}
}
?>

</form>
<a href="index2.php">Listar Clientes</a>
</body>
</html>

A parte do notice foi resolvido, agora eu enviando o formulário vazio ou preenchido aparece sempre assim "Preencha todos os campos" .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, não faça isso. Não utilize o REQUEST, e como já cansei de explicar por aqui o porque de não utilizar, quem tiver dúvidas fazer uma busca no google "não utilizar request php"

 

O correto seria $_GET seguido ainda da verificação do método.

 

Já mais utilize o @ (arroba) em seus códigos, pois o mesmo serve para inibir os erros e notice.

 

Para resolução de undefined index, utilize sempre o isset() que verifica a autenticidade dos dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, não faça isso. Não utilize o REQUEST, e como já cansei de explicar por aqui o porque de não utilizar, quem tiver dúvidas fazer uma busca no google "não utilizar request php"

 

O correto seria $_GET seguido ainda da verificação do método.

 

Já mais utilize o @ (arroba) em seus códigos, pois o mesmo serve para inibir os erros e notice.

 

Para resolução de undefined index, utilize sempre o isset() que verifica a autenticidade dos dados.

Eu fiz isso, porém agora não estão mais enviandos os dados pro banco...

if (isset ($_GET['action']) === 'cadastrar'){
		$nome =  isset ($_POST['nome']);
		$telefone = isset ($_POST['telefone']);
		$endereco = isset ($_POST['endereco']);
		$obs = isset ($_POST['obs']);

Compartilhar este post


Link para o post
Compartilhar em outros sites

essa forma ai não vai funcionar mesmo cara, primeiramente pq você não deve ter mudado seu formulário para method="GET" e segundo por que esse seu código ai está todo errado, isset() retorna true ou false somente, se você quiser usar o método GET vai ter que ser assim

<?php
include 'config.php';
?>
<html>
	<head>
		<title>Aprendendo</title>
	</head>
	<body>
		<h1>Cadastro de clientes:</h1>
<!--caso a página não seja a index é só mudar o nome no action-->
		<form enctype="multipart/form-data" method="GET" action="index.php?action=cadastrar">
Nome: <input type="text" name="nome"/> <br /><br />
Telefone: <input type="tel" name="telefone"  /><br /><br />
Endereço: <textarea name="endereco"> </textarea><br /><br />
Observação: <textarea name="obs"> </textarea><br /><br />
<input type="submit" name="acao" value="Enviar" />

<?php
/*primeira forma: quando você declara ini_set("display_errors",0); não aparecem mais erros, nem warnings e nem notices, eu não recomendo usar essa forma enquanto está desenvolvendo a aplicação e sim só depois de pronta para que o usuário não veja possíveis erros
use a segunda forma que está comentada abaixo*/

//esse if serve para só deixar o código php funcionar caso o botão enviar do form tenha sido pressionado

// segunda forma: o caractere @ serve para suprimir warnings e notices que geralmente não são realmente erros
	if(@$_GET['action'] === 'cadastrar'){
		$nome =  @$_GET['nome'];
		$telefone =  @$_GET['telefone'];
		$endereco =  @$_GET['endereco'];
		$obs =  @$_GET['obs'];
		
	$selecionardb = mysql_select_db('aulas');
		
		$inserir = mysql_query("INSERT INTO clientes (nome,telefone,endereco,obs) VALUES ('".$nome."','".$telefone."','".$endereco."','".$obs."')") or die(mysql_error());
		
		if ($inserir){
		echo '<script> alert ("Informações cadastradas com sucesso!");</script>';
		}else{
			if(empty($_GET['nome']) or ($_GET['telefone'])  or ($_GET['endereco'])  or ($_GET['obs'])){
			echo '<script> alert ("Preencha todos os campos")</script>';
			}
		}
}
?>

</form>
<a href="index2.php">Listar Clientes</a>
</body>
</html>

lembrando que neste código acima eu só estou trocando POST e REQUEST por GET e não estou entrando nos méritos de se usar isset(), e inclusive eu não recomendo usar GET neste caso pois seus clientes não vão querer ver seus dados exibidos na url, agora se você quiser usar isset() você poderia fazer isso

<?php
include 'config.php';
?>
<html>
	<head>
		<title>Aprendendo</title>
	</head>
	<body>
		<h1>Cadastro de clientes:</h1>
<!--caso a página não seja a index é só mudar o nome no action-->
		<form enctype="multipart/form-data" method="post" action="index.php?action=cadastrar">
Nome: <input type="text" name="nome"/> <br /><br />
Telefone: <input type="tel" name="telefone"  /><br /><br />
Endereço: <textarea name="endereco"> </textarea><br /><br />
Observação: <textarea name="obs"> </textarea><br /><br />
<input type="submit" name="acao" value="Enviar" />

<?php
/*primeira forma: quando você declara ini_set("display_errors",0); não aparecem mais erros, nem warnings e nem notices, eu não recomendo usar essa forma enquanto está desenvolvendo a aplicação e sim só depois de pronta para que o usuário não veja possíveis erros
use a segunda forma que está comentada abaixo*/

//esse if serve para só deixar o código php funcionar caso o botão enviar do form tenha sido pressionado

// segunda forma: o caractere @ serve para suprimir warnings e notices que geralmente não são realmente erros
	
	if(isset($_POST['nome']) && isset($_POST['telefone']) && isset($_POST['endereco']) && isset($_POST['obs']) == TRUE){

                $nome =  $_POST['nome'];
		$telefone =  $_POST['telefone'];
		$endereco =  $_POST['endereco'];
		$obs =  $_POST['obs'];
	
	$selecionardb = mysql_select_db('aulas');
		
		$inserir = mysql_query("INSERT INTO clientes (nome,telefone,endereco,obs) VALUES ('".$nome."','".$telefone."','".$endereco."','".$obs."')") or die(mysql_error());
		
		if ($inserir){
		echo '<script> alert ("Informações cadastradas com sucesso!");</script>';
		}else{
			if(empty($_POST['nome']) or ($_POST['telefone'])  or ($_POST['endereco'])  or ($_POST['obs'])){
			echo '<script> alert ("Preencha todos os campos")</script>';
			}
		}
}
?>

</form>
<a href="index2.php">Listar Clientes</a>
</body>
</html>

Agora sobre o que o Alaerte falou sobre jamais usar @ eu concordo e discordo

 

eu até concordo em não usar @ para inibir erros pois sei que não é a melhor forma e deixa o código sujo, mas acho que existe sim um por que de não se mostrar os erros, exemplo, sua aplicação esta online para o publico, você não vai querer que caso aconteça um erro o usuário veja e além de ficar nervoso pelo erro ainda posso ver informações sobre diretórios da sua aplicação e até sobre seu banco e inclusive eu comentei isso no código dele, falei que quando está se desenvolvendo não se pode suprimir erros pois isso atrapalha o desenvolvimento.

 

usar a palavra jamais não foi muito apropriado, tem que se estudar o contexto, ainda mais falando para iniciantes !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, a parte de ele enviar os dados pro banco ta certo, só que o único problema ainda, é que quando eu envio o formulário, estando vaziou ou preenchido, aparece: "Informações cadastradas com sucesso!", o que pode ser? eu acho que ele não esta fazendo uma verificação no if, pra ver se o formulario esta preenchido.

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
include 'config.php';
?>
<html>
	<head>
		<title>Aprendendo</title>
	</head>
	<body>
		<h1>Cadastro de clientes:</h1>
		<form enctype="multipart/form-data" method="post" action="cadastro.php?action=cadastrar">
Nome: <input type="text" name="nome"/> <br /><br />
Telefone: <input type="tel" name="telefone"  /><br /><br />
Endereço: <textarea name="endereco"> </textarea><br /><br />
Observação: <textarea name="obs"> </textarea><br /><br />
<input type="submit" name="acao" value="Enviar" />

<?php
	 
	if(isset($_POST['nome']) && isset($_POST['telefone']) && isset($_POST['endereco']) && isset($_POST['obs']) == TRUE){
		$nome =  $_POST['nome'];
		$telefone =  $_POST['telefone'];
		$endereco =  $_POST['endereco'];
		$obs =  $_POST['obs'];
		
	$selecionardb = mysql_select_db('aulas');
		
		$inserir = mysql_query("INSERT INTO clientes (nome,telefone,endereco,obs) VALUES ('".$nome."','".$telefone."','".$endereco."','".$obs."')") or die(mysql_error());

			if ($inserir){
		echo '<script> alert ("Informações cadastradas com sucesso!");</script>';
		}else{
			if(empty($_POST['nome']) or ($_POST['telefone'])  or ($_POST['endereco'])  or ($_POST['obs'])){
			echo '<script> alert ("Preencha todos os campos")</script>';
			}
		}
	}
?>

</form>
<a href="index2.php">Listar Clientes</a>
</body>
</html>

Esse

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você manda-se os dados do form para outra página até que poderia funcionar o isset(); mas como é na mesma página ele executa direto mesmo sem o form ser enviado e por isso não da certo, eu tentei fazer aquele mesmo esquema anterior usando $_POST mais não tive sucesso, se você quiser deixar tudo na mesma página assim mesmo, use esse código aqui, sobre usar @, se quiser nem precisa usar pois notice é apenas um aviso e não um erro, ai já fica de sua preferência, mais quando for colocar no ar pra valer, tire os @ e coloque ini_set("display_errors",0); para inibir erros, eu expliquei para que serve o ato de inibir erros certinho em um post acima. nesse código que eu estou mandando também existe uma verificação a mais de segurança para que o código não salve dados em branco, me diga ai se deu certo !

<?php
include 'config.php';
?>
<html>
	<head>
		<title>Aprendendo</title>
	</head>
	<body>
		<h1>Cadastro de clientes:</h1>
		<form enctype="multipart/form-data" method="post" action="cadastro.php?action=cadastrar">
Nome: <input type="text" name="nome"/> <br /><br />
Telefone: <input type="tel" name="telefone"  /><br /><br />
Endereço: <textarea name="endereco"> </textarea><br /><br />
Observação: <textarea name="obs"> </textarea><br /><br />
<input type="submit" name="acao" value="Enviar" />

<?php
	if(@$_REQUEST['action'] === 'cadastrar'){ 
	if(empty($_POST['nome']) && empty($_POST['telefone']) && empty($_POST['endereco']) && empty($_POST['obs']) == FALSE){
		$nome =  $_POST['nome'];
		$telefone =  $_POST['telefone'];
		$endereco =  $_POST['endereco'];
		$obs =  $_POST['obs'];
		echo 'entrou';
	$selecionardb = mysql_select_db('aulas');
		
		$inserir = mysql_query("INSERT INTO clientes (nome,telefone,endereco,obs) VALUES ('".$nome."','".$telefone."','".$endereco."','".$obs."')") or die(mysql_error());

			if ($inserir){
		echo '<script> alert ("Informações cadastradas com sucesso!");</script>';
		}else{
			if(empty($_POST['nome']) or ($_POST['telefone'])  or ($_POST['endereco'])  or ($_POST['obs'])){
			echo '<script> alert ("Preencha todos os campos")</script>';
			}
		}
	}else{
            echo '<script> alert ("Preencha todos os campos")</script>';
        }
        }
?>

</form>
<a href="index2.php">Listar Clientes</a>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

se você manda-se os dados do form para outra página até que poderia funcionar o isset(); mas como é na mesma página ele executa direto mesmo sem o form ser enviado e por isso não da certo, eu tentei fazer aquele mesmo esquema anterior usando $_POST mais não tive sucesso, se você quiser deixar tudo na mesma página assim mesmo, use esse código aqui, sobre usar @, se quiser nem precisa usar pois notice é apenas um aviso e não um erro, ai já fica de sua preferência, mais quando for colocar no ar pra valer, tire os @ e coloque ini_set("display_errors",0); para inibir erros, eu expliquei para que serve o ato de inibir erros certinho em um post acima. nesse código que eu estou mandando também existe uma verificação a mais de segurança para que o código não salve dados em branco, me diga ai se deu certo !

<?php
include 'config.php';
?>
<html>
	<head>
		<title>Aprendendo</title>
	</head>
	<body>
		<h1>Cadastro de clientes:</h1>
		<form enctype="multipart/form-data" method="post" action="cadastro.php?action=cadastrar">
Nome: <input type="text" name="nome"/> <br /><br />
Telefone: <input type="tel" name="telefone"  /><br /><br />
Endereço: <textarea name="endereco"> </textarea><br /><br />
Observação: <textarea name="obs"> </textarea><br /><br />
<input type="submit" name="acao" value="Enviar" />

<?php
	if(@$_REQUEST['action'] === 'cadastrar'){ 
	if(empty($_POST['nome']) && empty($_POST['telefone']) && empty($_POST['endereco']) && empty($_POST['obs']) == FALSE){
		$nome =  $_POST['nome'];
		$telefone =  $_POST['telefone'];
		$endereco =  $_POST['endereco'];
		$obs =  $_POST['obs'];
		echo 'entrou';
	$selecionardb = mysql_select_db('aulas');
		
		$inserir = mysql_query("INSERT INTO clientes (nome,telefone,endereco,obs) VALUES ('".$nome."','".$telefone."','".$endereco."','".$obs."')") or die(mysql_error());

			if ($inserir){
		echo '<script> alert ("Informações cadastradas com sucesso!");</script>';
		}else{
			if(empty($_POST['nome']) or ($_POST['telefone'])  or ($_POST['endereco'])  or ($_POST['obs'])){
			echo '<script> alert ("Preencha todos os campos")</script>';
			}
		}
	}else{
            echo '<script> alert ("Preencha todos os campos")</script>';
        }
        }
?>

</form>
<a href="index2.php">Listar Clientes</a>
</body>
</html>

 

Não deu certo, da forma que vc mandou essa parte do if deve ta dando algum erro, pq com essa linha ele nem envia nada pro banco, e não mostra nenhuma msg, quando eu comentei ela e preenchi o formulario, apareceu a msg que as informações foram cadastradas com sucesso, e quando o formulario esta vazio apareceu isso tbm...

if(empty($_POST['nome']) && empty($_POST['telefone']) && empty($_POST['endereco']) && empty($_POST['obs']) == TRUE){

$nome = $_POST['nome'];

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

vê se agora da certo assim, eu alterei o if pra uma instrução mais simples

<?php
include 'config.php';
?>
<html>
	<head>
		<title>Aprendendo</title>
	</head>
	<body>
		<h1>Cadastro de clientes:</h1>
		<form enctype="multipart/form-data" method="post" action="cadastro.php?action=cadastrar">
Nome: <input type="text" name="nome"/> <br /><br />
Telefone: <input type="tel" name="telefone"  /><br /><br />
Endereço: <textarea name="endereco"> </textarea><br /><br />
Observação: <textarea name="obs"> </textarea><br /><br />
<input type="submit" name="acao" value="Enviar" />

<?php
	if(@$_REQUEST['action'] === 'cadastrar'){ 
	if($_POST['nome'] && $_POST['telefone'] && $_POST['endereco'] && $_POST['obs'] != NULL){
		$nome =  $_POST['nome'];
		$telefone =  $_POST['telefone'];
		$endereco =  $_POST['endereco'];
		$obs =  $_POST['obs'];
		echo 'entrou';
	$selecionardb = mysql_select_db('aulas');
		
		$inserir = mysql_query("INSERT INTO clientes (nome,telefone,endereco,obs) VALUES ('".$nome."','".$telefone."','".$endereco."','".$obs."')") or die(mysql_error());

			if ($inserir){
		echo '<script> alert ("Informações cadastradas com sucesso!");</script>';
		}else{
			if(empty($_POST['nome']) or ($_POST['telefone'])  or ($_POST['endereco'])  or ($_POST['obs'])){
			echo '<script> alert ("Preencha todos os campos")</script>';
			}
		}
	}else{
            echo '<script> alert ("Preencha todos os campos")</script>';
        }
        }
?>

</form>
<a href="index2.php">Listar Clientes</a>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

hmm, ta quase kk..

quando eu preencho o fomrulario ele mostra a msg certa, e quando ele ta vazio, não aparece nada... ele não faz nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou perdendo meu tempo discutindo sobre um simples fomulário que nem você que se diz entendido do contexto sabe fazer funcionar, e vou repetir pra você e que fique bem CLARO, "JÁ MAIS UTILIZE O ARROBA PARA INIBIR ERROS" é um conselho, se não quer que o usuário final veja o erro faça tratamentos de erros, que é uma excelente prática para o programador profissional, tanto você quanto o autor do tópico são iniciantes e precisam estudar e "MUITO" para entender o php suas funções e seu contexto.

 

O modo com que estão tratando as informações são totalmente impróprios, isso é notório além de um nível muito ruim de prática de programação e lógica. Agora, aproveite as dicas que dou e aprenda você também junto com o autor do tópico, e engula seu orgulho.

 

O formulário dele não está como GET e as informações "NÃO" vão passar pela URL, apenas o seu action está utilizando uma QUERY STRING, estude sobre ela coloque no google pra saber o que é. E que esta, precisa ser recuperada com o GET e o seu valor é o "cadastrar" ou com a variável de servidor $_SERVER['QUERY_STRING'] que teria o valor "action=cadastrar" que não se deve ser comparado no IF com o operador de comparação "===" e sim com "==" pois pode ser facilmente mudada.

 

$a == $b Igual Verdadeiro (TRUE) se $a é igual a $b.
$a === $b Idêntico  Verdadeiro (TRUE) se $a é igual a $b, e eles são do mesmo tipo (introduzido no PHP4).

Mais informações: http://www.php.net/manual/pt_BR/language.operators.comparison.php

 

Utilize o isset() para verificar se uma variável existe, se ela obteve valor, e não utilizar o arroba pois não é o método correto.

 

 

Cleiton, sugiro estudar mais sobre o php, isso aqui é um fórum de PHP e não de gambiarras, apesar de existir muitas, mais nunca vi tamanha ignorância para um formulário só, e o que é pior, você está passando informações incorretas para o camarada. Encerro aqui minha participação neste tópico e espero não encontrar explicações absurdas sua por aí, evite levar correções.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hmm, ta quase kk..

quando eu preencho o fomrulario ele mostra a msg certa, e quando ele ta vazio, não aparece nada... ele não faz nada.

quando esta vazio e você clica em enviar não faz nada ? por que aqui ele aparece um alert me avisando que está vazio quando eu deixo os campos vazios e clico em enviar !, da uma conferida ai

Estou perdendo meu tempo discutindo sobre um simples fomulário que nem você que se diz entendido do contexto sabe fazer funcionar, e vou repetir pra você e que fique bem CLARO, "JÁ MAIS UTILIZE O ARROBA PARA INIBIR ERROS" é um conselho, se não quer que o usuário final veja o erro faça tratamentos de erros, que é uma excelente prática para o programador profissional, tanto você quanto o autor do tópico são iniciantes e precisam estudar e "MUITO" para entender o php suas funções e seu contexto.

 

O modo com que estão tratando as informações são totalmente impróprios, isso é notório além de um nível muito ruim de prática de programação e lógica. Agora, aproveite as dicas que dou e aprenda você também junto com o autor do tópico, e engula seu orgulho.

 

O formulário dele não está como GET e as informações "NÃO" vão passar pela URL, apenas o seu action está utilizando uma QUERY STRING, estude sobre ela coloque no google pra saber o que é. E que esta, precisa ser recuperada com o GET e o seu valor é o "cadastrar" ou com a variável de servidor $_SERVER['QUERY_STRING'] que teria o valor "action=cadastrar" que não se deve ser comparado no IF com o operador de comparação "===" e sim com "==" pois pode ser facilmente mudada.

 

$a == $b Igual Verdadeiro (TRUE) se $a é igual a $b.
$a === $b Idêntico  Verdadeiro (TRUE) se $a é igual a $b, e eles são do mesmo tipo (introduzido no PHP4).

Mais informações: http://www.php.net/manual/pt_BR/language.operators.comparison.php

 

Utilize o isset() para verificar se uma variável existe, se ela obteve valor, e não utilizar o arroba pois não é o método correto.

 

 

Cleiton, sugiro estudar mais sobre o php, isso aqui é um fórum de PHP e não de gambiarras, apesar de existir muitas, mais nunca vi tamanha ignorância para um formulário só, e o que é pior, você está passando informações incorretas para o camarada. Encerro aqui minha participação neste tópico e espero não encontrar explicações absurdas sua por aí, evite levar correções.

sério amigo você leu o que eu escrevi ? eu não disse que sou experiente, na verdade eu sou iniciante, olha meu perfil só tem coisa básica, sobre o @ que já esta se estendendo muito, eu disse duas vezes que eu não recomendava usar e que existiam formas melhores de fazer e parece que você não leu nenhuma delas, eu e o amigo que estamos discutindo aqui somos iniciantes mas precisa nos chamar de ignorantes ? já nasceu sabendo foi ? eu disse uma coisa, está errado, me corrija então, eu não ligo e acho que só agrega mais ao meu conhecimento, afinal é pra isso que serve o fórum, não precisa tratar os iniciantes com tanta arrogância assim. sobre o método REQUEST e o uso de isset, eu não sabia muito e você me mostrou, valeu ! mais também, se é um form tão simples por que você não resolveu logo pra eu e ele vermos como se faz certo em vez de ficar jugando ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque aqui não damos códigos prontos, aqui mostramos o caminho a ser seguido, mostramos o lado para o estudo e conhecimento do que se está fazendo, aqui preocupamos em ensinar quem quer aprender, por isso não corrigir o formulário, apenas com as dicas que dei, se ele estudasse o faria com certeza funcionar, mais tudo bem, lá essa colher de chá pra os dois, desculpe em ser duro na resposta.

 

Segue o código corrigido... Se o arquivo de configuração do mysql dele estiver correto tudo dará certo, do contrário ele receberá alguma mensagem de erro por parte do banco de dados.

 

Neste formulários estamos trabalhando com a função isset(), empty(), laço de repetição (loop) for() e variáveis de servidor $_SERVER['QUERY_STRING'] e $_SERVER['REQUEST_METHOD']

 

Deem uma olhada e vejam se da pra entender, no que tiverem dúvidas perguntem. Também retirei o enctype do formulário, pois esta marcação apenas deve ser utilizada quando se trabalhar com campos para arquivos ok.

<?php
include 'config.php';
?>
<html>
<head>
<title>Aprendendo</title>
</head>
<body>
<h1>Cadastro de clientes:</h1>
<form method="post" action="?acao=cadastro" name="cadastro">
Nome: <input type="text" name="nome"/> <br /><br />
Telefone: <input type="tel" name="telefone"  /><br /><br />
Endereço: <textarea name="endereco"></textarea><br /><br />
Observação: <textarea name="obs"></textarea><br /><br />
<input type="submit" name="acao" value="Enviar" />
</form>
<?php
if($_SERVER['REQUEST_METHOD']=='POST' and $_SERVER['QUERY_STRING']=='acao=cadastro')
{
        
        $nome = (isset($_POST['nome']) and !empty($_POST['nome'])) ? $_POST['nome'] : $erro[]='Campo Nome em branco';


        $telefone = (isset($_POST['telefone']) and !empty($_POST['telefone'])) ? $_POST['telefone'] : $erro[]='Campo Telefone em branco';


        $endereco = (isset($_POST['endereco']) and !empty($_POST['endereco'])) ? $_POST['endereco'] : $erro[]='campo endereço em branco';


        $obs = (isset($_POST['obs']) and !empty($_POST['obs'])) ? $_POST['obs'] : $erro[]='Campo obs em branco.';


   $selecionardb = mysql_select_db('aulas')or die(mysql_error().'Falha ao selecionar base de dados');


        if(isset($erro))
        {
           for($u=0; $u < count($erro); $u++)
           {
              print $erro[$u].'<br />';
           }
        }else{


$inserir = mysql_query("INSERT INTO clientes (nome,telefone,endereco,obs) VALUES ('".$nome."','".$telefone."','".$endereco."','".$obs."')") or die(mysql_error());


($inserir) ? print '<script> alert ("Informações cadastradas com sucesso!");</script>': print 'Falha no cadastro';
}
}
?>
<a href="index2.php">Listar Clientes</a>
</body>
</html>

Porque aqui não damos códigos prontos, aqui mostramos o caminho a ser seguido, mostramos o lado para o estudo e conhecimento do que se está fazendo, aqui preocupamos em ensinar quem quer aprender, por isso não corrigir o formulário, apenas com as dicas que dei, se ele estudasse o faria com certeza funcionar, mais tudo bem, lá essa colher de chá pra os dois, desculpe em ser duro na resposta.

 

Segue o código corrigido... Se o arquivo de configuração do mysql dele estiver correto tudo dará certo, do contrário ele receberá alguma mensagem de erro por parte do banco de dados.

 

Neste formulários estamos trabalhando com a função isset(), empty(), laço de repetição (loop) for() e variáveis de servidor $_SERVER['QUERY_STRING'] e $_SERVER['REQUEST_METHOD']

 

Deem uma olhada e vejam se da pra entender, no que tiverem dúvidas perguntem. Também retirei o enctype do formulário, pois esta marcação apenas deve ser utilizada quando se trabalhar com campos para arquivos ok.

<?php
include 'config.php';
?>
<html>
<head>
<title>Aprendendo</title>
</head>
<body>
<h1>Cadastro de clientes:</h1>
<form method="post" action="?acao=cadastro" name="cadastro">
Nome: <input type="text" name="nome"/> <br /><br />
Telefone: <input type="tel" name="telefone"  /><br /><br />
Endereço: <textarea name="endereco"></textarea><br /><br />
Observação: <textarea name="obs"></textarea><br /><br />
<input type="submit" name="acao" value="Enviar" />
</form>
<?php
if($_SERVER['REQUEST_METHOD']=='POST' and $_SERVER['QUERY_STRING']=='acao=cadastro')
{
        
        $nome = (isset($_POST['nome']) and !empty($_POST['nome'])) ? $_POST['nome'] : $erro[]='Campo Nome em branco';


        $telefone = (isset($_POST['telefone']) and !empty($_POST['telefone'])) ? $_POST['telefone'] : $erro[]='Campo Telefone em branco';


        $endereco = (isset($_POST['endereco']) and !empty($_POST['endereco'])) ? $_POST['endereco'] : $erro[]='campo endereço em branco';


        $obs = (isset($_POST['obs']) and !empty($_POST['obs'])) ? $_POST['obs'] : $erro[]='Campo obs em branco.';


   $selecionardb = mysql_select_db('aulas')or die(mysql_error().'Falha ao selecionar base de dados');


        if(isset($erro))
        {
           for($u=0; $u < count($erro); $u++)
           {
              print $erro[$u].'<br />';
           }
        }else{


$inserir = mysql_query("INSERT INTO clientes (nome,telefone,endereco,obs) VALUES ('".$nome."','".$telefone."','".$endereco."','".$obs."')") or die(mysql_error());


($inserir) ? print '<script> alert ("Informações cadastradas com sucesso!");</script>': print 'Falha no cadastro';
}
}
?>
<a href="index2.php">Listar Clientes</a>
</body>
</html>

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.