如何通过拖放JavaScript和PHP中的外部事件来更新数据库中的事件?

美国汽车协会

我正在使用全日历JavaScript库来开发日历。我已经准备好前端,但是在将事件数据放到日历上之后,我不确定如何更新数据库中的事件数据。我对JavaScript还是很陌生,我已经提到了一些类似的问题,但是并没有得到我想要的东西。

这是我的代码:

**index.php**

<link href='https://unpkg.com/@fullcalendar/[email protected]/main.min.css' rel='stylesheet' />
<link href='https://unpkg.com/@fullcalendar/[email protected]/main.min.css' rel='stylesheet' />
<link href='https://unpkg.com/@fullcalendar/[email protected]/main.min.css' rel='stylesheet' />
<script src='https://unpkg.com/@fullcalendar/[email protected]/main.min.js'></script>
<script src='https://unpkg.com/@fullcalendar/[email protected]/main.min.js'></script>
<script src='https://unpkg.com/@fullcalendar/[email protected]/main.min.js'></script>
<script src='https://unpkg.com/@fullcalendar/[email protected]/main.min.js'></script>


<div id='external-events'>
 <p>
<strong>Draggable Events</strong>
</p>
<div class='fc-event'>My Event 1</div>
<div class='fc-event'>My Event 2</div>
<div class='fc-event'>My Event 3</div>
<div class='fc-event'>My Event 4</div>
<div class='fc-event'>My Event 5</div>
<p>
<input type='checkbox' id='drop-remove' />
<label for='drop-remove'>remove after drop</label>
</p>
   </div>
    <div id='calendar-container'>
     <div id='calendar'></div>
    </div>
 ** main.js**
 document.addEventListener('DOMContentLoaded', function() {
 var Calendar = FullCalendar.Calendar;
 var Draggable = FullCalendarInteraction.Draggable;

var containerEl = document.getElementById('external-events');
var calendarEl = document.getElementById('calendar');
var checkbox = document.getElementById('drop-remove');


new Draggable(containerEl, {
itemSelector: '.fc-event',
eventData: function(eventEl) {
  return {
    title: eventEl.innerText
  };
}
});

var calendar = new Calendar(calendarEl, {
plugins: [ 'interaction', 'dayGrid', 'timeGrid' ],
header: {
  left: 'prev,next today',
  center: 'title',
  right: 'dayGridMonth,timeGridWeek,timeGridDay'
},
editable: true,
droppable: true, 
drop: function(info) {
  if (checkbox.checked) {
    info.draggedEl.parentNode.removeChild(info.draggedEl);
  }
},

});

calendar.render();
}); 

**add_event.php**

require 'database.php';
echo $_POST['title'];
$title = $_POST['title'];
$start = $_POST['start'];
$end = $_POST['end'];
$conn = DB::databaseConnection();
$conn->beginTransaction();
$sqlInsert = "INSERT INTO Events (title, start, [end]) VALUES    (:title, :start, :end)";
$stmt = $conn->prepare($sqlInsert);
$stmt->bindParam(':title', $title);
$stmt->bindParam(':start', $start);
$stmt->bindParam(':end', $end);


   if ($stmt->execute()) {
        $conn->commit();
        return true;
    } else {
        $conn->rollback();
        return false;
    }

这是我提到的代码销的链接:https ://fullcalendar.io/docs/external-dragging-demo我不确定如何获取将JavaScript链接到insert函数的方法。因此,当事件被删除时,应该将其保存在数据库中。

爱迪生

您需要eventReceive在fullCalendar中处理回调。这将为您提供来自放置项的关联事件数据。然后,您可以将该数据发送到add_event.php使用AJAX。有关回调的更多详细信息,请参见https://fullcalendar.io/docs/eventReceive

这样的事情应该起作用:

eventReceive: function( info ) {

  //get the bits of data we want to send into a simple object
  var eventData = {
    title: info.event.title,
    start: info.event.start,
    end: info.event.end
  };
  //send the data via an AJAX POST request, and log any response which comes from the server
  fetch('add_event.php', {
    method: 'POST',
    headers: {'Accept': 'application/json'},
    body: encodeFormData(eventData)
  })
  .then(response => console.log(response))
  .catch(error => console.log(error));
}

