Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何避免多次事件执行_Php_Mysql - Fatal编程技术网

Php 如何避免多次事件执行

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"/&

我正在创建事件日历。我添加了用于添加新事件的引导模式。我的问题是第一次工作正常,但第二次之前添加的数据也重新添加。下一步加3次。它看起来像一个环。我如何避免这种情况

      <?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">&times;</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(开始、结束)时,onclick处理程序将附加到
    #add_事件
    。单击
    #add_event
    时,您的操作将触发一次
  • 第二次
    addNewEvent(开始、结束),另一个onclick处理程序附加到
    #add_事件
    。单击
    #add_event
    时,您的操作将触发两次
  • …只要
    addNewEvent(开始、结束),这种情况就会持续被调用
  • 解决方案:

    onclick处理程序应该从
    addNewEvent(开始,结束)中取出。然后,在
    addNewEvent(开始、结束)时附加一次事件处理程序并设置新值被调用

    代码:


    代码的问题是,每次
    addNewEvent(开始、结束)#add_事件
    时,调用code>

    i、 e:

  • 第一次
    addNewEvent(开始、结束)时,onclick处理程序将附加到
    #add_事件
    。单击
    #add_event
    时,您的操作将触发一次
  • 第二次
    addNewEvent(开始、结束),另一个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
    }