根据月份和年份下拉列表显示日期-php ajax

时间:2017-05-16 11:59:39

标签: php ajax

您好我有以下代码,它将根据月份和年份的下拉列表显示日期

的index.html

<html>
<head>
<script>
function showDate() {

    var str=document.getElementById("mymonth").value;
    var str1=document.getElementById("myyear").value;
  if (str==0) {// if nothing is selected from first drop down
    document.getElementById("txtHint").innerHTML="";
    return;
  } 
                if (window.XMLHttpRequest) {
                    // code for IE7+, Firefox, Chrome, Opera, Safari
                    xmlhttp=new XMLHttpRequest();
                }
                else {
                    // code for IE6, IE5
                    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                }
                xmlhttp.onreadystatechange=function() {
                    if (this.readyState==4 && this.status==200) {
                        document.getElementById("txtHint").innerHTML=this.responseText;
                    }
                }
                xmlhttp.open("GET","getdate.php?selectedmonth="+str+"&selectedyear="+str1,true);
                xmlhttp.send();
            }

</script>
</head>
<body>


<form>
            <select name="mymonth" id="mymonth" onchange="showDate()">
 <option>Select Month</option>
      <option value="01">January</option>
      <option value="02">February</option>
      <option value="03">Mac</option>
      <option value="04">April</option>
      <option value="05">Mei</option>
      <option value="06">June</option>
      <option value="07">July</option>
      <option value="08">August</option>
      <option value="09">September</option>
      <option value="10">October</option>
      <option value="11">November</option>
      <option value="12">December</option>
      </select>
<select name="myyear" id="myyear" onchange="showDate()">
                <option>Select Year:</option>
                <option value="2016">2016</option>
                 <option value="2017">2017</option>
            </select>     



</form>

<br>
<div id="txtHint"><b>Date group by month/year</b></div>

</body>
</html>

getdate.php

<?php
$selectedmonth = intval($_GET['selectedmonth']);
$selectedyear = intval($_GET['selectedyear']);

$month = "$selectedmonth";
$year = "$selectedyear";

$start_date = "01-".$month."-".$year;
$start_time = strtotime($start_date);

$end_time = strtotime("+1 month", $start_time);

echo "<table border='1'>";

for($i=$start_time; $i<$end_time; $i+=86400)
{
$list = date('d M Y (D)', $i);
echo "<tr><td>";
echo $list;
echo "</td>";

echo "<td>&nbsp;</td>";
echo "</tr>";

}

echo "</table>";


?>

问题:

  1. 如果只选择了月份和年份,那么我该怎么做才能显示getdate.php?
  2. 现在,当我们第一次选择月份和年份时,它显示的结果不正确。

    例如,当我们选择六月时,它将显示

      

    2001年5月31日至2001年6月30日

    如果我们选择2016,则会显示2015个日期。

    之后,当我们再次选择时,月份或年份将显示正确的结果。::

1 个答案:

答案 0 :(得分:0)

将值属性添加到默认选择选项。

<option value="">Select Month</option>
<option value="">Select Year:</option>

在发出Ajax请求之前,请输入以下条件。

if(str == '' || str1 == ''){
    return;
}
//Your Ajax goes here...

将时区添加到PHP文件中,位于文件的开头,<?php开放标记下方。

date_default_timezone_set("Asia/Kolkata"); //Change your timezone accordingly. Here it's set to Kolkatta, India.

我希望它可以帮到你!