如何连接并将结果存储到表中?

问题描述 投票:0回答:2

我正在使用FullCalendar.io,并允许用户选择一个事件,并成功发布到网页。下面是日历逻辑的代码。

document.addEventListener('DOMContentLoaded', function() {
  var calendarEl = document.getElementById('calendar');

  var calendar = new FullCalendar.Calendar(calendarEl, {
    plugins: [ 'dayGrid', 'interaction' ],

    //Behavior of calendar object
    selectable: true,
    selectMirror: true,
    unselectAuto: true,
    eventLimit: true,

    header:
    {
      left: 'prevYear,prev',
      center: 'title',
      right: 'next,nextYear'
    },

    footer:
    {
      center: 'today'
    },

    //Logic for clicking on a date
    dateClick: function(event_click)
    {
      var event_name = prompt("Enter a title for this event", "New Event");

      //Add event to the calendar
      calendar.addEvent({

        title: event_name,
        start: event_click.date,
        allDay: true
      });
    },

    //Logic for clicking on an event
    eventClick: function(event_click)
    {
      alert(event_click.event.title + ' event removed'),
      //Remove event from calendar
      event_click.remove(),
      calendar.render()
    }
  });

  calendar.render();
});

我还有一个连接到数据库的php文件,并有一个如下所示的insert语句。

<?php

$server_name = "localhost";
$username = 'root';
$password = 'root'
$db_name = 'testCalendardb';
$table_name = 'Event';

//Opens connection to the db
function openConn()
{
  try {
    $conn = new PDO("mysql:host=$server_name;dbname=$db_name", $username, $password);

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected to DB";

    return $conn;
  } catch(PDOException $exception) {
    echo "Connection Failed: Error: ".$exception->getMessage();
  }
}

function insert($date, $name) {
  try {
    $conn = openConn();

    $sql = "INSERT INTO $table_name(date, name) VALUES (:date, :name)";

    $sql->bindParam(':date', $date);
    $sql->bindParam(':name', $name);

    $conn->exec($sql);
    echo "New Record Added";
  } catch(PDOException $exception) {
    echo $sql."<br>".$exception->getMessage();
  }
} 

//Closes the door
function closeConn($conn)
{
  $conn = null;
}

?>

我的问题是我很难将事件存储在mysql数据库中。我在网上看了很多教程,并且有基础进行Web开发。我觉得我错过了将数据实际发送到数据库的步骤,这是我在任何教程中都找不到的。我使用的教程已经过时,并不适用于最新版本的mysql / php / js。

总结一下,我如何使用我的php脚本将事件插入我的数据库?

我将不胜感激任何帮助。

javascript php mysql fullcalendar
2个回答
-1
投票

听起来你想要创建一个AJAX脚本来将数据发送到你的php文件。就像是:

//jquery required for this approach
$.ajax({
  url: 'add_events.php',
  data: 'event_name='+ title+'&event_date='+ start2 +'&event_end='+ end2,                                                    
  type: "POST"
});

然后在你的php文件中你可以添加这个来获取存储在php变量中的数据:

$event_date = $_GET['event_date'];
$event_name = $_GET['event_name'];

然后你的功能变成了:

function insert() {
      try {
        $table_name = 'Event';
        $conn = openConn();

        $sql = "INSERT INTO $table_name(date, name) VALUES ($event_date, $event_name)";

        $conn->execute($sql);
        echo "New Record Added";
      } catch(PDOException $exception) {
        echo $sql."<br>".$exception->getMessage();
      }
}
insert();

希望这有助于或帮助您走上正轨。

*编辑以包括函数调用和地址错误以及Dharman指出的其他问题。

**另外查看javascript,看起来你也有删除事件的代码。您还需要添加ajax请求以查找并删除任何已创建事件的行。我建议让Event表结构遵循以下内容:

id, event_name, event_start, event_end, user_id

这样,当您编写删除行功能时,您将获得删除相应记录所需的信息。


-1
投票

您需要在js文件中的dataClick函数末尾添加:

//AJAX function to comunicate to PHP script
$.ajax({
    type: "POST",
    url: your_url_php_script.php,
    data: {name:event_name, date: event_click.date},
    success: function (data) {
        console.log(data);
    },
   dataType: json
});

改变一点插入php功能:

function insert($date, $name) {
  try {
    $conn = openConn();

    $sql = "INSERT INTO $table_name(date, name) VALUES (:date, :name)";

    $sql->bindParam(':date', $date);
    $sql->bindParam(':name', $name);

    $conn->exec($sql);

    return  "New Record Added";

  } catch(PDOException $exception) {
    return  $sql."<br>".$exception->getMessage();
  }
} 

而且你还需要将它添加到php脚本的末尾:

....

//Closes the door
function closeConn($conn)
{
  $conn = null;
}

$name= $_POST['name'];
$date  = $_POST['date'];

$query_result = insert($date, $name);

$result = array('name' => $_POST['name'], 'date' => $_POST['date'], 'message' =>$query_result);

//Always Return Encode the array into JSON for debuging
echo json_encode($result);

?>

此代码未经过测试

© www.soinside.com 2019 - 2024. All rights reserved.