Создание заметок и напоминаний на PHP
Одной из основных функций многих приложений и сервисов является возможность создания заметок и напоминаний. На PHP также можно создать подобную функциональность, используя объектно-ориентированный подход и базу данных.
В данной статье мы рассмотрим создание простого приложения для создания заметок и напоминаний с использованием PHP, MySQL и фреймворка Bootstrap.
Шаг 1: Создание базы данных
Первым шагом будет создание базы данных. Для этого откроем консоль MySQL и выполним следующую команду:
Далее создадим таблицы для заметок и напоминаний:
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(30) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(30) NOT NULL,
description TEXT NOT NULL,
date DATETIME NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Шаг 2: Создание классов для работы с базой данных Следующим шагом будет создание классов для работы с базой данных. Мы будем использовать PHP Data Objects (PDO) для соединения с базой данных и выполнения запросов. Для этого создадим файл db.php с следующим содержимым:
class DB private static $instance = null;
private function __construct() <>
public static function getInstance() if (!self::$instance) try self::$instance = new PDO(‘mysql:host=localhost;dbname=notes’, ‘root’, »);
self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
> catch(PDOException $e) echo ‘Connection failed: ‘.$e->getMessage();
>
>
return self::$instance;
>
>
Шаг 3: Создание классов для работы с заметками и напоминаниями Теперь создадим классы для работы с заметками и напоминаниями. Для этого создадим файлы note.php и reminder.php со следующим содержимым: note.php:
private $id;
private $title;
private $content;
private $created_at;
private $updated_at;
public function __construct($title, $content) $this->title = $title;
$this->content = $content;
>
public function getId() return $this->id;
>
public function getTitle() return $this->title;
>
public function setTitle($title) $this->title = $title;
>
public function getContent() return $this->content;
>
public function setContent($content) $this->content = $content;
>
public function getCreatedAt() return $this->created_at;
>
public function getUpdatedAt() return $this->updated_at;
>
public function save() $pdo = DB::getInstance();
try $stmt = $pdo->prepare(‘INSERT INTO notes (title, content) VALUES (?, ?)’);
$stmt->execute([$this->title, $this->content]);
$this->id = $pdo->lastInsertId();
> catch(PDOException $e) echo ‘Error: ‘.$e->getMessage();
>
>
public static function getById($id) $pdo = DB::getInstance();
try $stmt = $pdo->prepare(‘SELECT * FROM notes WHERE/> $stmt->execute([$id]);
$note = $stmt->fetch(PDO::FETCH_ASSOC);
if ($note) $newNote = new Note($note[‘title’], $note[‘content’]);
$newNote->id = $note[‘id’];
$newNote->created_at = $note[‘created_at’];
$newNote->updated_at = $note[‘updated_at’];
return $newNote;
> else return null;
>
> catch(PDOException $e) echo ‘Error: ‘.$e->getMessage();
>
>
public static function getAll() $pdo = DB::getInstance();
try $stmt = $pdo->prepare(‘SELECT * FROM notes’);
$stmt->execute();
$notes = [];
while ($note = $stmt->fetch(PDO::FETCH_ASSOC)) $newNote = new Note($note[‘title’], $note[‘content’]);
$newNote->id = $note[‘id’];
$newNote->created_at = $note[‘created_at’];
$newNote->updated_at = $note[‘updated_at’];
$notes[] = $newNote;
>
return $notes;
> catch(PDOException $e) echo ‘Error: ‘.$e->getMessage();
>
>
public function delete() $pdo = DB::getInstance();
try $stmt = $pdo->prepare(‘DELETE FROM notes WHERE/> $stmt->execute([$this->id]);
> catch(PDOException $e) echo ‘Error: ‘.$e->getMessage();
>
>
>
private $id;
private $title;
private $description;
private $date;
private $created_at;
private $updated_at;
public function __construct($title, $description, $date) $this->title = $title;
$this->description = $description;
$this->date = $date;
>
public function getId() return $this->id;
>
public function getTitle() return $this->title;
>
public function setTitle($title) $this->title = $title;
>
public function getDescription() return $this->description;
>
public function setDescription($description) $this->description = $description;
>
public function getDate() return $this->date;
>
public function setDate($date) $this->date = $date;
>
public function getCreatedAt() return $this->created_at;
>
public function getUpdatedAt() return $this->updated_at;
>
public function save() $pdo = DB::getInstance();
try $stmt = $pdo->prepare(‘INSERT INTO reminders (title, description, date) VALUES (?, ?, ?)’);
$stmt->execute([$this->title, $this->description, $this->date]);
$this->id = $pdo->lastInsertId();
> catch(PDOException $e) echo ‘Error: ‘.$e->getMessage();
>
>
public static function getById($id) $pdo = DB::getInstance();
try $stmt = $pdo->prepare(‘SELECT * FROM reminders WHERE/> $stmt->execute([$id]);
$reminder = $stmt->fetch(PDO::FETCH_ASSOC);
if ($reminder) $newReminder = new Reminder($reminder[‘title’], $reminder[‘description’], $reminder[‘date’]);
$newReminder->id = $reminder[‘id’];
$newReminder->created_at = $reminder[‘created_at’];
$newReminder->updated_at = $reminder[‘updated_at’];
return $newReminder;
> else return null;
>
> catch(PDOException $e) echo ‘Error: ‘.$e->getMessage();
>
>
public static function getAll() $pdo = DB::getInstance();
try $stmt = $pdo->prepare(‘SELECT * FROM reminders’);
$stmt->execute();
$reminders = [];
while ($reminder = $stmt->fetch(PDO::FETCH_ASSOC)) $newReminder = new Reminder($reminder[‘title’], $reminder[‘description’], $reminder[‘date’]);
$newReminder->id = $reminder[‘id’];
$newReminder->created_at = $reminder[‘created_at’];
$newReminder->updated_at = $reminder[‘updated_at’];
$reminders[] = $newReminder;
>
return $reminders;
> catch(PDOException $e) echo ‘Error: ‘.$e->getMessage();
>
>
public function delete() $pdo = DB::getInstance();
try $stmt = $pdo->prepare(‘DELETE FROM reminders WHERE/> $stmt->execute([$this->id]);
> catch(PDOException $e) echo ‘Error: ‘.$e->getMessage();
>
>
>
Шаг 4: Создание форм для добавления и просмотра заметок и напоминаний Теперь создадим формы для добавления и просмотра заметок и напоминаний. Для этого мы будем использовать фреймворк Bootstrap. Для добавления заметок используем следующую форму:
Для просмотра заметок будем использовать таблицу:
Для добавления напоминаний используем следующую форму:
Для просмотра напоминаний будем использовать таблицу:
Шаг 5: Создание скриптов для обработки форм Осталось только создать скрипты для обработки добавления и удаления заметок и напоминаний. note_create.php:
$title = $_POST[‘title’];
$content = $_POST[‘content’];
$note = new Note($title, $content);
$note->save();
header(‘Location: index.php’);
exit();
$note = Note::getById($id);
$note->delete();
header(‘Location: index.php’);
exit();
$title = $_POST[‘title’];
$description = $_POST[‘description’];
$date = $_POST[‘date’];
$reminder = new Reminder($title, $description, $date);
$reminder->save();
header(‘Location: index.php’);
exit();
$reminder = Reminder::getById($id);
$reminder->delete();
header(‘Location: index.php’);
exit();
Шаг 6: Создание страницы со списком заметок и напоминаний Для того чтобы отобразить список заметок и напоминаний, создадим файл index.php со следующим содержимым:
include ‘db.php’;
include ‘note.php’;
include ‘reminder.php’;
$notes = Note::getAll();
$reminders = Reminder::getAll();
?>
Заметки и напоминания
Заметки
Добавить заметку
Напоминания
Добавить напоминание