2015-10-22 9 views
6

Mam tabelę z danymi Date_Due i Date_Complete. Moim celem jest posiadanie dwóch obszarów tekstowych na dzień dzisiejszy i jednego na jutro (jutro nie obejmuje wakacji ani weekendów, więc jeśli w piątek będzie to następny dzień roboczy zazwyczaj w poniedziałek, o ile w poniedziałek nie będzie święta). Używam CF do kwerendy bazy danych sql. W moich obszarach tekstowych próbuję dowiedzieć się, jak pokazać moje #id# i moje #Item_Count# jak te 123 ... 6 pozycji. Ale najtrudniejszą częścią, nad którą walczę jest 1.) Posiadanie ich pojawia się tylko w poprawnej dacie i 2.) Jeśli nie ma ukończonej daty, nie pokazujcie też.textarea bazy danych jQuery/CF Wypełnianie na podstawie dat w bazie danych

Pierwszy obszar tekstowy będzie oparty na Data_Due, więc cokolwiek będzie "dzisiaj" pojawi się w tym polu tekstowym, o ile w bazie danych nie ma już Data_Complete. Musi tylko pokazać, czy nie jest jeszcze ukończony.

Następnie drugi obszar tekstowy jest na jutro, co jest nieco trudniejsze, ponieważ jest to coś więcej niż tylko jeden, który bierze pod uwagę również w święta i weekendy. Mam już poprawnie działającą etykietę, więc data pola tekstowego musi być zgodna z identyfikatorem zakresu daty dostawy (data). Oto przykład tego, że bardzo pomocna byłaby jakakolwiek pomoc w tym zakresie.

Tworzę również ukryte dane wejściowe, które mają poprawną datę, która powinna zostać wstawiona.

<input id="TomorrowsDate" type="text"/> 

function setDeliveryDate(date) { 
    $('#delivery-date').text($.datepicker.formatDate('mm/dd/yy', date)); 
    $('#TomorrowsDate').val($.datepicker.formatDate('mm/dd/yy', date)); 
} 


setDeliveryDate(AddBusinessDays(dateMin, 1)); 

pól tekstowych

<div class="col-xs-6"> 
<div class="row"> 
    <div id="DToday" class="col-xs-12"> 
     <label class="centered" for="DueToday">DUE TODAY @ 5:00</label> 
     <textarea type="text" name="DueToday" id="DueToday" class="form-control" rows="7"><cfoutput query="processTable">#id# ... #Item_Count# ITEMS &##13;&##10;</cfoutput></textarea> 
    </div> 
    <div id="DTmrw" class="col-xs-12"> 
     <label class="centered" for="DueTmrw">DUE <span id="delivery-date"></span> @ 5:00</label> 
     <textarea type="text" name="DueTmrw" id="DueTmrw" class="form-control" rows="7"><cfoutput query="processTable">#id# ... #Item_Count# ITEMS &##13;&##10;</cfoutput></textarea> 
    </div> 
</div> 

enter image description here

Tabela

enter image description here

Moja CFC jak mam tabelę przy użyciu CF

<cffunction name="displayTable" access="public" returntype="query"> 
    <cfset var processTable = ''> 
    <cfquery name="processTable"> 
     SELECT * 
     FROM dbo.Dealer_Track_Work, dbo.Dealer_Track_Dealers 
     WHERE dbo.Dealer_Track_Work.dealerID = dbo.Dealer_Track_Dealers.id  
    </cfquery> 
    <cfreturn processTable> 
</cffunction> 

UPDATE UPDATE UPDATE Próbuję dowiedzieć się, jak mają ukryte pola wypełnić cfparam w moim zapytaniu. Moje ukryte pole automatycznie ma poprawną datę zrobioną z powodu JQuery, ale muszę wiedzieć, jak przekazać wartość form.value do paramu, ponieważ nic nie jest przesyłane ani wstawiane. Jest to tylko ukryte pole z prawidłową datą, która już jest mi potrzebna, aby automatycznie przejść do zapytania wewnątrz paramu.

http://jsfiddle.net/byyeh83t/8/

skrzypcach pokazuje wejście automatycznie odbiera datę. Ale ponieważ nic nie jest przesyłane i nie ma naciśnięcia przycisku ani nic (ponieważ jest to aplikacja z pojedynczą stroną), w jaki sposób mogę pobrać wartość form.value i wstawić ją do paramu w zapytaniu?

<input name="TomorrowsDate" id="TomorrowsDate" type="hidden"/> 

    <cfquery name="tomorrowTextArea"> 
      SELECT * 
      FROM dbo.Dealer_Track_Work 
      WHERE Date_Due = <cfqueryparam value="form.TomorrowsDate" /> 
      AND Date_Complete IS NULL  
     </cfquery> 

Odpowiedz

1

Na podstawie tej rozmowy: http://chat.stackoverflow.com/rooms/93528/discussion-between-vicki-and-beloitdavisja

JS

var Tmrwdate = $('#TomorrowsDate').val(); 

$.ajax({ 
    url: "proxy/TomorrowsDate.cfm", 
    type: "post", 
    dataType: "json", 
    data: {date: Tmrwdate }, 
    success: function (data) { 
     console.log(data); 
     $('#DueTmrw').val(data.TEXT); 
    }, 
    error: function (xhr, textStatus, errorThrown) { 
     console.log(errorThrown); 
    } 
}); 

CF

<!--- Create a result ---> 
<cfset result = {} /> 
<cftry> 
    <cfset session.dealerwork.tomorrowsdate = form.date> 
    <cfset result.TomorrowsDate = form.date/> 

    <cfquery name="tomorrowTextArea"> 
     SELECT * 
     FROM dbo.Dealer_Track_Work 
     WHERE Date_Due = <cfqueryparam value="#session.dealerwork.tomorrowsdate#" /> 
     AND Date_Complete IS NULL 
    </cfquery> 

    <cfset result.text = ''> 
    <cfloop query="tomorrowTextArea"> 
     <cfset result.text = result.text & "#id# ... #Item_Count# ITEMS #chr(13)##chr(10)#" /> 
    </cfloop> 



    <cfcatch type="any"> 
     <cfset result.error = CFCATCH.message > 
     <cfset result.detail = CFCATCH.detail > 
    </cfcatch> 
</cftry> 

<cfoutput>#SerializeJSON(result)#</cfoutput> 

Uwaga: użyć atrybutu cfsqltype w cfqueryparam tagów f lub lepsze bezpieczeństwo.

1

Możesz łatwo filtrować potrzebne wpisy w miejscu, w którym znajduje się Twój SQL.

 <cfquery name="processTable"> 
      SELECT * 
      FROM dbo.Dealer_Track_Work, dbo.Dealer_Track_Dealers 
      WHERE dbo.Dealer_Track_Work.dealerID = dbo.Dealer_Track_Dealers.id 
      AND dbo.Date_Due = CONVERT(date, getdate()) AND dbo.Date_Complete IS NULL 
     </cfquery> 

Dla twojego drugiego tekstu możesz ponownie ustawić SQL ...coś AND dbo.Due_Date > CONVERT(date, getdate())

Powiązane problemy