Jump to content


Photo

Campo Data


  • Faça o login para participar
4 replies to this topic

#1 hkss

hkss

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 16/08/2010, 21:26

Fala galera, sou novo por aqui estou começando a estudar sobre php e sql, estou encontrando uma dificuldade imensa com o campo data, gostaria de inserir a data no banco de dados, consigo cadastrar o formulário inteiro porém a data não cadastra, aparece no BD 0000-00-00, esse campo data seria a data de nascimento, incrementei um código para que conforme o usuário for digitando os números vai deixar dessa forma __/__/____ automaticamente.
Porém não consigo cadastrar essa data na tabela usuarios no campo data_nasc, o tipo do campo é date.

formulario_cadastro.php
<!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>Formul&aacute;rio Cadastro</title>
<style type="text/css">
<!--
body {
	background-color: #CCCCCC;
}
-->
</style>

</head>

<body>
Formul&aacute;rio de Cadastro <br /><br />
<form name="cadastro" method="post" action="cadastra.php">
Nome<br /> 
<input name="nome" type="text" id="nome" value="<?php echo $nome; ?>" /><br />
<br />
Sobrenome<br /> 
<input name="sobrenome" type="text" id="sobrenome" value="<?php echo $sobrenome; ?>" /><br />
<br />
<script type="text/javascript">
			function Formatadata(Campo, teclapres)
			{
				var tecla = teclapres.keyCode;
				var vr = new String(Campo.value);
				vr = vr.replace("/", "");
				vr = vr.replace("/", "");
				vr = vr.replace("/", "");
				tam = vr.length + 1;
				if (tecla != 8 && tecla != 8)
				{
					if (tam > 0 && tam < 2)
						Campo.value = vr.substr(0, 2) ;
					if (tam > 2 && tam < 4)
						Campo.value = vr.substr(0, 2) + '/' + vr.substr(2, 2);
					if (tam > 4 && tam < 7)
						Campo.value = vr.substr(0, 2) + '/' + vr.substr(2, 2) + '/' + vr.substr(4, 7);
				}
			}
		</script>
Data de Nascimento<br />
<input name="data_nasc" type="text" id="data_nasc" maxlength="10" onKeyUp="Formatadata(this,event)" value="<?php echo $data_nasc; ?>" />
<br />
<br />
Email<br /> 
<input name="email" type="text" id="email" value="<?php echo $email; ?>" /><br />
<br />
Nome de Usu&aacute;rio<br /> 
<input name="usuario" type="text" id="usuario" value="<?php echo $usuario; ?>" /><br />
<br />
O Sistema vai gerar uma senha para seu usu&aacute;rio.
<br />
<br />
<input type="reset" name="Reset" value="Apagar" />
<input type="submit" name="Submit" value="Enviar" />

</form>
</body>
</html>

o próximo arquivo que irei postar é grande então só vou postar a parte que envia as informações para o banco.

cadastrar.php
// Inserindo os dados no banco de dados

		 
		$sql = mysql_query("INSERT INTO usuarios (nome, sobrenome, email, usuario, senha, data_nasc, data_cadastro) 
							VALUES('{$nome}', '{$sobrenome}', '{$email}', '{$usuario}', '{$senha}', '{$data_nasc}', now())") 
							or die( mysql_error() );

		if(!$sql){

			echo "Ocorreu algum erro ao criar sua conta, por favor entre em contato com a equipe do Site.";

		}
		else {

			$usuario_id = mysql_insert_id();
Não entendo por que ele grava as outras informações menos a data. =/

antes disso logo no começo do documento tem essa parte:

$nome = trim($_POST['nome']);
$sobrenome = trim($_POST['sobrenome']);
$email = trim($_POST['email']);
$usuario = trim($_POST['usuario']);
$data_nasc = trim($_POST['data_nasc']);

essa parte é da consulta ou de inserir os dados no Banco?

Fui seguindo um tutorial, porém o mesmo não tinha o campo data.
Estou tentando fazer mais quero entender como funciona, já olhei na net e achei algo falando sobre format data, mais não consegui mesmo.

Se alguém puder ajudar agradeço.
abs

#2 Cristiano Galdino

Cristiano Galdino

    Dark Defender

  • Administradores
  • 3738 posts
  • Sexo:Masculino
  • Localidade:Brasília, DF

Posted 16/08/2010, 21:30

O campo do tipo date no MySQL requer um valor no formato YYYY-MM-DD, ou seja, você terá que receber os dados digitado pelo usuário no formato DD/MM/YYYY e depois formatá-lo para o MySQL.
Cristiano Galdino
- http://cristiano.galdino.net/

“Since 2003”


#3 hkss

hkss

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 16/08/2010, 22:03

como?

Peguei um exemplo aqui:

SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");  
         dataProducao = format.format(data);

esse seria para formatar a data de DD/MM/YYYY para YYYY/MM/DD, certo?
Não entendo onde devo informar o nome do meu campo data que é data_nasc, é substituindo esse dataProducao por data_nasc?

#4 André Manoel

André Manoel

    Doutor

  • Usuários
  • 996 posts
  • Sexo:Masculino
  • Localidade:Brasilia

Posted 17/08/2010, 10:49

Você pode fazer o seguinte...

Antes de inserir no banco de dados você pega e transforma a data 'normal' para o formato de data do mysql:

Segue um exemplo:


$datapt = "31/01/2010";

$mysqldate = implode("-", array_reverse( explode("/",$datapt)));

echo $mysqldate;


E quando você for ler do mysql... ele virá no formato "ano-mes-dia"...

Aí para exibir a data no formato comum que conhecemos você pode fazer o seguinte:

$datamysql = "2010-01-31";

$datanormal = implode("/",array_reverse( explode("-",$datamysql) ));

echo $datanormal;

(y)
Iniciando na Ajuda On line...

Posted Image Meu post lhe ajudou? Reputar/votar é uma das formas de agradecer.

#5 hkss

hkss

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 18/08/2010, 19:56

Obrigado, vou testar e posto o resultado aqui.
abs

Você pode fazer o seguinte...

Antes de inserir no banco de dados você pega e transforma a data 'normal' para o formato de data do mysql:

Segue um exemplo:


$datapt = "31/01/2010";

$mysqldate = implode("-", array_reverse( explode("/",$datapt)));

echo $mysqldate;


E quando você for ler do mysql... ele virá no formato "ano-mes-dia"...

Aí para exibir a data no formato comum que conhecemos você pode fazer o seguinte:

$datamysql = "2010-01-31";

$datanormal = implode("/",array_reverse( explode("-",$datamysql) ));

echo $datanormal;

(y)


Opa, voltando para agradecer novamente, consegui.

$data_nasc=$_POST["data_nasc"];
$data_nasc = implode("-", array_reverse(explode("/", $data_nasc)));

Obrigado.

ops, surgiu uma outra duvida referente a checar essa data, tipo quando digito qualquer data cadastra normal, então se o usuario quiser cadastrar 01/02/3045 ou 01/02/1500 ele consegue cadastrar normal, estou procurando algo sobre o assunto que fale como impedir isso, alguém sabe como faço para impedir isso?
Estou batendo cabeça e por esse motivo estou gostando de ficar cada vez mais preso estudando sobre php e sql.
Obrigado!




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq