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



早上好。

我有一个正在进行的项目,它由 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;
}

我现在在PHPHTML中已经拥有的东西:

<!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>

它的样子

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

有人可以给我一个提示,我该如何帮助自己吗? 感谢您抽出宝贵时间:)!

将日期时间用于您需要的功能,在这里它会为给定日期增加 3 年。在这里查看

<?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');
?>

评论后:

将任何执行 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 一起使用。

最新更新