Заметки и напоминания

Создание заметок и напоминаний на 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. Для добавления заметок используем следующую форму:
Для просмотра заметок будем использовать таблицу:
getId() ?> getTitle() ?> getContent() ?> getCreatedAt() ?> getUpdatedAt() ?>
Для добавления напоминаний используем следующую форму:
Для просмотра напоминаний будем использовать таблицу:
getId() ?> getTitle() ?> getDescription() ?> getDate() ?> getCreatedAt() ?> getUpdatedAt() ?>
Шаг 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();
?>



Заметки и напоминания

Заметки

Добавить заметку

Напоминания

Добавить напоминание


Создание заметок и напоминаний на PHP – это достаточно простая задача, которую можно решить за несколько часов. В данной статье мы рассмотрели базовый пример, который может быть доработан и улучшен по мере необходимости.

Базовый код для этого примера можно найти на GitHub по ссылке: https://github.com/alexeysergeev/notes.

Желаю вам успехов в разработке своих приложений на PHP!

Похожие записи:

Источник

Пишем простой сайт заметок на PHP.

Есть много книг по PHP, SQL, HTML и т.д. Но читать их так скучно. Намного интересней изучать Web разработку сразу на примерах. В этой статье мы напишем достаточно простой сайт на PHP. Что то типа заметок или списка дел. Для хранения данных будем использовать SQL. Немного познакомиться с стилями CSS.

Подготовка.

Первое что вам потребуется : локальный веб-сервер , база данных и какой нибудь редактор кода (что бы упростить процес написания). Под винду я использовал связку MAMP и Visual Studio Code. MAMP — это бесплатная локальная серверная среда, которая может быть установлена под macOS и Windows всего за несколько кликов.

Если вы будете использовать MAMP домашняя папка проекта будет C:\MAMP\htdocs . Заменим файл index.html на стандартную рыбу и сразу сделаем расширение php ( index.php ). В VS Code можно быстро сделать рыбу командой html:5 . Так же создадим папки css, img, js. На этом с приготовления закончили , каркас проекта сделали.

Давайте подключим файл стилей :

А так будем использовать готовый набор с bootstrapcdn.com :

Bootstrap (также известен как Twitter Bootstrap) — свободный набор инструментов для создания сайтов и веб-приложений. Включает в себя HTML- и CSS-шаблоны оформления для типографики, веб-форм, кнопок, меток, блоков навигации и прочих компонентов веб-интерфейса, включая JavaScript-расширения.

 

Список дел

#Создаем форму, метод отправки данных POST в add.php
# Поле ввода # Кнопка

Добавим наши стили в файл style. Сейчас везде популярна темная тема, чем мы хуже :

# Зададим для тега Body цвет бэкграунда body .container < margin-top: 50px; width: 50%!important; ># Для формы: цвет бэкграунда,цвет обводки, толщина и т.д form < background: #232324; border: 3px solid #363636; border-radius: 10px; padding: 20px 10px; >#list --> #list < width: 60%; float: left; # Обтекание по правому краю margin-right: 5%; # Отступ справа ># Цвет заголовка h1

База данных, php и т.д.

Пора нам создать базу данных где мы будем хранить наши заметки. Я воспользовался phpMyAdmin , назовем базу скажем mytime . Так же нам нужно создать таблицу mydata с двумя полями : id — где мы будем указывать уникальный номер записи, data — где будет хранится сама запись.

Начиная с версии 5.1 в PHP существует удобный способ работы с базами данных — PHP Data Objects. Этот класс, сокращенно именуемый PDO. Будем пользоваться им для работы с базой данных. Создадим файл confdb.php где будем совершать подключение к базе.

Создаем файл add.php где будем добавлять заметки из форы :

 require 'confdb.php' # Подключаем файл базы данных $sql = 'INSERT INTO mydata(data) VALUES(:data)'; # Создаем запрос SQL $query = $pdo->prepare($sql); # Подготавливаем к отправке $query->execute(['data' => $data]); # Отправляем запрос подставляя значение переменной header('Location: /'); ?>

Значение id мы не передаем, у нас оно само вырастает при каждом добавлении в поле data. Теперь на главную станицу добавим отображение данных из базы.

    ‘; # Получаем данные из таблицы $query = $pdo->query(‘SELECT * FROM `mydata`’); # В цикле выводим только поле data в список. while($tmp = $query->fetch(PDO::FETCH_OBJ)) < echo '
  • ‘.$tmp->data.’‘; > echo ‘

Удаление записей, немного красоты в списках.

Последний штрих, добавим кнопку удаления записи и создадим скрип самого удаления. Начнем с кнопки :

То есть кнопка по факту будет ссылкой которая отправляет GET запрос в del.php с id записи. Давайте создадим файл del.php :

prepare($sql); $query->execute([$id]); header('Location: /');

Ну а теперь немного украсим наш список и кнопку удаления :

Ошибка в тексте? Выделите её и нажмите «Ctrl + Enter»

Источник

Читайте также:  Php access request header
Оцените статью