1

時間値を含む動的テーブルの挿入について質問があります。これは、db に挿入する必要があるテーブルの例です。

Schedule for 12/15/2015
08:30 AM - 09:30 AM     Remove
09:30 AM - 10:30 AM     Remove
10:30 AM - 11:30 AM     Remove
11:30 AM - 12:30 PM     Remove
02:30 PM - 03:30 PM     Remove

時差が常に同じであれば、値を挿入しても問題ありません。最初のいくつかの時間枠は 30 分間増加しますが、その後、午後 12 時から午後 5 時までずっとギャップがあります。私の問題はそこにあります。これらの値を保存する最善の方法がわかりません。値は動的に作成され、それらはすべて同じ日付にリンクされているためです。タイムブレイクがなければとても簡単ですが、タイムギャップがあるこの場合は本当に複雑に見えます. これをデータベースに保存する最良の方法を誰かが教えてくれたら教えてください。今のところ、開始時刻、終了時刻、日付、間隔を保存するだけで、時間が増えるたびに増加します。それは次のようになります。

ID  Date        Start               End              Interval
4   2015-12-15  08:30:00.0000000    15:30:00.0000000    60  

この場合、クエリで値を引き出してテーブルにタイムスロットを表示したい場合、60分間隔でしか実行できません。しかし、12:30PM から 2:30PM までのギャップがあります。そのギャップは、ユーザーの希望に応じて常に異なる場合があります。

テーブルを作成するクエリは次のとおりです。

<cfscript>
    param name = "FORM.datepicker" type = "date";
    param name = "FORM.stime" type = "time";
    param name = "FORM.etime" type = "time";
    param name = "FORM.meeting" type = "range" min = "5" max = "60";

    TimeStart = createDateTime(year(FORM.datepicker), month(FORM.datepicker), day(FORM.datepicker), hour(FORM.stime), minute(FORM.stime), 0);
    TimeEnd = createDateTime(year(FORM.datepicker), month(FORM.datepicker), day(FORM.datepicker), hour(FORM.etime), minute(FORM.etime), 0);
    meetingLength = dateAdd("n", FORM.meeting*-1, TimeEnd); 
</cfscript>

<form name="myForm" id="myForm" method="post" autocomplete="off">
    <cfoutput>
        <table>
            <thead>
                <tr>
                    <th>Schedule for #dateFormat(FORM.datepicker, "mm/dd/yyyy")#</th>
                </tr>
            </thead>
            <tbody>
                <cfloop condition="TimeStart LTE meetingLength">
                    <cfset TimeEnd = dateAdd("n", FORM.meeting, TimeStart)>
                    <tr>
                        <td></td>
                        <td>#timeFormat(TimeStart, "hh:mm tt")# - #timeFormat(TimeEnd, "hh:mm tt")#</td>
                        <td><a class="remove" onClick ="removeTime($(this))">Remove</a></td>
                    </tr>
                    <cfset TimeStart = dateAdd("n", FORM.meeting, TimeStart)>
                </cfloop>
                <tr>
                    <td>
                    <input type="button" name="Submit" value="Save" onClick="saveSchedule('#FORM.datepicker#','#FORM.stime#','#FORM.etime#','#FORM.meeting#')" />
                    </td>
                </tr>
            </tbody>
        </table>
    </cfoutput>

レコードを挿入するコード:

<cffunction name="Save" access="remote" output="no" returnformat='JSON'>
    <cfargument name="datepicker" type="date" required="yes">
    <cfargument name="stime" type="numeric" required="yes">
    <cfargument name="etime" type="numeric" required="yes">
    <cfargument name="meeting" type="numeric" required="yes">
    <cfset fncResults = structNew()>

    <cfquery name="addSchedule" datasource="Test">
        Insert Into Schedule(Date, Start, Eend, meeting)
        Values (<cfqueryparam cfsqltype="cf_sql_date" maxlength="10" value="#arguments.datepicker#">,
                <cfqueryparam cfsqltype="cf_sql_time" maxlength="10" value="#arguments.stime#">,
                <cfqueryparam cfsqltype="cf_sql_time" maxlength="10" value="#arguments.etime#">,
                <cfqueryparam cfsqltype="cf_sql_integer" maxlength="2" value="#arguments.meeting#">);
    </cfquery>
<cfreturn fncResults>
</cffunction>
4

0 に答える 0