Hoi!

Op een of andere manier lukt het mij niet om de datum van het XML bestand goed te krijgen... Hij blijft hangen op 1970. Heeft iemand een idee?

----------------------------------------------------
<?PHP
EOM;

$footer = " </channel>\n</rss>";
$items = "";


function createXML()
{
global $db, $header, $items, $footer;
$sql = 'SELECT * FROM `article_dutch` ORDER BY `timestamp` DESC LIMIT 0,15'; // Haal laatste 15 artikelen op
$db->DbQuery( $sql );

if( $db->DbNumRows() > 0 )
{

while( $article = $db->DbNextRow() )
{
$datum = date( "r", strtotime($article['timestamp']));
$description = substr( $article['introduction'], 0 ); // Kopieer 200 tekens omschrijving in $description
$link = "http://www.##.nl/article.php?id={$article['id']}";;
$publicationDate = "{$datum}";
$title = htmlentities( $article['title'] );

$items .= " <item>\n";
$items .= " <title>$title</title>\n";
$items .= " <description>{$description}...</description>\n";
$items .= " <link>$link</link>\n";
$items .= " <guid>$link</guid>\n";
$items .= " <category></category>\n";
$items .= " <pubDate>{$publicationDate}</pubDate>\n";
$items .= " </item>\n";
}
}
else
$items .= "Kon geen artikelen ophalen $db->DbError()";

// if( file_exists( "jia.xml" ) )
// unlink( "xmlfile2.xml" );
$xmlFile = fopen( "jia.xml", 'w' ) or die( "can 't open file" );

fwrite( $xmlFile, $header . $items . $footer );
fclose( $xmlFile );

}

createXML();


?>
Zou je even je code willen laten highlighten?
Juist ja.
Gebruik je een time() timestamp?
Ik gebruik een UNIX timestamp
Ja dus. Geen strtotime gebruiken maar de timestamp direct in de date functie 'injecteren'.
Kun je daar een voorbeeld van geven?

Bedankt!

Chris
<?php $datum = date( "r", strtotime($article['timestamp'])); ?>
Dit is wat jij nu hebt. Een UNIX timestamp trek jij uit de database en stop je in de strtotime (tekst naar UNIX timestamp) functie. Dat is niet correct. Dus het bovenstaande moet je vervangen met het onderstaande.

<?php $datum = date( "r", $article['timestamp']); ?>
Dit is nu goed. Een UNIX timestamp uit de database wordt direct in de datum functie gestopt.
Je bent mijn held. Ik weet dat ik je niet mag zoenen, maar ik doe het bij deze toch ;-)

X

P.S.

Heeft iemand er iets aan als ik het volledige script even post?
Ik raad je ten sterkste af om met timestamps te werken voor het opslaan van datums. Het bereik ligt maar van 1970 tot 2038 en rekenen met timestamps in PHP is uiterst beperkt.

MySQL DATETIME velden hebben een bereik van '1000-01-01' tot '9999-12-31'. Verder beschikt MySQL over een hele reeks functies om te rekenen met datum en tijd. De huidige datumtijd in je DB zetten kan gewoon met een simpele NOW() in je insert-query, enz.

lees meer in het MySQL manual
Hahahaha

Reageren