Php 如何避免多次事件执行
我正在创建事件日历。我添加了用于添加新事件的引导模式。我的问题是第一次工作正常,但第二次之前添加的数据也重新添加。下一步加3次。它看起来像一个环。我如何避免这种情况Php 如何避免多次事件执行,php,mysql,Php,Mysql,我正在创建事件日历。我添加了用于添加新事件的引导模式。我的问题是第一次工作正常,但第二次之前添加的数据也重新添加。下一步加3次。它看起来像一个环。我如何避免这种情况 <?php //index.php include('header.php'); ?> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.css"/&
<?php
//index.php
include('header.php');
?>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.css"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<div class="container" style="margin-top:30px">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-md-9">Holiday List</div>
<div class="col-md-3" align="right">
<a href="index.php" class="btn btn-info" role="button">Back To Home</a>
</div>
</div>
</div>
<div class="card-body">
<div id="calendar">
</div>
</div>
</div>
</div>
<div class="modal" id="formModal">
<div class="modal-dialog model-center">
<form id="add_event_01">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title">Make New holiday</h4>
<button type="button" class="close" data-dismiss="modal">×</button>
</div>
<!-- Modal body -->
<div class="modal-body">
<div class="form-group">
<select name="event_action" id="event_action" class="form-control">
<option value="1">Holiday</option>
<option value="2">Absant Day As Present</option>
</select>
</div>
<div class="form-group">
<input type="text" name="event_name" id="event_name" class="form-control" placeholder="Event Name" />
<span id="error_event_name" class="text-danger"></span>
</div>
</div>
<!-- Modal footer -->
<div class="modal-footer">
<button type="button" name="add_event" id="add_event" class="btn btn-success btn-sm">Submit</button>
<button type="button" class="btn btn-danger btn-sm" data-dismiss="modal">Close</button>
</div>
</div>
</form>>
</div>
</div>
<script>
$(document).ready(function() {
var calendar = $('#calendar').fullCalendar({
editable:true,
header:{
left:'prev,next today',
center:'title',
right:'month,agendaWeek,agendaDay'
},
events: 'timetable/load.php',
selectable:true,
selectHelper:true,
select: function(start, end, allDay)
{
$('#formModal').modal('show');
var start = $.fullCalendar.formatDate(start, "Y-MM-DD HH:mm:ss");
var end = $.fullCalendar.formatDate(end, "Y-MM-DD HH:mm:ss");
addNewEvent(start,end);
},
editable:true,
eventResize:function(event)
{
var start = $.fullCalendar.formatDate(event.start, "Y-MM-DD HH:mm:ss");
var end = $.fullCalendar.formatDate(event.end, "Y-MM-DD HH:mm:ss");
var title = event.title;
var id = event.id;
$.ajax({
url:"timetable/update.php",
type:"POST",
data:{title:title, start:start, end:end, id:id},
success:function(){
calendar.fullCalendar('refetchEvents');
alert('Event Update');
}
})
},
eventDrop:function(event)
{
var start = $.fullCalendar.formatDate(event.start, "Y-MM-DD HH:mm:ss");
var end = $.fullCalendar.formatDate(event.end, "Y-MM-DD HH:mm:ss");
var title = event.title;
var id = event.id;
$.ajax({
url:"timetable/update.php",
type:"POST",
data:{title:title, start:start, end:end, id:id},
success:function()
{
calendar.fullCalendar('refetchEvents');
alert("Event Updated");
}
});
},
eventClick:function(event)
{
if(confirm("Are you sure you want to remove it?"))
{
var id = event.id;
$.ajax({
url:"timetable/delete.php",
type:"POST",
data:{id:id},
success:function()
{
calendar.fullCalendar('refetchEvents');
alert("Event Removed");
}
})
}
},
});
function addNewEvent(start,end) {
$('#add_event').click(function(){
var title = $('#event_name').val();
var type = $('#event_action').val();
$.ajax({
url:"timetable/insert.php",
type:"POST",
data:{title:title,type:type, start:start, end:end},
success:function()
{
calendar.fullCalendar('refetchEvents');
$('#formModal').modal('hide');
alert("Added Successfully");
}
});
});
}
});
</script>
假日清单
放假
&时代;
假日
缺席日
提交
接近
>
$(文档).ready(函数(){
var calendar=$(“#calendar”).fullCalendar({
是的,
标题:{
左:'上一个,下一个今天',
中间:'标题',
右图:“月,agendaWeek,agendaDay”
},
事件:“timeline/load.php”,
是的,
selectHelper:对,
选择:功能(开始、结束、全天)
{
$('formModal').modal('show');
var start=$.fullCalendar.formatDate(开始,“Y-MM-DD HH:MM:ss”);
var end=$.fullCalendar.formatDate(end,“Y-MM-DD HH:MM:ss”);
addNewEvent(开始、结束);
},
是的,
eventResize:函数(事件)
{
var start=$.fullCalendar.formatDate(event.start,“Y-MM-DD HH:MM:ss”);
var end=$.fullCalendar.formatDate(event.end,“Y-MM-DD HH:MM:ss”);
var title=event.title;
var id=event.id;
$.ajax({
url:“timeline/update.php”,
类型:“POST”,
数据:{title:title,start:start,end:end,id:id},
成功:函数(){
日历。完整日历(“参考事件”);
警报(“事件更新”);
}
})
},
eventDrop:函数(事件)
{
var start=$.fullCalendar.formatDate(event.start,“Y-MM-DD HH:MM:ss”);
var end=$.fullCalendar.formatDate(event.end,“Y-MM-DD HH:MM:ss”);
var title=event.title;
var id=event.id;
$.ajax({
url:“timeline/update.php”,
类型:“POST”,
数据:{title:title,start:start,end:end,id:id},
成功:函数()
{
日历。完整日历(“参考事件”);
警报(“事件更新”);
}
});
},
事件单击:函数(事件)
{
如果(确认(“您确定要删除它吗?”))
{
var id=event.id;
$.ajax({
url:“timeline/delete.php”,
类型:“POST”,
数据:{id:id},
成功:函数()
{
日历。完整日历(“参考事件”);
警报(“事件移除”);
}
})
}
},
});
函数addNewEvent(开始、结束){
$(“#添加事件”)。单击(函数(){
var title=$('#事件名称').val();
变量类型=$(“#事件_操作”).val();
$.ajax({
url:“timeline/insert.php”,
类型:“POST”,
数据:{title:title,type:type,start:start,end:end},
成功:函数()
{
日历。完整日历(“参考事件”);
$('#formModal').modal('hide');
警报(“添加成功”);
}
});
});
}
});
这是我写的程序。当我在bootstrap model Added Successfully中按submit按钮时,会显示一次消息,然后在twist中添加第二个事件Added Successfully message alert。同样,它将是一个循环过程。如何避免这个错误 代码的问题是,每次
addNewEvent(开始、结束)当您将一个点击事件处理程序附加到#add_事件
时,调用code>
i、 e:
第一次addNewEvent(开始、结束)调用code>时,onclick处理程序将附加到#add_事件
。单击#add_event
时,您的操作将触发一次
第二次addNewEvent(开始、结束)调用code>,另一个onclick处理程序附加到#add_事件
。单击#add_event
时,您的操作将触发两次
…只要addNewEvent(开始、结束),这种情况就会持续代码>被调用
解决方案:
onclick处理程序应该从addNewEvent(开始,结束)中取出代码>。然后,在addNewEvent(开始、结束)时附加一次事件处理程序并设置新值代码>被调用
代码:
代码的问题是,每次addNewEvent(开始、结束)当您将一个点击事件处理程序附加到#add_事件
时,调用code>
i、 e:
第一次addNewEvent(开始、结束)调用code>时,onclick处理程序将附加到#add_事件
。单击#add_event
时,您的操作将触发一次
第二次addNewEvent(开始、结束)调用code>,另一个onclick处理程序附加到#add_事件
。单击#add_event
时,您的操作将触发两次
…只要addNewEvent(开始、结束),这种情况就会持续代码>被调用
解决方案:
onclick处理程序应该从addNewEvent(开始,结束)中取出代码>。然后,在addNewEvent(开始、结束)时附加一次事件处理程序并设置新值代码>被调用
代码:
您应该将//设置开始和结束为全局变量
替换为必要的代码。一个选项是将其添加到窗口对象,即window.start=start;window.end=结束代码>。然后让var start=window.start;var end=window.end
在单击事件句柄中,您应该用必要的代码替换//将开始和结束设置为全局变量。一个选项是将其添加到窗口对象,即window.start=start;window.end=结束代码>。然后让var start=window.start;var end=window.end单击事件处理程序中的代码>
$('#add_event').click(function(){
var title = $('#event_name').val();
var type = $('#event_action').val();
var start = // get start global variable
var end = // get end global variable
$.ajax({
url:"timetable/insert.php",
type:"POST",
data:{title:title,type:type, start:start, end:end},
success:function() {
calendar.fullCalendar('refetchEvents');
$('#formModal').modal('hide');
alert("Added Successfully");
}
});
});
function addNewEvent(start,end) {
// Set start and end as global variables
}