Reputation: 1456
I have a sql database that I would like to query with coldfusion and set up into a js array. So that I can run my JS function to display a certain date. My JS array set up looks like this:
var natDays = [
[2014, 1, 1, 'New Year'],
[2014, 1, 20, 'Martin Luther King'],
[2014, 2, 17, 'Washingtons Birthday'],
[2014, 5, 26, 'Memorial Day'],
[2014, 7, 4, 'Independence Day'],
[2014, 9, 1, 'Labour Day'],
[2014, 10, 13, 'Columbus Day'],
[2014, 11, 11, 'Veterans Day'],
[2014, 11, 27, 'Thanksgiving Day'],
[2014, 11, 28, 'Thanksgiving Day'],
[2014, 12, 25, 'Christmas'],
[2014, 12, 26, 'Christmas'],
[2015, 1, 1, 'New Year'],
[2015, 1, 19, 'Martin Luther King'],
[2015, 2, 16, 'Washingtons Birthday'],
[2015, 5, 25, 'Memorial Day'],
[2015, 7, 3, 'Independence Day'],
[2015, 9, 7, 'Labour Day'],
[2015, 10, 12, 'Columbus Day'],
[2015, 11, 11, 'Veterans Day'],
[2015, 11, 26, 'Thanksgiving Day'],
[2015, 11, 27, 'Thanksgiving Day'],
[2015, 12, 24, 'Christmas'],
[2015, 12, 25, 'Christmas']
];
so I am querying the database like this
<cfquery name="getHolidays">
SELECT Holiday, date
FROM dbo.Holidays
</cfquery>
But I am not sure how to convert the data into the JS format I need in order to use my functions:
var natDays = [
[YEAR, MONTH, DAY, 'HOLIDAY']
];
what I have tried:
<cfquery name="getHolidays">
select holiday, date
from dbo.Holidays
</cfquery>
<cfset aryData = [] />
<cfloop from="1" to="#getHolidays.recordcount#" index="j">
<cfset ArrayAppend(aryData, DateFormat(getHolidays.date[j], "yyyy-mm-dd")) />
</cfloop>
<cfoutput>
<cfdump var="#getHolidays#">
</cfoutput>
<script type="text/javascript" charset="utf-8">
var getHolidays = <cfoutput>#serializeJson(aryData)#</cfoutput>;
console.log(getHolidays);
</script>
Upvotes: 0
Views: 1008
Reputation: 95022
All you need to do now is split the date into an array of year/month/day, and place them into an array before you append it to the result array.
<cfquery name="getHolidays">
select holiday, date
from dbo.Holidays
</cfquery>
<cfset aryData = [] />
<cfloop from="1" to="#getHolidays.recordcount#" index="j">
<cfset dateArr = ListToArray(DateFormat(getHolidays.date[j], "yyyy-mm-dd"), '-')>
<cfset ArrayAppend(aryData, [dateArr[1], dateArr[2], dateArr[3], getHolidays.holiday[j]]) />
</cfloop>
<cfoutput>
<cfdump var="#getHolidays#">
<cfdump var="#aryData#">
</cfoutput>
<script type="text/javascript" charset="utf-8">
var getHolidays = <cfoutput>#serializeJson(aryData)#</cfoutput>;
console.log(getHolidays);
</script>
Upvotes: 2