Ir para conteúdo

POWERED BY:

Arquivado

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

Ruy Tortato

[Resolvido] Campo data PHP

Recommended Posts

Olá pessoal.

Estou desenvolvendo um site e estou usando PHP e MySQL.

Quando faço o cadastro de campos data, armazena corretamente no banco de dados.

Quando busco o campo data, ela aparece no formato yyyy/mm/dd. Então utilizo o echo date para ajustar para dd/mm/yyyy. Até aí ok. O problema é que quando exibo campos data vazios com o echo date, me retorna o valor de 01/01/1970, quando deveria ser null. Sem a formatação aparece vazio.

Que tipo de filtro devo usar para quando a data for vazia, apareça vazia.

Exemplo de código de campo data:

<?php echo date('d/m/Y', strtotime($row_obreiro['cad_datacas'])); ?> - campo vazio, mostra 01/01/1970;

<?php echo $row_obreiro['cad_filnasci5']; ?> - campo vazio, mostra vazio.

Obrigado.

 

Ruy Tortato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sei que da pra brincar com isso de date(strtotime) bla bla, infelizmente não conheço muito.... masss posso dar uma dica

 

vamos tentar montar uma função como :

 

// Esta funcao seria para buscar do banco a data e formatar,

// existem outras opções de manipulação, assim acho mais didático;

 

function dataBR($data){

$data = explode('-',$data);

return $data[2].'/'.$data[1].'/'.$data['0'];

}

 

Bom lá no banco o certo é ser campo DATE

 

se na hora a data não for preenchida, o campo lá no banco ficaria assim 0000-00-00

 

ou seja

no php tu pode fazer apenas uma condição até mesmo com Operadores ternários

 

algo como

 

// Fazendo a variavel ficar em branco casa nao tenha inserido uma data no 'cadastro';

 

$dataValida = $row_obreiro['cad_datacas'] == '0000-00-00' ? '' : dataBR($row_obreiro['cad_datacas']);

 

Bom... Nao sei se era isso bem que estava com problemas, qualquer coisa da um toque!

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu vou alem, eu costumo usar esta funcao aki

 

function transDate($data,$sep='-')
{
$date = explode($sep,$data);
array_reverse($date);
return implode($sep,$date);
}

a funcao citada acima pelo colega, so vai retornar dara com '/' e separar data com '-', fica pouco maleavel

 

experimente

 

echo transDate('1029-12-23'); //23-12-1029
echo transdate('23-12-1029'); // 1029-12-23
echo transDate('1029/12/23','/'); // 23/12/1029
echo transDate('23/12/1029','/'); // 1029/12/23

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro: O campo deve ser do tipo DATE

Segundo: Faça a conversão direto no SQL

 

Ex.:

SELECT DATE_FORMAT( `field`, '%d/%m/%Y' ) as `field` FROM `table`

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro: O campo deve ser do tipo DATE

Segundo: Faça a conversão direto no SQL

 

Ex.:

SELECT DATE_FORMAT( `field`, '%d/%m/%Y' ) as `field` FROM `table`

 

Obrigado Carlos pela ajuda, mas quando coloco o comando que você me passou e cadastro uma data, o valor no banco é 000000-00-00 e não a data cadastrada.

 

Sei que da pra brincar com isso de date(strtotime) bla bla, infelizmente não conheço muito.... masss posso dar uma dica

 

vamos tentar montar uma função como :

 

// Esta funcao seria para buscar do banco a data e formatar,

// existem outras opções de manipulação, assim acho mais didático;

 

function dataBR($data){

$data = explode('-',$data);

return $data[2].'/'.$data[1].'/'.$data['0'];

}

 

Bom lá no banco o certo é ser campo DATE

 

se na hora a data não for preenchida, o campo lá no banco ficaria assim 0000-00-00

 

ou seja

no php tu pode fazer apenas uma condição até mesmo com Operadores ternários

 

algo como

 

// Fazendo a variavel ficar em branco casa nao tenha inserido uma data no 'cadastro';

 

$dataValida = $row_obreiro['cad_datacas'] == '0000-00-00' ? '' : dataBR($row_obreiro['cad_datacas']);

 

Bom... Nao sei se era isso bem que estava com problemas, qualquer coisa da um toque!

 

Abraço!

 

Obrigado Christian pela ajuda, mas o campo está formatado como DATE e quando não cadastro uma data o valor gravado no banco é NULL e não 0000-00-00.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!

Cara você não poderia resolver isso apenas com um (WHERE data_hora IS NOT NULL) na query?

ou intão tratar com um :

if($data == "" || $data == "NULL")

$data = "Sem Data";

 

antes de exibir?

 

Desculpe se não fui claro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado, pessoal.

 

Resolvi o problema usando um "if" para ver se a data está vazia:

 

<?php if(!empty($row_xxx['campodata'])):?>

<?php echo date('d/m/Y', strtotime($row_xxx['campodata'])); ?>

<?php endif; ?>

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.