Ir para conteúdo

POWERED BY:

Arquivado

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

guigosnet

mascara para data

Recommended Posts

galera to com um probleminha no meu cadastro em php, mysql .

 

gostaria de deixa uma mascara de dd/mm/aaaa no meu textfield, e gravar no mysql como faço essa mascara?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mascara em php :

if(preg_match('/([0-9]{2})-([0-9]{2})-([0-9]{4})/',$data))
echo 'Formato de data Valido';
else
echo 'Formato de data Invalido';

Na hora de inserir no mysql insira no formato yyyy/mm/dd

$var = preg_replace('/([0-9]{2})-([0-9]{2})-([0-9]{4})/','\\3-\\2-\\1',$data);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você fala em máscara, você quer dizer enquanto vai sendo digitado vai aparecendo a formatação? Se for isto é com Javascript que se faz. Posso mover seu tópico para lá.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fernando Robrigo Cardoso,

 

Só uma observação:

 

Quando inserir no BD, é melhor que o campo da tabela esteja em DATE e a data a ser gravada em formatdo yyyy-mm-dd. Isso ajuda a organizar um ORDER BY numa consulta SQL, pois se houver 01/01/2010 e 31/12/2009, o ORDER BY DESC vai colocar a 31/12/2009 na frente da 01/01/2010, enquanto que em formato yyyy-mm-dd, o 2010-01-01 vai vir na frente de 2009-12-31.

 

Falo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poisé pessoal estou precisando , quando digite a data no formulario, e depois a função se vira pra gravar o formato certo, entende?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então pode ser esta função aqui.

function FormataData ( $data ){
		// passe a data no formato DD/MM/AAAA e retorna AAAA-MM-DD
	$x = implode('-', array_reverse(explode('/',$data)));
	return $x;
}

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fernando Robrigo Cardoso,

 

Só uma observação:

 

Quando inserir no BD, é melhor que o campo da tabela esteja em DATE e a data a ser gravada em formatdo yyyy-mm-dd. Isso ajuda a organizar um ORDER BY numa consulta SQL, pois se houver 01/01/2010 e 31/12/2009, o ORDER BY DESC vai colocar a 31/12/2009 na frente da 01/01/2010, enquanto que em formato yyyy-mm-dd, o 2010-01-01 vai vir na frente de 2009-12-31.

 

Falo

Pois é, foi o que eu disse no 'final' do meu post :

 

Mascara em php :

if(preg_match('/([0-9]{2})-([0-9]{2})-([0-9]{4})/',$data))
echo 'Formato de data Valido';
else
echo 'Formato de data Invalido';

Na hora de inserir no mysql insira no formato yyyy/mm/dd

$var = preg_replace('/([0-9]{2})-([0-9]{2})-([0-9]{4})/','\\3-\\2-\\1',$data);
Eu apenas fiz um teste para validação, pois @guigosnet queria uma máscara em formato dd/mm/yyyy, e recomendei logo em seguida para usar yyyy/mm/dd no db.

Nada impedi do usuario digitar dd/mm/yyyy e usar yyyy/mm/dd no db.

 

sakow?!

 

(edit)

@guigosnet Tanto a minha função quanto a do matias_rezende vão funcionar, mas recomendo a do matias_rezende para inversão na data, pois ER é mais lento.

Leia meu post acima : POST 2

 

 

 

[]'s

 

flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi como se aplica esta função

 

é uma coisa tao simples, tenho q dar tanta volta assim, para ajudar o user digitar a data?rs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem volta nenhuma... Vou fazer um exemplo completo... ainda é cedo e tô de bom humor hoje.

<input type="text" name="data" id="data" />

Neste input o usuário digitou a data de hoje assim 14/07/2009. O método do seu formulário é post.

 

No action do seu formulário, você faz assim...

function FormataData ( $data ){
		// passe a data no formato DD/MM/AAAA e retorna AAAA-MM-DD
	$x = implode('-', array_reverse(explode('/',$data)));
	return $x;
}

$data = FormataData($_POST['data']);
echo 'A data formatada ficou assim - '.$data;

Vai imprimir 2009-07-14.

 

Agora se o que você quer é que, enquanto o usuário vai digitando vai sendo colocada a barra, daí é com javascript... Assim é UMA das formas de fazer.

<script>
function MascaraData(data) {
	if(document.getElementById(data).value.length == 2) document.getElementById(data).value += '/';
	if(document.getElementById(data).value.length == 5) document.getElementById(data).value += '/';
}
</script>


<input type="text" name="data" id="data" onkeyup="MascaraData(this.id)" />

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola amigo,

 

olha so ja tive esse probleminha.

rsrsrs

Vou posta aki um codigo javascrit de mascara para varios valores. Tipo cpf, rg, dt, cep e tals.

Esse codigo você coloka no HEAD

 

<script language=javascript>
//MÁSCARA DE VALORES

function txtBoxFormat(objeto, sMask, evtKeyPress) {
	var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;


if(document.all) { // Internet Explorer
	nTecla = evtKeyPress.keyCode;
} else if(document.layers) { // Nestcape
	nTecla = evtKeyPress.which;
} else {
	nTecla = evtKeyPress.which;
	if (nTecla == 8) {
		return true;
	}
}

	sValue = objeto.value;

	// Limpa todos os caracteres de formatação que
	// já estiverem no campo.
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( ":", "" );
	sValue = sValue.toString().replace( ":", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( " ", "" );
	sValue = sValue.toString().replace( " ", "" );
	fldLen = sValue.length;
	mskLen = sMask.length;

	i = 0;
	nCount = 0;
	sCod = "";
	mskLen = fldLen;

	while (i <= mskLen) {
	  bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/") || (sMask.charAt(i) == ":"))
	  bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

	  if (bolMask) {
		sCod += sMask.charAt(i);
		mskLen++; }
	  else {
		sCod += sValue.charAt(nCount);
		nCount++;
	  }

	  i++;
	}

	objeto.value = sCod;

	if (nTecla != 8) { // backspace
	  if (sMask.charAt(i-1) == "9") { // apenas números...
		return ((nTecla > 47) && (nTecla < 58)); } 
	  else { // qualquer caracter...
		return true;
	  } 
	}
	else {
	  return true;
	}
  }
</script>

 

E esse outro nos campos q você for usa.

 

<input name="dt" type="text" id="dt" onKeyPress="return txtBoxFormat(this, '99/99/9999', event);" maxlength="10" >

você pode usar essa codigo para varias coisas para isso é so muda o '99/99/9999' pro formato q quise. Tipo cpf 999.999.999-99

Espero ter ajudado. ^^

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.