-- phpMyAdmin SQL Dump
-- version 4.6.5.2
-- https://www.phpmyadmin.net/
--
-- Хост: 127.0.0.1:3306
-- Время создания: Авг 14 2017 г., 13:23
-- Версия сервера: 5.5.53
-- Версия PHP: 7.1.0
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- База данных: `anecdotes_site`
--
-- --------------------------------------------------------
--
-- Структура таблицы `anecdotes`
--
CREATE TABLE `anecdotes` (
`id` int(11) NOT NULL,
`category_id` int(11) NOT NULL,
`status` enum('hidden','visible','delete') NOT NULL DEFAULT 'hidden',
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`text` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `anecdotes`
--
INSERT INTO `anecdotes` (`id`, `category_id`, `status`, `date`, `text`) VALUES
(1, 1, 'visible', '2017-08-13 18:25:16', '- Дорогой, ты математику любишь больше, чем меня! \r\n- Конечно нет, как ты могла такое подумать! \r\n- Докажи! \r\n- Пусть А - множество любимых объектов...'),
(2, 2, 'visible', '2017-08-13 18:25:25', 'В одном морском университете работает преподаватель, который известен всему вузу тем, что никогда не ставит на экзамене двойки. Вот один студент поспорил с друзьями на ящик водки, что таки получит от него неуд. Вопрос на экзамене достался этому студенту донельзя простой: «Поведение на судне в экстремальной ситуации». Преподаватель, обращаясь к студенту: \r\n— Ну-с? \r\n— Не знаю! — отвечает студент. \r\n— Если, допустим, на судне возник пожар, что вы будете делать? \r\n— Ничего! \r\n— Правильно! Главное — не паниковать! Идите, четыре!'),
(3, 1, 'visible', '2017-08-14 06:41:01', 'Каждому из нас с детства хорошо известно, что самый лучший источник бесперебойного питания — бабушка ...'),
(4, 1, 'visible', '2017-08-14 08:44:40', 'Вышла я на кухню, вижу — моя мама с моим мужем сидит. Муж плачет! А моя мама ему: \"Терпи, сынок! Я ее 22 года терпела, так я одна была, а ты не один сынок — теща с тобой! Вместе, может, еще лет 20 выдержим! \"'),
(5, 1, 'visible', '2017-08-14 08:52:08', '— Я слышал, ты опять женился ? — Да, на Таньке. — Так это же сестра твоей первой жены! — Да, просто я к теще уже как-то привык.'),
(6, 1, 'visible', '2017-08-14 08:52:08', 'Собирается мужик на рыбалку с ночевкой, жена спрашивает: — С кем из друзей поедешь-то? — Один поеду, порыбачить хочу...'),
(7, 1, 'visible', '2017-08-14 08:54:31', 'Дочка, ты замуж выходить собираешься? — Кто? Я? Да вы что?! У меня хомяк жил — сдох, а муж — это такая ответственность! Не-е-е!...'),
(8, 1, 'visible', '2017-08-14 08:54:31', 'Опрос радиослушателей дал неожиданные результаты. На первый же вопрос \"Что вы в настоящий момент слушаете? \" 98% опрошенных мужчин ответили: \"Жену\".'),
(9, 1, 'visible', '2017-08-14 08:56:19', '– Ты должен понять, – говорила она, – женщина и ее ребенок это одно целое. Ты не можешь просто ухаживать за женщиной, игнорируя ее ребенка. В моей голове что-то щелкнуло. – А ведь ты права, – сказал я. – Приходи сегодня со своей дочкой ко мне. Моя мама напечет блинов, сварит прекрасного мятного чаю. – Постой, ты живешь с мамой? – Ну, да. Женщина и ее ребенок это одно целое. Алло? В трубке были короткие гудки...'),
(10, 1, 'visible', '2017-08-14 08:56:19', '— Витя, возьми ребенка на футбол! — Зачем? Он еще маленький. — Ну а че он орет просто так!'),
(11, 1, 'visible', '2017-08-14 08:59:26', 'На слова жены \"Все, я от тебя ухожу!\" молодой муж начнет просить прощения, опытный молча переждет истерику, а бывалый грустно скажет: \"Ты только обещаешь!\"'),
(12, 1, 'visible', '2017-08-14 08:59:26', '— Что хуже, когда жена не умеет готовить, или не любит готовить? — Когда любит, но не умеет.');
-- --------------------------------------------------------
--
-- Структура таблицы `categories`
--
CREATE TABLE `categories` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `categories`
--
INSERT INTO `categories` (`id`, `name`) VALUES
(1, 'Семейные'),
(2, 'Студенты');
-- --------------------------------------------------------
--
-- Структура таблицы `users`
--
CREATE TABLE `users` (
`id` int(11) NOT NULL,
`login` varchar(32) NOT NULL,
`password` varchar(32) NOT NULL,
`is_admin` tinyint(4) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `users`
--
INSERT INTO `users` (`id`, `login`, `password`, `is_admin`) VALUES
(1, 'admin', 'admin', 1);
--
-- Индексы сохранённых таблиц
--
--
-- Индексы таблицы `anecdotes`
--
ALTER TABLE `anecdotes`
ADD PRIMARY KEY (`id`);
--
-- Индексы таблицы `categories`
--
ALTER TABLE `categories`
ADD PRIMARY KEY (`id`);
--
-- Индексы таблицы `users`
--
ALTER TABLE `users`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT для сохранённых таблиц
--
--
-- AUTO_INCREMENT для таблицы `anecdotes`
--
ALTER TABLE `anecdotes`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;
--
-- AUTO_INCREMENT для таблицы `categories`
--
ALTER TABLE `categories`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT для таблицы `users`
--
ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
<?php
include('header.php');
include('Anecdotes.php');
$anecdote = new Anecdotes();
echo "<div class='content'><div class='container'>";
$count = $anecdote->getCount($_GET['category']);
$allAnecdotes = $count[0]['count(id)'];
$needPages = ceil($allAnecdotes / 10) - 1;
if ( $allAnecdotes > 10 ) {
$page = $_GET['page'];
$perPage = $page * 10 + 10;
$data = $anecdote->getLimitAnecdotesCategory($_GET['category'], $page*10, $perPage);
if ( $page > 0 ) {
?>
<a href="all.php?category=<?=$data[0]['category_id']?>&page=<?=$page-1?>" class="left">Prev</a>
<?php
}
if ( $page != $needPages ) {
?>
<a href="all.php?category=<?=$data[0]['category_id']?>&page=<?=$page+1?>" class="right">Next</a>
<?php
}
} else {
$data = $anecdote->getAllAnecdotesCategory($_GET['category']);
}
$category_name = $category->getCategoryName($data[0]['category_id']);
echo "<h2>$category_name</h2>";
foreach ($data as $key => $value) {
$text = $value['text'];
echo "<div class='anecdote'>";
echo "<p>$text</p>";
echo "</div>";
}
echo "</div></div>";
?>
<?php
class Anecdotes extends Database
{
public function __construct() {
$this->tableName = 'anecdotes';
parent::__construct();
}
public function getCount($category) {
$stmt = $this->pdo->query("SELECT count(id) FROM $this->tableName WHERE status='visible' AND category_id=$category");
return $stmt->fetchAll();
}
public function getAllLastAnecdotes() {
$stmt = $this->pdo->query("SELECT * FROM $this->tableName WHERE status='visible' ORDER BY date DESC LIMIT 0, 5");
return $stmt->fetchAll();
}
public function getAllAnecdotesCategory($category) {
$stmt = $this->pdo->query("SELECT * FROM $this->tableName WHERE status='visible' AND category_id=$category ORDER BY date DESC");
return $stmt->fetchAll();
}
public function getLimitAnecdotesCategory($category, $start, $end) {
$stmt = $this->pdo->query("SELECT * FROM $this->tableName WHERE status='visible' AND category_id=$category ORDER BY date DESC LIMIT $start, $end");
return $stmt->fetchAll();
}
public function deleteAnecdotes() {
$this->pdo->query("DELETE FROM $this->tableName WHERE status='delete'");
}
}
?>
<?php
class Database
{
// CONFIGS DEFAULT
private $host = 'localhost';
private $db = 'anecdotes_site';
private $user = 'root';
private $password = '';
private $charset = 'utf8';
private $options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
// CONFIGS OTHER
private $dsn;
public $pdo;
public $tableName;
// METHODS
public function __construct() {
$this->dsn = "mysql:host=$this->host;dbname=$this->db;charset=$this->charset";
$this->pdo = new PDO($this->dsn, $this->user, $this->password, $this->options);
}
public function getDsn() {
return $this->dsn;
}
public function getAll() {
$stmt = $this->pdo->query("SELECT * FROM $this->tableName");
return $stmt->fetchAll();
}
public function getOne($id) {
$stmt = $this->pdo->query("SELECT * FROM $this->tableName WHERE id = $id");
return $stmt->fetchAll();
}
public function deleteAll() {
$this->pdo->query("DELETE FROM $this->tableName");
}
public function deleteOne($id) {
$this->pdo->query("DELETE FROM $this->tableName WHERE id = $id");
}
public function updateOne($fieldArray, $fieldValue) {
$strField = implode(" = ? ,",$fieldArray)." = ?";
$sql = "UPDATE $this->tableName SET $strField WHERE id = ?";
$stmt = $this->pdo->prepare($sql);
$stmt->execute($fieldValue);
return $stmt;
}
public function insert($fieldArray, $fieldValue) {
$strField = implode(" = ? ,",$fieldArray)." = ?";
$sql = "INSERT INTO $this->tableName SET $strField";
$stmt = $this->pdo->prepare($sql);
$stmt->execute($fieldValue);
return $stmt;
}
}
?>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<?php
echo "<header><div class='container'><ul><li><a href='index.php'>Главная</a></li><li><a href='login.php'>Авторизация</a></li>";
include('Database.php');
include('Categories.php');
$category = new Categories();
$data = $category->getAll();
foreach ($data as $key => $value) {
$id = $value['id'];
$name = $value['name'];
?>
<li><a href="all.php?category=<?=$id?>&page=0"><?=$name?></a></li>
<?php
}
echo "</ul></div></header>";
?>
<?php
include('header.php');
echo "<div class='content'><div class='container'>";
echo "<h1>Добро пожаловать на сайт анекдотов</h1>";
include('Anecdotes.php');
$anecdote = new Anecdotes();
$data = $anecdote->getAllLastAnecdotes();
foreach ($data as $key => $value) {
$category_name = $category->getCategoryName($value['category_id']);
$text = $value['text'];
echo "<div class='anecdote'>";
?>
<h4><a href="all.php?category=<?=$value['category_id']?>&page=0"><?=$category_name?></a></h4>
<?php
echo "<p>$text</p>";
echo "</div>";
}
echo "</div></div>";
?>
<?php
class Users extends Database
{
public function __construct() {
$this->tableName = 'users';
parent::__construct();
}
}
?>