среда, 27 сентября 2017 г.

Соцсеть. Комментарии . Урок 18.

Комментарии.


Создадим в БД таблицу comments.
id int(11) primary AI unsigned
comment text
user_id int(11) unsigned
posted_at datetime
post_id int(11) unsigned

Создадим связи.
user_id с таблицей users колонкой id

Создадим связи.
post_id с таблицей posts колонкой id

Откроем index.php и создадим форму для комментариев.
<?php
include('./classes/DB.php');
include('./classes/Login.php');
include('./classes/Post.php');
include('./classes/Comment.php');
$showTimeline = False;
if(Login::isLoggedIn()) {
$userid = Login::isLoggedIn();
$showTimeline = True; // если пользователь залогинен, то показываем собщения
//echo 'Logged in';
echo Login::isLoggedIn()."<br />";
} else {
echo 'Not logged in';
}
// лайки
if (isset($_GET['postid'])) {
Post::likePost($_GET['postid'], $userid);
}
// комментарии
if (isset($_POST['comment'])) {
Comment::createComment($_POST['commentbody'], $_GET['postid'], $userid);
}

// отображаются посты всех, за кем следует пользователь с id=4
$followingposts = DB::query('SELECT posts.id, posts.body, posts.likes, users.`username` FROM users, posts, followers
WHERE posts.user_id = followers.user_id
AND users.id = posts.user_id
AND follower_id = 4
ORDER BY posts.likes DESC;');
//print_r($followingposts);
foreach($followingposts as $post) {
echo $post['body']." ~ ".$post['username'];
echo "<form action='index.php?postid=".$post['id']."' method='post'>";
if (!DB::query('SELECT post_id FROM post_likes WHERE post_id=:postid AND user_id=:userid', array(':postid'=>$post['id'], ':userid'=>$userid))) {
echo "<input type='submit' name='like' value='Like'/>";
} else {
echo "<input type='submit' name='unlike' value='Unlike'/>";
}
echo "<span>".$post['likes']." likes</span>
</form>
<form action='index.php?postid=".$post['id']."' method='post'>
<textarea name='commentbody' rows='3' cols='50'></textarea>
<input type='submit' name='comment' value='Comment'/>
</form>
<hr /><br />";
}
?>


Создадим новый класс Comment.php
<?php
class Comment {
public static function createComment($commentBody, $postId, $userId) {
// валидация формы
if (strlen($commentBody) > 160 || strlen($commentBody) < 1) {
die('Incorrect length!');
}

if (!DB::query('SELECT id FROM posts WHERE id=:postid', array(':postid'=>$postId))) {
echo 'Invalid post ID';
} else {
// если id поста есть, то вставляем комментрий в БД
DB::query('INSERT INTO comments VALUES (:id, :comment, :userid, NOW(), :postid)',
array(':id'=>null,':comment'=>$commentBody, ':userid'=>$userId, ':postid'=>$postId));
}
}
}
?>


Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html