2016-09-08 3 views
1

Нужна помощь в поиске определенной даты в массиве.Дата обнаружения Coldfusion в массиве

У меня есть массив, заполненный из файла JSON. Хотелось бы, чтобы форма вводилась в дату, а затем возвращала данные, если она находится в массиве.

Это то, что я пробовал до сих пор.

<!---Form and submit button to enter date---> 
<p> 
    <cfform name="pickdate" id="pickdate" > 
     <cfinput required="yes" name="datepicker" type="datefield" id="datepicker" validate="USDATE"> 
     <cfinput type="submit" name="insertpbnum" value="Enter" id="submit"> 
    </cfform> 
</p> 

<br> 
<br> 
<!---Get lotto numbers from JSON file---> 
<cfhttp url="https://data.ny.gov/api/views/d6yy-54nr/rows.json?accessType=DOWNLOAD" method="get" result="httpResp" timeout="120"> 
    <cfhttpparam type="header" name="Content-Type" value="application/json" /> 
</cfhttp> 
<cfset pbdata=deserializeJSON(httpResp.filecontent)> 
<cfoutput> 
    <!---loop thru JSON file to grab lotto numbers and dates---> 
    <cfloop from="1" to="#arrayLen(pbdata.data)#" index="i"> 
     <!---change xml date-time format to Coldfusion formate---> 
     #arrayFind(datetimeformat(Parsedatetime(pbdata.data[i][9]),"MM-DD-YYYY","datepicker"))# 
     <!---#i#: #Parsedatetime(pbdata.data[i][9])# : #pbdata.data[i][10]#---><br /> 
    </cfloop> 

</cfoutput> 

Я собираюсь сделать это правильно. Или лучше разместить массив в базе данных?

Благодаря

+0

Что происходит, когда вы выполняете опубликованный код? –

+0

строка, которую вы получаете в xml, не может быть конвертирована на сегодняшний день как есть. вы можете сами проанализировать его. Я считаю, что ваш вопрос был рассмотрен здесь. http://stackoverflow.com/questions/20088433/coldfusion-date-conversion-2013-11-15t061157-87-is-an-invalid-date-or-time-s –

+0

Игнорирование вопроса на секунду, основанный на вы можете захотеть сделать шаг назад. Сначала определите a) Какое из полей будет использоваться вашим приложением (дата, модификатор, числа, ...) и b) * Как * будут доступны эти поля. Например, будут ли результаты поиска приложений по дате (только), по номерам и т. Д. Эти ответы помогут определить, как лучше хранить/кэшировать и анализировать результаты. – Leigh

ответ

-1

Это другой подход, но мы надеемся сделать то, что вы пытаетесь сделать. Это решение выдает данные в запрос и затем выполняет запрос запроса (QOQ) для проверки даты.

<cfhttp url="https://data.ny.gov/api/views/d6yy-54nr/rows.json?accessType=DOWNLOAD" method="get" result="httpResp" timeout="120"> 
    <cfhttpparam type="header" name="Content-Type" value="application/json" /> 
</cfhttp> 
<cfset pbdata=deserializeJSON(httpResp.filecontent)> 

<!--- Get list of column names ---> 
<cfset columnList = "" /> 
<cfloop from="1" to="11" index="i"> 
    <cfset columnList = listAppend(columnList, replace(pbdata.meta.view.columns[i].name, " ", "", "All")) /> 
</cfloop> 

<!--- Populate data into query ---> 
<cfset qryData = queryNew(columnList) /> 
<cfset dataRowCount = arrayLen(pbdata.data) /> 
<cfset queryAddRow(qryData, dataRowCount) /> 
<cfloop from="1" to="#dataRowCount#" index="i"> 
    <cfloop from="1" to="#arrayLen(pbdata.data[i])#" index="j"> 
     <cfif j EQ 11 AND pbdata.data[i][j] EQ "null"> 
      <!--- default multiplier field to 0 if null ---> 
      <cfset querySetCell(qryData, listGetAt(columnList, j), 0, i) /> 
     <cfelse> 
      <cfset querySetCell(qryData, listGetAt(columnList, j), pbdata.data[i][j], i) /> 
     </cfif> 
    </cfloop> 
</cfloop> 

<!--- Query the recordset ---> 
<cfquery name="rs" dbtype="query"> 
    SELECT * 
    FROM qryData 
    WHERE DrawDate = '#dateFormat("5/26/2010", "YYYY-MM-DD")#T00:00:00' 
</cfquery> 

<cfdump var="#rs#" /> 
+2

Пульты без объяснений бесполезны, беспринципны и трусливы. –