
Campos Em Branco Mysql
#1
Posted 15/10/2009, 20:15
Fiz um script simples para incluir os emails no banco de dados, ele insere tudo normal, mas quando vou ver no banco, tem varios campos em branco...tipo assim..
id email
102 teste@teste.com
103 campo vazio
104 campo vazio
105 teste@teste.com
abaixo meu codigo
[codebox]<form action="index.php" method="post">
<table border="0" align="center">
<tr>
<td >Email</td>
<td ><span id="sprytextfield1">
<label>
<input type="text" name="email" />
</label>
</tr>
<tr>
<td><label>
<input type="submit" name="button" id="button" value="Enviar" />
</label></td>
<td> </td>
</tr>
</table>
</form>[/codebox]
codigo php
[codebox]<?php
$conn=mysql_connect("host","usuario","senha");
$sel=mysql_select_db("banco",$conn);
$email_disp=@$_POST['email'];
$qr=mysql_query("INSERT INTO email(email)VALUES('$email_disp')");
?>[/codebox]
Valeu pela ajuda pessoal...
#2
Posted 15/10/2009, 20:26

#3
Posted 16/10/2009, 09:28
http://www.guilhermevenerato.com
#4
Posted 16/10/2009, 13:52
if(empty($email))
{
echo "digite um email";
}
[/codebox]
#5
Posted 16/10/2009, 14:02
<?php
$conn=mysql_connect("host","usuario","senha");
$sel=mysql_select_db("banco",$conn);
$email_disp=@$_POST['email'];
$erro .= empty($email_disp) ? 'Digite seu email!<br>' : NULL;
if(empty($erro)) {
$qr=mysql_query("INSERT INTO email(email)VALUES('$email_disp')");
echo "Email inserido com sucesso!";
}else{
echo $erro;
}
?>
[/codebox]
Com isso, seu problema será resolvido.
Até mais

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador
Twitter: HostCheap
#6
Posted 16/10/2009, 15:37
.=
?
#7
Posted 16/10/2009, 16:11
Explicando de forma bem bruta:
Quando colocamos somente =, ele redefine a variável.
Se colocarmos .=, ele mantém o registro anterior e adiciona mais um.
Caso ele deseje fazer mais verificações, é só manter neste padrão.
Até mais

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador
Twitter: HostCheap
#8
Posted 16/10/2009, 19:04
.=
é para concatenar strings
.Esse modo de verificação que está no tópico não validam o e-mail, só verificam se a
string
está vazia. O ideal aí seria fazer uma expressão regular para checar se o conteúdo é um e-mail válido. Outra sugestão é abrir a conexão com o Banco de Dados apenas se o e-mail for válido.<?php if( exp_reg_email_valido ) : conecta_com_o_banco; seleciona_a_tabela; insere_o registro; fecha_a_conexão_com_o_banco; e imprime_mensagem_de_sucesso; else: imprime_mensagem_de_erro; endif; ?>
#10
Posted 16/10/2009, 20:56
A propósito:
<?php if( empty( $_POST["email"] ) ) : $connect = mysql_connect( "host", "user", "pass" ); $select_db = mysql_select_db( "base", $connect ); $query = mysql_query( "INSERT INTO email( email ) VALUES ( '" . $_POST["email"] . "' );" ); echo "Success"; else : echo "Fail"; endif; ?>
#11
Posted 17/10/2009, 00:35
<?php $conn=mysql_connect("host","usuario","senha");$sel=mysql_select_db("banco",$conn);$email_disp=@$_POST['email'];$erro .= empty($email_disp) ? 'Digite seu email!<br>' : NULL;$erro .= (!eregi("^[-_a-z0-9]+(\\.[-_a-z0-9]+)*\\@([-a-z0-9]+\\.)*([a-z]{2,4})$", $email_disp)) ? 'E-mail inválido<br>' : NULL;if(empty($erro)) { $qr=mysql_query("INSERT INTO email(email)VALUES('$email_disp')"); echo "Email inserido com sucesso!"; }else{ echo $erro;}?>
Ele irá verificar se está vazio, caso estiver, retorna FALSE. Se não estiver vazio, retorna TRUE e passa para a próxima concatenação, onde verifica o formado do email.
Se não teríamos que criar outro IF, tornando o script maior ainda.
Expressão regular tirada de: http://www.vedovelli.com.br/?p=23
OBS: Não testei o uso da expressão.
Quem quiser melhorá-la, fique a vontade.
Até mais

Edição feita por: Dudu, 17/10/2009, 00:39.
Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador
Twitter: HostCheap
#12
Posted 17/10/2009, 01:33
Não há necessidade de conectar ao banco de dados antes de verificar se o dado, nesse caso apenas o e-mail, está correto. Só vai gerar carga no servidor.
Quando são vários campos a serem validados eu sugiro assim:
<?php $_ERROR = array(); // CHECK USERNAME if( strlen( $_POST["username"] ) < 5 || strlen( $_POST["username"] ) > 15 ) : $_ERROR["username"] = "O nome de usuário deve ter de 5 a 15 caracteres."; endif; // CHECK E-MAIL if( eregi( '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'. '@'. '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+\.'. '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $_POST["email"] ) ) : $_ERROR["email"] = "E-mail inválido."; endif; // CHECK URL, OPTIONAL if( !empty( $_POST["url"] ) ) : if( @fclose( @fopen( $_POST["url"], 'r' ) ) ) : $_ERROR["url"] = "URL inválido."; endif; endif; if( empty( $_ERROR ) ) : echo "Ok, nenhum erro, posso fazer o que quero com os dados"; else : echo "Erro: <br/>"; echo "<ul>"; reset( $_ERROR ); while( key( $_ERROR ) !== null ) : echo "<li>" . current( $_ERROR ) . "</li>"; next( $_ERROR ); endwhile; echo "</ul>"; endif; ?>
Só estou mostrando modos alternativos e melhorando a manutenibilidade do código e a usabilidade para o usuário.
Referências da validação de e-mail e url, respectivamente:
- http://forum.wmonlin...howtopic=121194
- http://forum.wmonlin...howtopic=120946
#13
Posted 17/10/2009, 02:57
Bom, assim fica bem completo:
[codebox]
<?php
if(@$_POST) {
$conn=mysql_connect("localhost","root","");
$sel=mysql_select_db("testes2",$conn);
$email = addslashes($_POST['email']);
$sql = mysql_query("SELECT COUNT(*) AS total FROM email WHERE email = '".$email."'") or die(mysql_error());
$row = mysql_fetch_array($sql);
$_ERROR .= empty($email) ? 'Digite um e-mail!<br>' : NULL;
$_ERROR .= (!empty($email)) && (!eregi( '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'. '@'. '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+\.'. '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $email)) ? "E-mail inválido!<br>" : NULL;
$_ERROR .= $row['total'] > 0 ? 'E-mail existente!<br>' : NULL;
if( empty($_ERROR) ) :
mysql_query("INSERT INTO email (email)VALUES('".$email."')");
else :
echo "Erro: <br/>";
echo $_ERROR;
endif;
}
?>
<form method="post">
<table border="0" align="center">
<tr>
<td >Email</td>
<td ><span id="sprytextfield1">
<label>
<input type="text" name="email" />
</label>
</tr>
<tr>
<td><label>
<input type="submit" name="button" id="button" value="Enviar" />
</label></td>
<td> </td>
</tr>
</table>
</form>
[/codebox]
Até mais

Edição feita por: Dudu, 17/10/2009, 02:57.
Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador
Twitter: HostCheap
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)