2010-07-23 13 views
0

À droite, je travaille sur un site avec plusieurs flux RSS différents. Mon problème est un de mes flux fonctionne très bien, mais le second (basé sur le code presque identique) échoue et je ne peux pas comprendre pourquoi.Problème avec CFFEED

est ici le code qui fonctionne:

<!--- Get the feed data as a query from the orders table. ---> 
<cfquery name="getNews" datasource="#DSN#"> 
    SELECT * FROM NEWS2 
    WHERE STATUS = 1 
    ORDER BY rdate DESC 
</cfquery> 


<cfset myStruct = StructNew() /> 
<cfset mystruct.link = "http://noobzilla.net" /> 
<cfset myStruct.title = "Noobzilla News" /> 
<cfset mystruct.description = "Programming Related Site Reviews" /> 
<cfset mystruct.pubDate = Now() /> 
<cfset mystruct.version = "rss_2.0" /> 
<cfset myStruct.item = ArrayNew(1) /> 

<cfloop query="getNews"> 
    <cfset myStruct.item[currentRow] = StructNew() /> 
    <cfset myStruct.item[currentRow].guid = structNew() /> 
    <cfset myStruct.item[currentRow].guid.isPermaLink="YES" /> 
    <cfset myStruct.item[currentRow].guid.value = 'http://noobzilla.net/news-detail.cfm?id=#id#' />  
    <cfset myStruct.item[currentRow].pubDate = "#DateFormat(getNews.rdate, "mm/dd/yyyy")#" /> 
    <!---<cfset myStruct.item[currentRow].title = xmlFormat(title) />---> 
    <cfset myStruct.item[currentRow].title = #title# /> 
    <cfset myStruct.item[currentRow].description = StructNew() /> 
    <!---<cfset myStruct.item[currentRow].description.value = xmlFormat(#info#) />---> 
    <cfset myStruct.item[currentRow].description.value = '#Left(info, 250)#...' /> 
    <cfset myStruct.item[currentRow].link = 'http://noobzilla.net/news-detail.cfm?id=#id#' /> 
</cfloop> 

<!--- Generate the feed and save it to a variable. ---> 
<cffeed action="create" name="#myStruct#" overwrite="true" xmlVar="myXML" /> 

Le code ci-dessus fonctionne très bien. Maintenant, voici le code de mon second fichier (comme vous pouvez voir sa quasi-identique, juste en utilisant une autre table):

<!--- Get the feed data as a query from the orders table. ---> 
<cfquery name="getNews" datasource="#DSN#"> 
    SELECT * FROM NEWS 
    WHERE STATUS = 1 
    ORDER BY rdate DESC 
</cfquery> 

<cfset myStruct = StructNew() /> 
<cfset mystruct.link = "http://noobzilla.net" /> 
    <cfset myStruct.title = "IDE Reviews" /> 
<cfset mystruct.description = "IDE and SDK Reviews" /> 
<cfset mystruct.pubDate = Now() /> 
<cfset mystruct.version = "rss_2.0" /> 
<cfset myStruct.item = ArrayNew(1) /> 

<cfloop query="getNews"> 
    <cfset myStruct.item[currentRow] = StructNew() /> 
    <cfset myStruct.item[currentRow].guid = structNew() /> 
    <cfset myStruct.item[currentRow].guid.isPermaLink="YES" /> 
    <cfset myStruct.item[currentRow].guid.value = 'http://noobzilla.net/news-detail2.cfm?id=#id#' />  
    <cfset myStruct.item[currentRow].pubDate = "#DateFormat(getNews.rdate, "mm/dd/yyyy")#" /> 
    <cfset myStruct.item[currentRow].title = #title# /> 
    <cfset myStruct.item[currentRow].description = StructNew() /> 
    <cfset myStruct.item[currentRow].description.value = '#Left(info, 250)#...' /> 
    <cfset myStruct.item[currentRow].link = 'http://noobzilla.net/news-detail2.cfm?id=#id#' /> 
</cfloop> 

<!--- Generate the feed and save it to a variable. ---> 
<cffeed action="create" name="#myStruct#" overwrite="true" xmlVar="myXML" /> 

Ce second ensemble de code génère l'erreur suivante:

Il a été une erreur analysant une date spécifiée dans pubDate. Impossible de convertir pubDate en date.

+0

Essayez de décharger myStruct dans le deuxième exemple pour voir s'il y a un problème avec une ou plusieurs dates. –

+0

Merci Ben! C'était exactement ce que le problème était – noobzilla

Répondre

2

Je vérifierais les valeurs getNews.rdate et m'assurerais que tout format standard de date ou de date/heure accepté par ColdFusion.

+0

Merci d'avoir répondu Pragnesh! C'est exactement ce que le problème était. – noobzilla

1

Ceci est un exemple de code de solution proposée par Pragnesh:

<cfif isDate(getNews.rdate)> 
    <cfset myStruct.item[currentRow].pubDate = DateFormat(getNews.rdate, "mm/dd/yyyy") /> 
<cfelse> 
    <cfset myStruct.item[currentRow].pubDate = DateFormat(Now(), "mm/dd/yyyy") /> 
</cfig> 
+0

Merci pour l'extrait de code Sergii! – noobzilla

0

Ben, Sergii et Pragnesh - Merci pour toutes vos réponses. Je peux être un peu dense par moments. Je me suis pris sur le fait que l'erreur doit être issue de cette première ligne:

Je revérifié mes données par vos suggestions et il était - un record sans données pour rdate.

À la votre!