注意:我使用了现代的fetch()函数来执行AJAX调用,而不是使用较早的XmlHttpRequest或任何依赖jQuery或其他外部库的东西。

这是上面的代码使用的encodeForm函数的代码(该想法的信息,请在本网站获得):

const encodeFormData = (data) => {
  var form_data = new FormData();

  for ( var key in data ) {
    form_data.append(key, data[key]);
  }
  return form_data;   
}

演示:

document.addEventListener('DOMContentLoaded', function() {
  var Calendar = FullCalendar.Calendar;
  var Draggable = FullCalendarInteraction.Draggable;

  var containerEl = document.getElementById('external-events');
  var calendarEl = document.getElementById('calendar');
  var checkbox = document.getElementById('drop-remove');


  new Draggable(containerEl, {
    itemSelector: '.fc-event',
    eventData: function(eventEl) {
      return {
        title: eventEl.innerText
      };
    }
  });

  var calendar = new Calendar(calendarEl, {
    plugins: ['interaction', 'dayGrid', 'timeGrid'],
    header: {
      left: 'prev,next today',
      center: 'title',
      right: 'dayGridMonth,timeGridWeek,timeGridDay'
    },
    editable: true,
    droppable: true,
    eventReceive: function(info) {

      //get the bits of data we want to send into a simple object
      var eventData = {
        title: info.event.title,
        start: info.event.start,
        end: info.event.end
      };
      console.log(eventData);
      //send the data via an AJAX POST request, and log any response which comes from the server
      fetch('add_event.php', {
          method: 'POST',
          headers: {
            'Accept': 'application/json'
          },
          body: encodeFormData(eventData)
        })
        .then(response => console.log(response))
        .catch(error => console.log(error));
    }
  });
  calendar.render();
});

const encodeFormData = (data) => {
  var form_data = new FormData();

  for (var key in data) {
    form_data.append(key, data[key]);
  }
  return form_data;
}
<link href='https://unpkg.com/@fullcalendar/[email protected]/main.min.css' rel='stylesheet' />
<link href='https://unpkg.com/@fullcalendar/[email protected]/main.min.css' rel='stylesheet' />
<link href='https://unpkg.com/@fullcalendar/[email protected]/main.min.css' rel='stylesheet' />
<script src='https://unpkg.com/@fullcalendar/[email protected]/main.min.js'></script>
<script src='https://unpkg.com/@fullcalendar/[email protected]/main.min.js'></script>
<script src='https://unpkg.com/@fullcalendar/[email protected]/main.min.js'></script>
<script src='https://unpkg.com/@fullcalendar/[email protected]/main.min.js'></script>


<div id='external-events'>
  <p>
    <strong>Draggable Events</strong>
  </p>
  <div class='fc-event'>My Event 1</div>
  <div class='fc-event'>My Event 2</div>
  <div class='fc-event'>My Event 3</div>
  <div class='fc-event'>My Event 4</div>
  <div class='fc-event'>My Event 5</div>
  <p>
    <input type='checkbox' id='drop-remove' />
    <label for='drop-remove'>remove after drop</label>
  </p>
</div>
<div id='calendar-container'>
  <div id='calendar'></div>
</div>


PS您还应该紧急修复PHP代码中的SQL注入漏洞,就像我在上面的评论中提到的那样。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更新Ajax数据库后在fullCalendar中重新呈现事件

来自分类Dev

通过拖放全日历来更新事件-Javascript

来自分类Dev

DDD /在图形数据库中存储域事件

来自分类Dev

如何通过引导箱中的通配符ID来onclick事件?

来自分类Dev

完整的日历删除编辑描述以及数据库中的外部事件

来自分类Dev

从Laravel中的现有数据库为存储过程,函数和事件创建迁移

来自分类Dev

