Diego Fox 0 Denunciar post Postado Agosto 21, 2008 Olá Pessoal, Estou com um problema. Estou criando um pequeno gerenciador de noticias para um site. Quero fazer o seguinte. Quando o usuario não completar todos os campos (no caso são 2), não se registre nada no banco de dados. Então pra isso eu coloquei em um determinado momento, if ($titulo == null || $texto == null) {echo "<p class='erro'>Erro: Preencha todos os campos!</p><p class='voltar'><a href='java script:history.back()' title='Voltar'>« Voltar</a></p>";} else { $sql = mysql_query($sql) or die ("<p class='erro'>Houve erro na gravação dos dados.</p><p class='voltar'><a href='java script:history.back()' title='Voltar'>« Voltar</a></p>"); Mas o problema é que sempre tá dando o erro..Como se o usuario não registrase nada. O que estou fazendo de errado? segue o codigo completo da pagina. <? session_start(); require("verifica.php"); /* aqui, inclui o arquivo verifica.php */ /* Conecta ao Banco de Dados */ include 'conexao.php'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt"> <head> <title></title> <script type="text/javascript" src="scripts.js"></script> </head> <body onload="linkfocus(); tooltip.init(); externalLinks();"> <? include 'topo.php'; ?> <p> </p> <? $texto1 = str_replace('[link=', '<a rel="external" href="', $_POST['texto']); $texto2 = str_replace('[show=', '<a rel="pop" href="show.php?id=', $texto1); $texto3 = str_replace('[secao=', '<a rel="ajax" href="', $texto2); $texto4 = str_replace('[/]', '</a>', $texto3); $texto5 = str_replace(']', '">', $texto4); /* * monta query em SQL para insercao */ $sql = "INSERT INTO noticias ( dia, mes, ano, titulo, texto ) VALUES ( '".$_POST['dia']."', '".$_POST['mes']."', '".$_POST['ano']."', '".$_POST['titulo']."', '".$texto5."' )"; if ($titulo == null || $texto == null) {echo "<p class='erro'>Erro: Preencha todos os campos!</p><p class='voltar'><a href='java script:history.back()' title='Voltar'>« Voltar</a></p>";} else { $sql = mysql_query($sql) or die ("<p class='erro'>Houve erro na gravação dos dados.</p><p class='voltar'><a href='java script:history.back()' title='Voltar'>« Voltar</a></p>"); /* Grava os dados no Log */ $nome = $_SESSION["login_user"]; $titulo_log = $_POST['titulo']; $texto_log = $_POST['texto']; $h1 = gmdate(H)-3; if ($h1<0) {$hora=$h1+24;} if ($h1>=0) {$hora=$h1;} $time = $hora.":".date(i).":".date(s); $conteudo = " Às $time, $nome publicou a seguinte notícia: $titulo_log $texto_log "; include 'criar_log.php'; echo "<p class='sucesso'>Notícia publicada com sucesso!</p><p class='voltar'><a href='java script:history.back()' title='Voltar'>« Voltar</a></p>";} ?> <p></p> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
André Baptista 0 Denunciar post Postado Agosto 21, 2008 tenta coloca assim no seu if.. if (($titulo == "") || ($texto == "")) []'s Compartilhar este post Link para o post Compartilhar em outros sites
rabusky 0 Denunciar post Postado Agosto 21, 2008 xx Compartilhar este post Link para o post Compartilhar em outros sites
Diego Fox 0 Denunciar post Postado Agosto 21, 2008 Olá, Dessa forma também não adianta.. eu procurei fazer assim.. if(($_POST['titulo']=="") && ($_POST['texto']=="")) e rolou... Agora estou fazendo o mesmo, que deu certo nesse, em outro formulario..e não rola nenhuma das opções.. Cara, vou ficar maluco.. <? /* Conecta ao Banco de Dados */ include 'conexao.php'; /* Variáveis */ $nome = $_POST['nome']; $email = $_POST['email']; echo $nome"<br>"; echo $email; /* * monta query em SQL para inserção */ $sql = "INSERT INTO carta ( nome, email ) VALUES ( '".$_POST['nome']."', '".$_POST['email']."' )"; /* * monta query em SQL para exclusão */ $sql2 = "DELETE FROM carta WHERE nome='".$_POST['nome']."' AND email='".$_POST['email']."'"; if(($_POST['nome']=="") && ($_POST['email']=="")) {echo "<p class='erro'>Erro: Preencha todos os campos!</p><p class='voltar'><a href='java script:history.back()' title='Voltar'>« Voltar</a></p>";} else { if ($acao=="Cadastrar") { $sql3 = mysql_query("SELECT email FROM carta WHERE email='".$_POST['email']."'") or die ("<p>Ocorreu o seguinte erro:". mysql_error()."</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"); /* consulta no bd */ $num = mysql_num_rows($sql3); /* vê quantos registros tem no bd */ if($num >= "1"){ /* se tiver 1 ou mais registros, mostra a mensagem a seguir */ echo "<p>O email fornecido já está cadastrado.</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"; } else { $sql = mysql_query($sql) or die ("<p>Houve um erro na gravação dos dados.</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"); $msg = "Bem-Vindo à Carta de Notícias".$_POST['nome'].". Periodicamente, você receberá as novidades em relação à banda."; $headers = "From: Badogue <diego.fox001@gmail.com>\r\n"; mail($_POST['email'], "Badogue - Carta de Notícias", $msg, $headers); echo "<p>Obrigado, ".$_POST['nome'].".</p>"; echo "<p>O e-mail ".$_POST['email']." foi cadastrado com sucesso.</p>"; echo "<p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"; } } else if ($acao=="Descadastrar") { $sql4 = mysql_query("SELECT email FROM carta WHERE email='".$_POST['email']."'") or die ("<p>Ocorreu o seguinte erro:". mysql_error()."</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"); /* consulta no bd */ $num = mysql_num_rows($sql4); /* vê quantos registros tem no bd */ if($num == "0"){ /* se não tiver nenhum registro, mostra a mensagem a seguir */ echo "<p>O email fornecido não está cadastrado.</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"; } else { $sql5 = mysql_query($sql2) or die ("<p>Houve um erro na gravação dos dados.</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"); echo "<p>Pronto, ".$_POST['nome'].".</p>"; echo "<p>O e-mail ".$_POST['email']." foi descadastrado com sucesso.</p>"; echo "<p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"; } } } ?> Já usei $nome e $email... já usei NULL, já usei ""... Não é possivel isso.. O que estou fazendo de errado? obrigado... Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Agosto 21, 2008 Amigo, tu tem que colocar a vlidação ANTES do insert e não depois, como que ele vai rodar a validação depois do insert ? :o Compartilhar este post Link para o post Compartilhar em outros sites
Diego Fox 0 Denunciar post Postado Agosto 21, 2008 Desculpa Alarte, eu colei o codigo errado.. é assim.. <? /* Conecta ao Banco de Dados */ include 'conexao.php'; /* Variáveis */ $nome = $_POST['nome']; $email = $_POST['email']; /* * monta query em SQL para inserção */ $sql = "INSERT INTO carta ( nome, email ) VALUES ( '".$_POST['nome']."', '".$_POST['email']."' )"; /* * monta query em SQL para exclusão */ $sql2 = "DELETE FROM carta WHERE nome='".$_POST['nome']."' AND email='".$_POST['email']."'"; if(($_POST['nome']=="") && ($_POST['email']=="")) {echo "<p class='erro'>Erro: Preencha todos os campos!</p><p class='voltar'><a href='java script:history.back()' title='Voltar'>« Voltar</a></p>";} else { if ($acao=="Cadastrar") { $sql3 = mysql_query("SELECT email FROM carta WHERE email='".$_POST['email']."'") or die ("<p>Ocorreu o seguinte erro:". mysql_error()."</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"); /* consulta no bd */ $num = mysql_num_rows($sql3); /* vê quantos registros tem no bd */ if($num >= "1"){ /* se tiver 1 ou mais registros, mostra a mensagem a seguir */ echo "<p>O email fornecido já está cadastrado.</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"; } else { $sql = mysql_query($sql) or die ("<p>Houve um erro na gravação dos dados.</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"); $msg = "Bem-Vindo à Carta de Notícias".$_POST['nome'].". Periodicamente, você receberá as novidades em relação à banda."; $headers = "From: Badogue <diego.fox001@gmail.com>\r\n"; mail($_POST['email'], "Badogue - Carta de Notícias", $msg, $headers); echo "<p>Obrigado, ".$_POST['nome'].".</p>"; echo "<p>O e-mail ".$_POST['email']." foi cadastrado com sucesso.</p>"; echo "<p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"; } } else if ($acao=="Descadastrar") { $sql4 = mysql_query("SELECT email FROM carta WHERE email='".$_POST['email']."'") or die ("<p>Ocorreu o seguinte erro:". mysql_error()."</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"); /* consulta no bd */ $num = mysql_num_rows($sql4); /* vê quantos registros tem no bd */ if($num == "0"){ /* se não tiver nenhum registro, mostra a mensagem a seguir */ echo "<p>O email fornecido não está cadastrado.</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"; } else { $sql5 = mysql_query($sql2) or die ("<p>Houve um erro na gravação dos dados.</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"); echo "<p>Pronto, ".$_POST['nome'].".</p>"; echo "<p>O e-mail ".$_POST['email']." foi descadastrado com sucesso.</p>"; echo "<p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"; } } } ?> Você poderia me passar um exemplo? Compartilhar este post Link para o post Compartilhar em outros sites
Diogo Lanna 0 Denunciar post Postado Agosto 21, 2008 cara, você nao pode comparar a variavel com null pq por padrao td variavel no PHP é null, ja que nao temos que declara-las .... outra coisa /* Variáveis */ $nome = $_POST['nome']; $email = $_POST['email']; if(($_POST['nome']=="") && ($_POST['email']=="")) você usa nome e email e depois verifica no post ?? pra que ??? faz assim, $nome = (str)trim($_POST['nome']); $email= (str)trim($_POST['email']); e verifica em cima de $nome e $email Compartilhar este post Link para o post Compartilhar em outros sites
Diego Fox 0 Denunciar post Postado Agosto 21, 2008 Olá Diogo, Realmente ficou sem porque isso que usei.. Eu apenas mudei a verificação para ($_POST['nome']) e ($_POST['email']) e deixei lá em cima a variavel.. Ou seja, já tinha tentado dessa forma e não deu certo mesmo. Agora coloquei como você me disse... $nome = (str)trim($_POST['nome']); $email= (str)trim($_POST['email']); E também não dá certo... Já revisei o meu formulario... E não acho erro nos campos. Estão certos. <? /* Conecta ao Banco de Dados */ include 'conexao.php'; ?> <div id="box2"> <h3>Carta de Notícias</h3> <p><span class="aviso">Cadastre-se aqui!</span></p> <form action="form_newsletter.php" id="formulario_newsletter" onsubmit="return checkForm2();" onreset="limpaForm();"> <fieldset> <p id="erro">Preencha corretamente!</p> <label for="nome"><span style="text-decoration:underline;">N</span>ome:</label> <input name="nome" type="text" id="nome" tabindex="1" accesskey="n" size="18" value="" /><br /><br /> <label for="email"><span style="text-decoration:underline;">E</span>-mail:</label> <input name="email" type="text" id="email" tabindex="2" accesskey="e" size="18" value="" /><br /><br /> <label for="acao">Ação:</label> <select name="acao" id="acao" tabindex="3"> <option value="Cadastrar">Cadastrar</option> <option value="Descadastrar">Descadastrar</option> </select><br /><br /> <button type="submit" tabindex="4">Enviar</button> <button type="reset" tabindex="5">Limpar</button> </fieldset> </form> </div> </body> </html> A duvida segue,... Mas obrigado assim mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
Diogo Lanna 0 Denunciar post Postado Agosto 21, 2008 da um echo lá em nome e email pq nao deve ta passando nada do formulario nao Compartilhar este post Link para o post Compartilhar em outros sites
Diego Fox 0 Denunciar post Postado Agosto 21, 2008 Verdade, Não está passando.. Acho que a forma que eu fiz um formulario, deve tá errado.. Agora é descobrir o que é... Ai Meu Santo Deus.. EU vou ficar louco...hehehehe... Eu mudei para <form action="form_newsletter.php" method="post" id="formulario_newsletter"> E agora não apareceu nada... Compartilhar este post Link para o post Compartilhar em outros sites
André Baptista 0 Denunciar post Postado Agosto 21, 2008 manda o codigo do seu formulario.. Compartilhar este post Link para o post Compartilhar em outros sites
Diego Fox 0 Denunciar post Postado Agosto 21, 2008 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> </head> <body> <? /* Conecta ao Banco de Dados */ include 'conexao.php'; ?> <div id="box2"> <h3>Carta de Notícias</h3> <p><span class="aviso">Cadastre-se aqui!</span></p> <form action="form_newsletter.php" id="formulario_newsletter" onsubmit="return checkForm2();" onreset="limpaForm();"> <fieldset> <p id="erro">Preencha corretamente!</p> <label for="nome"><span style="text-decoration:underline;">N</span>ome:</label> <input name="nome" type="text" id="nome" tabindex="1" accesskey="n" size="18" value="" /><br /><br /> <label for="email"><span style="text-decoration:underline;">E</span>-mail:</label> <input name="email" type="text" id="email" tabindex="2" accesskey="e" size="18" value="" /><br /><br /> <label for="acao">Ação:</label> <select name="acao" id="acao" tabindex="3"> <option value="Cadastrar">Cadastrar</option> <option value="Descadastrar">Descadastrar</option> </select><br /><br /> <button type="submit" tabindex="4">Enviar</button> <button type="reset" tabindex="5">Limpar</button> </fieldset> </form> </div> </body> </html> Tá na mão... Compartilhar este post Link para o post Compartilhar em outros sites
André Baptista 0 Denunciar post Postado Agosto 21, 2008 amigo.. você tem que passar a variavel ação! <select name="acao" id="acao" tabindex="3"> <option value="Cadastrar">Cadastrar</option> <option value="Descadastrar">Descadastrar</option> </select> ponha isso no seu cabeçario.. $acao = $_POST['acao']; testa ai e retorna.. []'s Compartilhar este post Link para o post Compartilhar em outros sites
Diego Fox 0 Denunciar post Postado Agosto 21, 2008 Pois é cara, Nem assim rolou.. Eu acabei fazendo tudo novamente e diferente.. agora rolou...Mas agora o problema é mais na frente... mudei até os nomes dos arquivos pra dá sorte, hehehe... fiz assim... FORMULARIO: cartinha.php <? session_start(); require("verifica.php"); /* aqui, inclui o arquivo verifica.php */ /* Conecta ao Banco de Dados */ include 'conexao.php'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt"> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta name="author" content="Diego Matos Pereira (diego.fox001@gmail.com)" /> <meta name="language" content="pt-br" /> <link rel="shortcut icon" href="icone.ico" /> <link href="" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="scripts.js"></script> </head> <body onload="linkfocus(); tooltip.init(); externalLinks();"> <p> </p> <form action="insertcartinha.php" method="post" id="inserir_cartinha"> <fieldset> <legend>Cadastrar Email</legend> <div id="preview"></div> <div id="form"> <label></label> <br /> <br /> <label for="titulo"><span style="text-decoration:underline;">N</span>ome:</label> <input name="nome" id="nome" type="text" tabindex="1" accesskey="t" /><br /><br /> <label for="texto"><span style="text-decoration:underline;">E</span>-mail:</label> <input name="email" id="email" type="text" tabindex="1" accesskey="t" /><br /><br /> <label for="acao">Ação:</label> <select name="acao" id="acao" tabindex="3"> <option value="Cadastrar">Cadastrar</option> <option value="Descadastrar">Descadastrar</option> </select><br /><br /> </div> <p> </p> <div id="options"> <p><button type="submit">Enviar</button><button type="reset" onclick="limp()">Limpar</button></p> </div> </fieldset> </form> <p> </p> </body> </html> ENVIO PHP: insertcartinha.php <? session_start(); require("verifica.php"); /* aqui, inclui o arquivo verifica.php */ /* Conecta ao Banco de Dados */ include 'conexao.php'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt"> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta name="author" content="Diego Matos Pereira (diego.fox001@gmail.com)" /> <meta name="language" content="pt-br" /> <link rel="shortcut icon" href="../../icone.ico" /> <link href="" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="scripts.js"></script> </head> <body onload="linkfocus(); tooltip.init(); externalLinks();"> <p> </p> <? /* * monta query em SQL para insercao */ $sql = "INSERT INTO carta ( nome, email ) VALUES ( '".$_POST['nome']."', '".$_POST['email']."')"; if(($_POST['nome']=="") && ($_POST['email']=="")) {echo "<p class='erro'>Erro: Preencha todos os campos!</p><p class='voltar'><a href='java script:history.back()' title='Voltar'>« Voltar</a></p>";} else { if ($_POST['acao']=="Cadastrar") { $sql3 = mysql_query("SELECT email FROM carta WHERE email='".$_POST['email']."'") or die ("<p>Ocorreu o seguinte erro:". mysql_error()."</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"); /* consulta no bd */ $num = mysql_num_rows($sql3); /* vê quantos registros tem no bd */ if($num >= "1"){ /* se tiver 1 ou mais registros, mostra a mensagem a seguir */ echo "<p>O email fornecido já está cadastrado.</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"; } else { $sql = mysql_query($sql) or die ("<p>Houve um erro na gravação dos dados.</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"); $msg = "Bem-Vindo à Carta de Notícias".$_POST['nome'].". Periodicamente, você receberá as novidades em relação à banda."; $headers = "From: Badogue <diego.fox001@gmail.com>\r\n"; mail($_POST['email'], "Badogue - Carta de Notícias", $msg, $headers); echo "<p>Obrigado, ".$_POST['nome'].".</p>"; echo "<p>O e-mail ".$_POST['email']." foi cadastrado com sucesso.</p>"; echo "<p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"; } } else if ($_POST['acao']=="Descadastrar") { $sql4 = mysql_query("SELECT email FROM carta WHERE email='".$_POST['email']."'") or die ("<p>Ocorreu o seguinte erro:". mysql_error()."</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"); /* consulta no bd */ $num = mysql_num_rows($sql4); /* vê quantos registros tem no bd */ if($num == "0"){ /* se não tiver nenhum registro, mostra a mensagem a seguir */ echo "<p>O email fornecido não está cadastrado.</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"; } else { $sql5 = mysql_query($sql2) or die ("<p>Houve um erro na gravação dos dados.</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"); echo "<p>Pronto, ".$_POST['nome'].".</p>"; echo "<p>O e-mail ".$_POST['email']." foi descadastrado com sucesso.</p>"; echo "<p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"; } } } ?> <p></p> </body> </html> Agora, quando eu cadastro um email e nome, fica tudo ok. Vai para o banco de dados certinho. O lance é quando vou descastrar o nome e email... Fiquei preso no meu erro... $sql5 = mysql_query($sql2) or die ("<p>Houve um erro na gravação dos dados.</p><p><a href='java script:window.close()' title='Fechar'>[X] Fechar</a></p>"); do arquivo, insertcartinha.php E desculpa os meus problemas? :blink: Compartilhar este post Link para o post Compartilhar em outros sites
rabusky 0 Denunciar post Postado Agosto 21, 2008 xx Compartilhar este post Link para o post Compartilhar em outros sites
André Baptista 0 Denunciar post Postado Agosto 21, 2008 cade seu $sql2 ? Compartilhar este post Link para o post Compartilhar em outros sites
Diego Fox 0 Denunciar post Postado Agosto 21, 2008 Aê André, ACHOOOOOOOOOOOOO!! HEHEHE $sql2 = "DELETE FROM carta WHERE nome='".$_POST['nome']."' AND email='".$_POST['email']."'"; mi isquici.. hehehheehhe UHUU... Valeu galera... Agora vou postar outro topico com outra duvida ainda mais cabulosa..heheh Rabusky, obrigadão também. Compartilhar este post Link para o post Compartilhar em outros sites
André Baptista 0 Denunciar post Postado Agosto 21, 2008 \o/ boa! Compartilhar este post Link para o post Compartilhar em outros sites