Php date format
http://php.net/manual/en/function.date.php). Maar dat werkt niet als ik dat uit de database haal:
Hoe moet ik de datum opslaan in MySQL? Ik heb het geprobeerd in een datetime en in een timestamp veld maar op de een of andere manier lukt het niet. Ik krijg telkens: donderdag 1 januari 1970, 1:33:31, en niet de juiste tijd.
Op het moment ben ik een script aan het maken dat al het nieuws uit de database haalt en daar een rss feed van maakt. Nu moet ik alleen binnen de xml tag <pubdate> zo'n irritante datum in een bepaald formaat opslaan. Ik geloof dat dat kan met 'r' (zie Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$query_news = "SELECT * FROM news ORDER BY News_date DESC LIMIT 0,10";
$result_news = mysql_query($query_news, $db_home);
if (mysql_num_rows($result_news) > 0){
while($row_news=mysql_fetch_array($result_news)){
$news_id = $row_news['News_id'];
$news_subject = $row_news['News_subject'];
$news_pubdate = date('r',$row_news['News_date']);
$news_description = $row_news['News_description'];
$news_description_image = $row_news['News_description_image'];
$news_content = $row_news['News_content'];
echo "<item>";
echo "<title>$news_subject</title>";
echo "<link>http://www.mijnwebsite.nl/index.php?p=news&id=$news_id</link>";
echo "<description>$news_description</description>";
echo "<pubDate>$news_pubdate</pubDate>";
echo "</item>";
}
}
?>
$query_news = "SELECT * FROM news ORDER BY News_date DESC LIMIT 0,10";
$result_news = mysql_query($query_news, $db_home);
if (mysql_num_rows($result_news) > 0){
while($row_news=mysql_fetch_array($result_news)){
$news_id = $row_news['News_id'];
$news_subject = $row_news['News_subject'];
$news_pubdate = date('r',$row_news['News_date']);
$news_description = $row_news['News_description'];
$news_description_image = $row_news['News_description_image'];
$news_content = $row_news['News_content'];
echo "<item>";
echo "<title>$news_subject</title>";
echo "<link>http://www.mijnwebsite.nl/index.php?p=news&id=$news_id</link>";
echo "<description>$news_description</description>";
echo "<pubDate>$news_pubdate</pubDate>";
echo "</item>";
}
}
?>
Hoe moet ik de datum opslaan in MySQL? Ik heb het geprobeerd in een datetime en in een timestamp veld maar op de een of andere manier lukt het niet. Ik krijg telkens: donderdag 1 januari 1970, 1:33:31, en niet de juiste tijd.
Gewijzigd op 13/03/2011 14:11:09 door Jordy nvt
En xml maak je aan met simplexml xmlwrite of DOM, dus zeer zeker niet zoals je het nu doet.
-> maak geen overbodige variabelen aan
-> PHP variabelen buiten quotes
-> strings quoten met enkele quotes
-> fetch_array heeft een tweede parameter, gebruik die dan ook als je alleen assoc gebruikt, maar ja waarom dan niet _fetch_assoc
-> codeer overzichtlijk
-> mysql functies moet je niet nesten dat is vragen om problemen en het debuggen wordt dan wel erg vervelend
-> pas fatsoenlijke controles/validaties en foutafhandeling toe
Gewijzigd op 13/03/2011 14:33:40 door Noppes Homeland
Snap ik, dit is ook niet mijn volledige code:-) Het is om even een voorbeeldje te geven. Het gaat er dus om hoe ik de datum op de goede manier weergeef.
-> heb je gelijk ook minder kans dat je wordt afgezeken.
Voor de wijsneus dan maar
http://www.php.net/date
en dan vooral goed kijken wat je als tweede paramter moet doorgeven, en dat betekent niet dat je het ook zo in de database moet opslaan.
En ik verwijs je nu naar php.net omdat mysql niet de 'r' formatting alsdanig en simpel voor handen heeft.
Gewijzigd op 13/03/2011 14:48:25 door Noppes Homeland
Ik vind het ironisch dat je iedereen aan zn neus hangt om variable buiten quotes te zetten etc; en dat je het zelf niet doet.
Maar het eniste probleem is toch dat PHP het niet goed omzet? Stel dat ik $news_pubdate=date('r',$row_news['News_date']); vervang door $news_pubdate=date('r'); dan doet het script het wel goed. Het ligt dus aan $row_news['News_date'], oftewel de database
Dan zit er vast geen timestamp in $row_news['News_date'].
SELECT *, date_format(News_date, '%a, %d %b %Y %k:%i:%s +0100') AS News_date_format FROM news ORDER BY News_date DESC LIMIT 0,10
date("r", strtotime($news_pubdate['News_date']))