testao35 0 Denunciar post Postado Maio 5, 2014 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
Alaerte Gabriel 662 Denunciar post Postado Maio 5, 2014 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
Cleiton Gomes 10 Denunciar post Postado Maio 5, 2014 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
testao35 0 Denunciar post Postado Maio 5, 2014 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
Cleiton Gomes 10 Denunciar post Postado Maio 5, 2014 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
testao35 0 Denunciar post Postado Maio 5, 2014 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
Alaerte Gabriel 662 Denunciar post Postado Maio 5, 2014 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
testao35 0 Denunciar post Postado Maio 5, 2014 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
Cleiton Gomes 10 Denunciar post Postado Maio 5, 2014 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
testao35 0 Denunciar post Postado Maio 5, 2014 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
Cleiton Gomes 10 Denunciar post Postado Maio 5, 2014 você esta usando qual de todos esse códigos no momento ? coloca ele aqui. Compartilhar este post Link para o post Compartilhar em outros sites
testao35 0 Denunciar post Postado Maio 5, 2014 <?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
Cleiton Gomes 10 Denunciar post Postado Maio 5, 2014 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
testao35 0 Denunciar post Postado Maio 5, 2014 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
Cleiton Gomes 10 Denunciar post Postado Maio 5, 2014 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
testao35 0 Denunciar post Postado Maio 5, 2014 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
Alaerte Gabriel 662 Denunciar post Postado Maio 5, 2014 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
Cleiton Gomes 10 Denunciar post Postado Maio 5, 2014 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
Alaerte Gabriel 662 Denunciar post Postado Maio 5, 2014 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