如何获取月份的值到数据库

时间:2018-02-09 16:45:45

标签: javascript php

我有这个功能,根据月份为用户提供正确数量的按钮。因此,如果用户加载页面,Februari将显示,还有28个按钮。如果用户更改为March,则会有31个按钮。用户可以单击该按钮,相应的按钮将添加到mySql数据库中。因此,如果用户选择Februari和按钮3,则数据库中的值将显示为2018-02-03。问题是,我需要帮助的是,如果用户更改页面上的月份,它不会更改数据库中的值。数据库中的月份值始终是当年的当前月份。试过不同的解决方案但没有任何作用月份的值是h2,其中id为#34; displaysMonth"。

功能:

  function drawTable(daysInMonth) {
          var cellsToDraw = daysInMonth;
          var table = document.getElementById("table");
          var dateObj = new Date();
            var month = dateObj.getMonth()+1;
            var day = dateObj.getDate();
            var year = dateObj.getFullYear();
            newdate = year + "-" + month;
            table.innerHTML = "";
          for (r = 0; r < (daysInMonth / 7); r++) {
            var newRow = document.createElement("tr");
            table.appendChild(newRow);
            for (c = 0; c < 31 && cellsToDraw > 0; c++) {
            v = c +1;
            //var newCell = document.createElement("td");
              var newCell = document.createElement("input");
              newCell.setAttribute("type", "radio");
              newCell.setAttribute("name", "day");
              newCell.setAttribute("value", newdate + "-" + v);
              newRow.appendChild(newCell);
              newCell.innerHTML = 
              cellsToDraw--;
            }
          }
        }

显示月份:

function daysInMonth(month, year) {
     var days;
     switch (month) {
       case 1: 
       var leapYear = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
       days = leapYear ? 29 : 28;
       break;
       case 3:
       case 5:
       case 8:
       case 10:
       days = 30;
       break;
       default:
       days = 31;
      }
      return days;
    }

获得月份:

 window.onload = function() {
    var month = new Date();
    var index = month.getMonth();
    var months = ["Januari", "Februari", "March", "April", "May", "June", "July", "Augusti", "September", "October", "November", "December"];
    document.getElementById("todayField").innerHTML = months[month.getMonth()];
    // Draws a table for the current month
    drawTable(daysInMonth(index, 2018));
    }

获得下个月

   function next() {
        var months = ["Januari", "Februari", "March", "April", "May", "June", "July", "Augusti", "September", "October", "November", "December"];
        var weeks = ["Sunday", "Monday", "Tuseday", "Wednesday", "Thursday", "Friday", "Saturday"];
        var nextMonth = index + 1 > 11 ? 0 : index + 1;
        index = nextMonth;
        document.getElementById("displayingMonth").innerHTML = months[nextMonth];
        drawTable(daysInMonth(index, 2018));
      }

HTML

  <input id="newCell"type="hidden"name="day" value="">

所有帮助都是适当的!

1 个答案:

答案 0 :(得分:2)

好吧,这里稍作调整。这对您的代码非常具体,因此请注意更改。问题在于使用var dateObj = new Date();,然后从中month拉出radio以添加到每个日期&#39;用户选择input input

每个function drawTable(daysInMonth,selectedMonth) { ... // selectedMonth has the proper index for the Date() function // setting 2018 here, because your code isnt inc years yet var dateObj = new Date(2018, selectedMonth, 1, 0, 0, 0, 0); ... } window.onload = function() { ... drawTable(daysInMonth(index, 2018), month.getMonth()); } function next() { // you may want to deal with looping to the next year here too ... drawTable(daysInMonth(index, 2018), nextMonth);// nextMonth holds proper index } 使用的是当前日期&#39;为此,因而错过了错误的月份。

相反,您需要将选定的月份日期推送到drawTable函数,以便可以从中正确构建。这样的例子是:

new Date()

我想我应该注意这会传递&#34; month索引&#34;,因为.getMonth()需要一个月索引0到11.所以直接从Date()传递它是最兼容(不需要为它们添加+1或-1)。

这里也是代码的完整部分,应用了许多更改以减少一些复杂性,并允许多年来作为下个月循环滚动。这里有很多变化,但主要是它更依赖于daysInMonth()对象。不需要你拥有的// set as global var showDate = new Date(); var months = ["Januari", "Februari", "March", "April", "May", "June", "July", "Augusti", "September", "October", "November", "December"]; var weeks = ["Sunday","Monday","Tuseday","Wednesday","Thursday","Friday","Saturday"]; function drawTable(forDate) { var daysInMonth = new Date(forDate.getFullYear(),forDate.getMonth()+1,0).getDate(); // ^^^ magic way to get number of days! var cellsToDraw = daysInMonth; // for a zero-padded non-index YYYY-MM prefix value: var newdate = forDate.getFullYear() +"-"+ ("0"+ (forDate.getMonth() + 1)).slice(-2); var table = document.getElementById("table"); table.innerHTML = ""; for (var r = 0; r < (daysInMonth / 7); r++) { var newRow = document.createElement("tr"); table.appendChild(newRow); for (var c = 0; c < 31 && cellsToDraw > 0; c++) { // for a zero-padded day to tack onto newdate var day = ("0" + (c + 1)).slice(-2); var newCell = document.createElement("input"); newCell.setAttribute("type", "radio"); newCell.setAttribute("name", "day"); newCell.setAttribute("value", newdate + "-" + day);// makes YYYY-MM-DD newRow.appendChild(newCell); newCell.innerHTML = ''; cellsToDraw--; } } } window.onload = function() { document.getElementById("todayField").innerHTML = months[showDate.getMonth()]; drawTable( showDate ); }; function next() { if (showDate.getMonth() == 11) { showDate.setMonth( 0 ); showDate.setFullYear( showDate.getFullYear()+1 ); } else { showDate.setMonth( showDate.getMonth()+1 ); } document.getElementById("displayingMonth").innerHTML = months[showDate.getMonth()]; drawTable( showDate ); } function prev() { if (showDate.getMonth() === 0) { showDate.setMonth( 11 ); showDate.setFullYear( showDate.getFullYear()-1 ); } else { showDate.setMonth( showDate.getMonth()-1 ); } document.getElementById("displayingMonth").innerHTML = months[showDate.getMonth()]; drawTable( showDate ); } 功能。

.Columns.Count