获取下拉菜单值的日期时间,并将其与文本框日期时间一起添加

时间:2018-09-20 07:52:14

标签: javascript php html

早上好。

我正在进行一个项目,该项目由2个文本框,1个按钮和1个下拉菜单构建。

第一个文本框具有选择日期时间的功能。第二个文本框应该通过单击按钮获得计算结果。

功能

用户输入了日期时间,现在他可以在下拉菜单中选择一个选项。现在,他可以按按钮来计算日期时间。计算应始终将日期时间加3年。我在 javascript 中完成了该功能:

var fristJahr;
var hFvg;
var hFdatum;
var jahr;
var monat;
var tag;
var fristMonat;
var fristTag;
var frist = new Date();

if (fs.event.eventCode === 'H34' || fs.event.eventCode === 'H06') {
    var mydate = fs.event.eventDate;
    mydate.setFullYear(mydate.getFullYear() + 1);
    mydate.setMonth(11);
    mydate.setDate(31);
    // fs.showHint(mydate, 'caption?');
    var newdate = new Date(mydate.getFullYear(), mydate.getMonth(), mydate.getDate());
    fs.event.cCase.limitationDate = newdate;

}


hFvg = fs.event.eventCode;

if (hFvg === 'H17' || hFvg === 'H18' || hFvg === 'H19' || hFvg === 'H20' || hFvg === 'H21') {
    hFdatum = fs.event.eventDate;
    jahr = (hFdatum.getFullYear());
    monat = (hFdatum.getMonth());
    tag = (hFdatum.getDate());

    fristMonat = monat + 6;
    if (fristMonat > 12) {
        fristMonat = fristMonat - 12;
        fristJahr = jahr + 1;
    } else {
        fristMonat = fristMonat;
        fristJahr = jahr;
    }

    // Tagesdatum erhöhen
    fristTag = tag + 1;

    // sicherstellen, das ein gültiges Datum entstehen würde
    if (fristMonat === 1 && fristTag > 31) {
        fristMonat = 2;
        fristTag = 1;
    }
    if (fristMonat === 2 && fristTag > 28) {
        fristMonat = 3;
        fristTag = 1;
    }
    if (fristMonat === 4 && fristTag > 30) {
        fristMonat = 5;
        fristTag = 1;
    }
    if (fristMonat === 6 && fristTag > 30) {
        fristMonat = 7;
        fristTag = 1;
    }
    if (fristMonat === 7 && fristTag > 31) {
        fristMonat = 8;
        fristTag = 1;
    }
    if (fristMonat === 9 && fristTag > 30) {
        fristMonat = 10;
        fristTag = 1;
    }
    if (fristMonat === 11 && fristTag > 30) {
        fristMonat = 12;
        fristTag = 1;
    }


    frist.setDate(fristTag);
    frist.setFullYear(fristJahr);
    frist.setMonth(fristMonat);
    //frist.get
    //frist.toDateString()
    //    fs.event.cCase.limitationDate = frist.getFullYear() + '-' + frist.getMonth()+1 +'-' + frist.getDate();
    var neueFrist = new Date(frist.getFullYear(), frist.getMonth(), frist.getDate());
    //neueFrist.setFullYear();
    fs.event.cCase.limitationDate = neueFrist;

}

PHP HTML 中现在已经拥有的内容:

<!doctype html>
<html>
   <head>
      <meta charset="utf-8">
      <link type="text/css" rel="stylesheet" href="demo.css">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <style type="text/css">
         .mt10px{
         margin-top: 10px;
         }
         .mt20px{
         margin-top: 20px;
         }
         .input{
         background: #ffffff;
         border: 1px solid #cccccc;
         border-radius: 3px;
         padding: 6px 4px;
         }
         p{
         line-height: 25px;
         }
      </style>
      <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
      <script type="text/javascript" src="../dist/date-time-picker.min.js"></script>
   </head>
   <body>
      <form method="POST" action="">
         <table align="center" border="1">
            <tbody>
               <tr>
                  <td width="250">
                     <input type="text" class="mt10px input" id="J-demo-01" name="datum">
                     <script type="text/javascript">
                        $('#J-demo-01').dateTimePicker();

                     </script>
                     <select>
                     <?php
                        require("require.php");

                        $oMy = new clsMYSQL();

                        $oMy->Query("select * from IKE_EventTemplate where EventCode like 'H%' and 
                        Variant='H' order by EventCode ASC");

                        while(!$oMy->eof)
                        {                        
                        echo "<option>";
                        echo  $oMy->row['EventCode'];
                        echo "</option>";    
                        $oMy->Move();
                        }
                        ?>
                     </select>
                  </td>
                  <td> <input name="bgBerechne" type="submit" value="Berechne"></td>
                  <?php
                     $datum= $_POST['datum'];
                     echo "<td width='250'><input type='text' class='mt10px input' id='J-demo- 
                     07' value=$datum></td>";
                     ?>
               </tr>
            </tbody>
         </table>
      </form>
      </script>
   </body>
</html>

How it looks like

我在PHP中的代码已经复制了textBox的值,您可以在其中选择日期时间,但它不仅应该复制该值,还应该发布日期时间和下拉菜单功能的解决方案。

有人可以给我一个提示,告诉我我该如何帮助自己? 谢谢您的时间:)!

1 个答案:

答案 0 :(得分:0)

使用DateTime来获得所需的功能,此处将给定日期增加3年。 Check here

<?php

$date = '2018-09-20 11:07:00';
$date_after_three_years = DateTime::createFromFormat('Y-m-d H:i:s', $date);
$date_after_three_years ->modify('+3 years');

echo $date_after_three_years ->format('Y-m-d H:i:s');

?>

评论后:

绑定任何对PHP代码进行AJAX请求的javascript函数,该PHP代码将从数据库中获取相应下拉值的DateTime值。

例如

HTML

<select "onchange=getValueFromDatabase(this)"></select>

JAVASCRIPT

function getValueFromDatabase(thisObj)
{
    var selected = thisObj.value;
    var postData = {
          "action": "get_dropdown_value_from_db",
          "search_param": selected
    }

    $.ajax({
      url: 'your_code.php',
      method: 'POST',
      data: postData,
      success: function(result)
      {
         if (result) //then use the value, maybe for your case bind it to the textbox
      },
      error: function(jqXHR jqXHR, String textStatus, String errorThrown)
      {
      } 
    });
}

PHP

require("require.php");

if (isset($_POST["action"]) && $_POST["action"] == "get_dropdown_value_from_db")
{
   echo getDropDownValue($_POST["search_param"]); //here you're gettign back the value which you posted from AJAX
   die(); //stopping further execution to the code which is not needed at this point
}

function getDropDownValue($value)
{
   $returnValue = "";

   $oMy = new clsMYSQL();
   $oMy->Query("query to fetch datetime where drop down value ='"+ $value +"'");

   while(!$oMy->eof)
   {                        
       $returnValue = $oMy->row['COLUMN_NAME'];
       $oMy->Move();
   }

   return $returnValue;
}

希望这会有所帮助。无论如何,这只是一个基本概念,总是在编写查询时需要使用带有PreparedStatement的参数化查询。