使用Javascript和PHP从数据库中删除项目

来自分类Dev

如何显示完整日历angular js指令中从数据库获取的事件?

来自分类Dev

如何处理外部库中的初始化和事件?

来自分类Dev

如何让Button更新php中的mysql数据库

来自分类Dev

基于数据库中的问题的Javascript和PHP测验

来自分类Dev

如何从PHP和JavaScript数据库中获取价格

来自分类Dev

如何通过约会将数据库中的日期列出到JFXtras议程上:Google日历风格的事件列表

来自分类Dev

通过Spring处理数据库事件

来自分类Dev

在beforeunload事件中查询数据库

来自分类Dev

在FullCalendar的日视图中拖放事件时,开始日期时间和结束日期时间未记录在数据库中

来自分类Dev

通过javascript和jquery从数据库中检索数据

来自分类Dev

完整的日历删除编辑描述以及数据库中的外部事件

来自分类Dev

通过mysql数据库中的php更新数据

来自分类Dev

Quilljs中的拖放事件

来自分类Dev

如何通过在php mqsql中获取用户的输入来显示数据库中的数据?

来自分类Dev

如何通过使用php文件从mysql数据库中检索问题和答案

来自分类Dev

使用域事件更新数据库中的实体

来自分类Dev

是否可以通过了解PHP中的用户名和密码(仅)来入侵我的数据库?

来自分类Dev

如何使用php更新数据库中的数据

来自分类Dev

如何通过在PHP中计算总和来显示数据库中具有最大计数的酒店名称?

来自分类Dev

使用鼠标单击事件在netbeans中使用JTable更新mySQL数据库中的数据

来自分类Dev

如何使用我在 javascript 中通过 php 获得的数据库中的数据?

来自分类Dev

PHP从日历中的数据库添加事件

Related 相关文章

  1. 1

    更新Ajax数据库后在fullCalendar中重新呈现事件

  2. 2

    通过拖放全日历来更新事件-Javascript

  3. 3

    DDD /在图形数据库中存储域事件

  4. 4

    如何通过引导箱中的通配符ID来onclick事件?

  5. 5

    完整的日历删除编辑描述以及数据库中的外部事件

  6. 6

    从Laravel中的现有数据库为存储过程,函数和事件创建迁移

  7. 7

    使用Javascript和PHP从数据库中删除项目

  8. 8

    如何显示完整日历angular js指令中从数据库获取的事件?

  9. 9

    如何处理外部库中的初始化和事件?

  10. 10

    如何让Button更新php中的mysql数据库

  11. 11

    基于数据库中的问题的Javascript和PHP测验

  12. 12

    如何从PHP和JavaScript数据库中获取价格

  13. 13

    如何通过约会将数据库中的日期列出到JFXtras议程上:Google日历风格的事件列表

  14. 14

    通过Spring处理数据库事件

  15. 15

    在beforeunload事件中查询数据库

  16. 16

    在FullCalendar的日视图中拖放事件时,开始日期时间和结束日期时间未记录在数据库中

  17. 17

    通过javascript和jquery从数据库中检索数据

  18. 18

    完整的日历删除编辑描述以及数据库中的外部事件

  19. 19

    通过mysql数据库中的php更新数据

  20. 20

    Quilljs中的拖放事件

  21. 21

    如何通过在php mqsql中获取用户的输入来显示数据库中的数据?

  22. 22

    如何通过使用php文件从mysql数据库中检索问题和答案

  23. 23

    使用域事件更新数据库中的实体

  24. 24

    是否可以通过了解PHP中的用户名和密码(仅)来入侵我的数据库?

  25. 25

    如何使用php更新数据库中的数据

  26. 26

    如何通过在PHP中计算总和来显示数据库中具有最大计数的酒店名称?

  27. 27

    使用鼠标单击事件在netbeans中使用JTable更新mySQL数据库中的数据

  28. 28

    如何使用我在 javascript 中通过 php 获得的数据库中的数据?

  29. 29

    PHP从日历中的数据库添加事件

热门标签

归档