Ir para conteúdo

POWERED BY:

Arquivado

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

Ronaldo Dantas

Pergunta básica de novato em em PHP... converter datetime to string?

Recommended Posts

Com se faz para converter uma data em string quando fazemos uma consulta ao DB? Estou testando gerar um XML a partir de uma consulta ao banco de dados mas dá erro porque não consigo converter um campo datetime em string.

 

Se eu omitir esse campo, apenas para teste, roda legal. Ou seja o problema todo é esse.

 

No PHP existe a função strtotime mas não tem uma timetostring. É uma falha. Já procurei em todo canto e não achei, nada que funcionasse. Mesmo se a conversão resultasse eu algo como 2013-08-05, desde que fosse string era só arrumar.

 

Se alguém souber algo que realmente funcione passe aqui. Vai ser útil para um monte de novatos no PHP.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Enrico, não funcionou.
No db mysql a data está assim: 2013-08-05 00:00:00

E o exemplo que me passou deu isso....

 

echo date('Y-m-d', strtotime($data));

 

onde o campo $data recebe o valor do db.

 

resultado 1970-01-01

Compartilhar este post


Link para o post
Compartilhar em outros sites

O exemplo que o Enrico deu está correto, se possível poste o seu código pra gente ver se tem algum erro.

 

Além de usar o PHP pra formatar a data vinda do banco de dados você também pode usar funções de data do próprio SGDB e já retornar a data formatada como você deseja :seta: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leonardo, segue o código da página teste. A intenção é criar XML com PHP para alguns usos mas tenho que corrigir isso. Por mais experiência que se tenha quando se pega uma linguagem nova a gente apanha muito, nas coisas mais básicas :)

Estou passando o código. Lembrando que agora não está mais dando erro mas, mesmo no banco a data sendo a de hoje retorna sempre '1970-01-01'.

 

Agradeço a ajuda.

 

*********************************

 

<?php
function addRegistro($document, $data, $titulo, $resumo, $link)
{
#criar registro
$registro = $document->createElement("registro");
#data
$dataElm = $document->createElement("data", $data);
#titulo
$tituloElm = $document->createElement("titulo", $titulo);
#resumo
$resumoElm = $document->createElement("resumo", $resumo);
#link
$linkElm = $document->createElement("link", $link);
$registro->appendChild($dataElm);
$registro->appendChild($tituloElm);
$registro->appendChild($resumoElm);
$registro->appendChild($linkElm);
return $registro;
}
$dom = new DOMDocument("1.0", "ISO-8859-1");
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$root = $dom->createElement("newsletter");
//conecta o DB para gerar os nodes
require("conexao.php");
$SQL = "SELECT * FROM tbNewsletter;
$res = mysql_query($SQL,$conn);
while($RFP = mysql_fetch_array($res))
{
$dataDB = $RFP['data'];
//echo date('Y-m-d', strtotime($data));
data = date('Y-m-d', strtotime($dataDB));
$titulo = $RFP['titulo'];
$resumo = $RFP['resumo'];
$link = $RFP['link'];
#utilizando a funcao para criar registros
$linha = addRegistro($dom, ". $data .", ". $titulo .", ". $resumo .", ". $link .");
#adicionando no root
$root->appendChild($linha);
}
$dom->appendChild($root);
#salvando o arquivo
$dom->save("xml/newsletter.xml");
#mostrar dados na tela
header("Content-Type: text/xml");
print $dom->saveXML();
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leonardo, já tinha corrigido isso. Te envie versão antiga. E só essa linha tava errada.

A dica que vocês me passaram corrigiu o primeiro erro que falei na geração do XML. Tá ok agora, geral o arquivo legal. Agora é o problema de $data retornar '1970-01-01' e não a data de hoje q está no DB. Lá no DB tá ok, campo datetime.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando aparece esta data é porque o valor de data é nulo ou inválido.

 

Você tem certeza que o campo de data da tabela "tbNewsletter" se chama "data"?

 

Você precisa ir debugando pra encontrar o erro, para debugar faça o seguinte:

 

 

echo '<pre>';
var_dump($dataDB);
var_dump($data);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é Leonardo. Sinal de algo errado mesmo. Essa data que tá retornando (1970-01-01) é pq o campo tá vindo vazio né?

Quanto ao DB tá ok. o campo 'data' e é datetime.

Por enquanto só tem um registro para teste e o valor de 'data' é '2013-08-05 00:00:00'

 

Pelo menos a dica da conversão já ajudou muito. Já gera o XML legal. Agora vou procurar esse outro erro (essa dica para debugar vai ajudar).

Informo o resultado. Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se ao cadastrar algo e o campo ir vazio, provavelmete o resultado será 1970-01-01. Verifique sua rotina de inserção na tabela!

 

 

Double.

 

 

Cancel=true;

 

Foi mal galera tripliquei os posts!!

Mágica?huahss

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

<?php
    # Alterei sua data de "2013-08-05 00:00:00" para "2013-08-05 22:56:09", só para exemplificar melhor!
    $sua_data = "2013-08-05 22:56:09";
    echo date('d/m/Y H:i:s', strtotime($sua_data));
    # Resultado: 05/08/2013 22:56:09
?>

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.