日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了將選定日期與MySQL查詢生成的表列或日期數組進行比較的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有一個如下所示的頁面:

我嘗試做的是將"Holiday Date:"選擇與其下面表格中的"date"列中的行值進行比較。我嘗試過使用這樣的代碼:

function dateChk(){
        var dt1 = document.getElementById('PHDate').value;
        var dt2 = document.getElementById('phdateadd').value;
            if (dt1 == dt2) {
               alert("This date already assigned, please try again.");
               document.getElementById('phdateadd').value = 0;
         }
 }

但這只適用于第一行。然后我想要做這樣的數組:

<input id="phdateadd" name="phdateadd" type="date" onchange="myFunction()" required>

<p id="demo"></p>

<script>
var dates= ["2021-01-01", "2021-02-12", "2021-02-13", "2021-04-02", "2021-05-01", 
                        "2021-05-13", "2021-05-14", "2021-05-26", "2021-05-30", "2021-05-31", 
                        "2021-07-06", "2021-07-20", "2021-08-10", "2021-08-31", "2021-09-16", 
                        "2021-10-02", "2021-10-19", "2021-11-04", "2021-12-25"];

function checkDate(date) {
  return date == document.getElementById("phdateadd").value;
}

function myFunction() {
  document.getElementById("demo").innerHTML = dates.find(checkDate);
  var chk = document.getElementById("demo").innerHTML;
  
  if ( chk != "undefined" ) {
        alert("This date already assigned, please try again.");
        document.getElementById("phdateadd").value = 0;}
}
</script>

這確實有效,但是我必須將該列中的所有日期指定為數組。我的想法是從MySQL查詢傳遞數據,日期值格式類似于數組,但它似乎無法識別。以下是查詢:

SELECT CONCAT('["',GROUP_CONCAT(phdate SEPARATOR '", "'),'"]') As arrdate FROM table1;

which returns

["2021-01-01", "2021-02-12", "2021-02-13", "2021-04-02", "2021-05-01", "2021-05-13", "2021-05-14",
 "2021-05-26", "2021-05-30", "2021-05-31", "2021-07-06", "2021-07-20", "2021-08-10", "2021-08-31",
 "2021-09-16", "2021-10-02", "2021-10-19", "2021-11-04", "2021-12-25"]

因此,我將結果顯示在頁面中:

<% phDates.forEach((phDates, index) => { %>
        <tr><td><p id="phdates" name="phdates" value="<%= phDates.arrdate %>"><%= phDates.arrdate %>
            <% }) %></p><p id="demo" name="demo">b</p><br><p id="demo1" name="demo1">a</p></td></tr>

<script>
var dates = document.getElementById("phdates").innerHTML;
        document.getElementById("demo").innerHTML = dates;
</script>

如您所見,來自MySQL查詢的arrdate值和demo顯示的格式相似。當我在var dates中指定數組時,demo值是不同的(如上面的代碼片斷所示):

如果我故意讓MySQL如上所述返回數據,盡管它仍然無法識別數據。我認為如果這種方法可行,我甚至不需要將選擇的日期與表中的列進行比較。我使用$( "div" ).toArray()進行了測試,但也無法使其工作。

我認為這對我來說可能是最簡單的解決方案,但我想知道如何格式化MySQL結果值,使其與正確的javascript數組格式相對應?或者保持MySQL輸出不變,并將該值轉換為JavaScript數組兼容值。我不禁想到解決方案可能很簡單,但我已經找了幾天了,但什么都沒有找到。

推薦答案

實際上有一個簡單的解決方案。讓我們從您的查詢開始我們的思考過程,它離解決方案不是很遠(這還不是很好,但已經很接近了-足以開始我們的思考過程):

SELECT CONCAT('["',GROUP_CONCAT(phdate SEPARATOR '", "'),'"]') As arrdate FROM table1;

您打算在這里將數據轉換為類似JSON的字符串。當然,您可以調用JSON.parseeval并對此結果賦值,但我推薦一種更優雅的方式:

SELECT GROUP_CONCAT(phdate SEPARATOR ',') As dates FROM table1;

上面將包含一個日期用逗號分隔的字符串。假設您將其放入名為myDates的JS變量中,您只需調用:

myDates.split(",")
let myDates = '2021-01-13,2021-02-02,2021-03-04'; //results from db

console.log(myDates.split(','));

這篇關于將選定日期與MySQL查詢生成的表列或日期數組進行比較的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:arrays ejs errorCompareaselecteddateagainstatablecolumnoranarrayofd
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定