09. september 2008 - 17:23
Der er
15 kommentarer
RSS feed dato og danske tegn
Hej. Er der nogen der kan se hvorfor dette RSS ikke udtrækker korrekt dato, og ikke valideres korrekt med ÆØÅ? Dato i databasen er mmddyyyy. <? header('Content-type: text/xml'); include_once "config/connection.php"; ?> <rss version="2.0"> <channel> <title><?=$title?></title> <description><?=$description?></description> <link><?=$web_path?></link> <copyright>Copyright <?=$web_path?></copyright> <? $query = $Q("SELECT * FROM `videos` WHERE status=1 ORDER BY `id` DESC LIMIT 30"); while($item = mysql_fetch_array($query)) { $iname=$item['name']; $iname_title=str_replace("-"," ",$iname); $iname_title=strtolower($iname_title); $iname_title=ucwords($iname_title); $iname=str_replace("&","&",$iname); $iname=str_replace("'","",$iname); $iname=str_replace(" ","-",$iname); $prefix = $web_path."photo/"; $pp = $item['picture']; $pp = str_replace(" ","",$pp); $pp = trim($pp); $pp = substr($pp,0,4); if($pp=='http'){ $prefix=''; } ?> <item> <title> <?=htmlentities(strip_tags($iname_title)); ?></title> <description><a href="<?=$web_path;?>hosted-<?=$item['id'];?>-<?=$iname;?>"><img src="<?=$prefix.$item['picture'];?>" align="left" height="87" width="130" alt="<?=$item['desc'];?>" border="0" /></a><?=$item['desc'];?></description> <link><?=$web_path;?>hosted-<?=$item['id'];?>-<?=$iname;?></link> <pubDate> <?=strftime( "%a, %d %b %Y %T %Z" , $item['date']); ?></pubDate> </item> <? } ?> </channel> </rss>
Annonceindlæg fra Cognizant
09. september 2008 - 17:36
#1
Hvilken dato udtrækkes så, hvis den ikke er korrekt? Og æøå-problemet skyldes konflikter i tegnsættene. Sørg for at alle dine filer bruger samme tegnsæt, f.eks. ISO-8859-1 eller (helst) UTF-8. Det skal både sættes i koden (under "charset") og i dokumenternes encoding og din database skal ligeledes sættes op til at bruge samme tegnsæt.
09. september 2008 - 17:50
#2
Datoen i går, udtrækkes som: <pubDate> Wed, 15 Apr 1970 21:46:48 EST</pubDate>
09. september 2008 - 17:50
#3
...men Æ Ø og Å ser rigtigt ud på siden, det er kun i rss.php den er gal.
09. september 2008 - 17:53
#4
Prøv at rette: <?=strftime( "%a, %d %b %Y %T %Z" , $item['date']); ?> til: <?=$item['date']); ?> Hvordan skrives datoer så?
09. september 2008 - 18:06
#5
Så ser den sådan her ud: <pubDate> 09082008</pubDate>
09. september 2008 - 18:08
#6
Hvad er feltets type i databasen?
09. september 2008 - 18:08
#7
Datofeltet altså.
09. september 2008 - 18:36
#8
Datatype:varchar(15) Collation: latin1_general_ci
09. september 2008 - 18:54
#9
Ok, du bør vel sætte datatypen til Datoformat i stedet.
09. september 2008 - 19:11
#10
Tror så bare det vil gå ud over resten af siden, da der benyttes forskellige koder til udtrækning af dato fra db, eks: $new_date = substr($date,0,3); if($new_date=="200") { $month=substr($date,4,-2)."-"; $day=substr($date,6)."-"; $year=substr($date,0,-4); } else { $month=substr($date,0,-6)."-"; $day=substr($date,2,-4)."-"; $year=substr($date,4); } $date_val=$month.$day.$year; Men det må vel kunne lade sig gøre at få korrekt dato med nedenstående? <?=strftime( "%a, %d %b %Y %T %Z" , $item['date']); ?>
09. september 2008 - 19:28
#11
Skal det stå ligesom nu, bare med den rigtige dato? Og hvad så med tiden, der jo ikke er gemt? Eller hvordan skal datoen vises?
09. september 2008 - 19:36
#12
(Bare supplerende oplysninger, følger ikke med) Datoen skal være i RFC 822-format (eks. Wed, 02 Oct 2002 13:00:00 GMT), så dit oprindelige formatstreng er korrekt - men den forstår ikke dens input. Det hænger også godt sammen, i og med at strftime skal tage mod et Unix timestamp - hvilket er antallet af sekunder siden 1. januar 1970 00:00:00 UTC. ...mangler du i øvrigt ikke en XML-prolog?
09. september 2008 - 19:45
#13
pidgeot...Hvordan tilføjer jeg den (prolog)?
09. september 2008 - 19:46
#14
Jo tiden er gemt, den viser jo dette nu, blot med forkert dag, måned,år <pubDate> Wed, 15 Apr 1970 21:46:48 EST</pubDate>
10. september 2008 - 17:32
#15
Andre bud? :-)
Vi tilbyder markedets bedste kurser inden for webudvikling