我正在使用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文件,并具有如下所示的插入语句。
<?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脚本将事件插入数据库?
我将不胜感激。
答案 0 :(得分:-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请求来查找和删除任何已创建事件的行。 我建议事件表结构遵循类似以下内容:
id, event_name, event_start, event_end, user_id
这样,当您编写删除行功能时,您将拥有删除适当记录所需的信息。
答案 1 :(得分:-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
});
稍微更改insert 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);
?>
此代码未经测试