Como ler um campo date do banco de dados e mostrar na tela de alteração de cadastro?? (no value do input)?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Como ler um campo date do banco de dados e mostrar na tela de alteração de cadastro?? (no value do input)?
Oi Ari, tudo bom?
Esse processo pode ser meio complicado no começo mesmo. A ideia é guardar no banco de dados a string da data. Algo como "26-01-1994".
Tendo essa string na mão, basta chamar uma instancia de DateTime passando a string no construtor. Algo como "new DateTime("26-01-1994");"
Para exibir no input basta passar a string da data em value. Algo como:
<input name="data" type="date" value="<?= $dataDoBanco->format("dd-mm-YYYY")?>">
A parte chata é justamente garantir esse formato dia-mes-ano pois o tipo date do HTML 5 trabalhar com formatos acoplados à linguagem da sua máquina. Então se sua máquina estiver configurada em portugues vai funcionar. Se estiver configurado em ingles o formato provavlmente será ano-mes-dia ou mes-dia-ano.
Pra evitar esse tipo de confusão com o HTML 5, existem algumas bibliotecas JavaScript como o Jquery Date Picker que trabalha independente do HTML 5 garantindo sempre o mesmo formato e, por consequencia, a compatibilidade com qualquer máquina.
Abraço =)
André boa noite, obrigado pela ajuda mas o que tem de errado no codigo abaixo.
<input class="form-control" type="date" name="copag_dt_vencto"
value="<?=$conta['copag_dt_vencto']->format("dd-mm-YYYY") ?>
falta um espaço depois do <?= e $conta. Além das aspas duplas no final de value e o fechamento da tag:
<input class="form-control" type="date" name="copag_dt_vencto"
value="<?= $conta['copag_dt_vencto']->format('dd-mm-YYYY') ?>">
André bom dia.
Obrigado mais uma vez pela ajuda, vou testar.
André boa tarde.
Consegui, minha coluna esta como datetime no banco de dados, mudei para date e passei no imput $conta['copag_dt_vencto'] e deu certo.
Obrigado pela ajuda. Abraço.