Создание постов.
Сначала создадим таблицу
в БД.
posts
id int(11) unsigned primary AI
body varchar(160)
posted_ar datetime
user_id int(11) unsigned
likes int(11) unsigned
Создадим связь user_id с
таблицей users.
Идем на страницу
profile и создаем
форму.
Форма
доступна на странице профиля, например,
http://newsocial.loc/profile.php?username=Anna
Открываем
profile.php
<?php
include('./classes/DB.php');
include('./classes/Login.php');
$username = '';
$isFollowing = False;
$verified = False; // верифицирован
ли пользователь
if (isset($_GET['username'])) {
if (DB::query('SELECT username FROM users WHERE
username=:username', array(':username'=>$_GET['username']))) {
$username = DB::query('SELECT username FROM
users WHERE username=:username',
array(':username'=>$_GET['username']))[0]['username'];
$userid = DB::query('SELECT id FROM users
WHERE username=:username',
array('username'=>$_GET['username']))[0]['id'];
$verified = DB::query('SELECT verified FROM
users WHERE username=:username',
array(':username'=>$_GET['username']))[0]['verified'];
$followerid = Login::isLoggedin(); //
получаем id фолловера
// проверяем была ли нажата
кнопка follow
if (isset($_POST['follow'])) {
// когда не можешь быть
фолловером самого себя
if ($userid != $followerid) {
if (!DB::query('SELECT follower_id
FROM followers WHERE user_id=:userid AND follower_id=:followerid',
array(':userid'=>$userid, ':followerid'=>$followerid))) {
// пользователь с
id=6 нажимает follow и пользователь становится
верефицированным
if ($followerid == 6) {
DB::query('UPDATE users SET
verified=1 WHERE id=:userid', array(':userid'=>$userid));
}
DB::query('INSERT INTO followers
VALUES (:id, :userid, :followerid)',
array(':id'=>null,':userid'=>$userid,
':followerid'=>$followerid));
//DB::query('INSERT INTO
followers VALUES (\'\', :userid, :followerid)',
array(':userid'=>$userid, ':followerid'=>$followerid));
} else {
echo 'Already following!';
}
$isFollowing = True;
}
}
// проверяем была ли нажата
кнопка unfollow
if (isset($_POST['unfollow'])) {
// когда не можешь быть
фолловером самого себя
if ($userid != $followerid) {
if (DB::query('SELECT follower_id
FROM followers WHERE user_id=:userid AND follower_id=:followerid',
array(':userid'=>$userid, ':followerid'=>$followerid))) {
// пользователь с
id=6 нажимает unfollow и пользователь становится
неверефицированным
if ($followerid == 6) {
DB::query('UPDATE users SET
verified=0 WHERE id=:userid', array(':userid'=>$userid));
}
DB::query('DELETE FROM followers
WHERE user_id=:userid AND follower_id=:followerid',
array(':userid'=>$userid, ':followerid'=>$followerid));
}
$isFollowing = False;
}
}
if (DB::query('SELECT follower_id FROM
followers WHERE user_id=:userid AND follower_id=:followerid',
array(':userid'=>$userid, ':followerid'=>$followerid))) {
$isFollowing = True;
}
// Отправка формы
if (isset($_POST['post'])) {
$postbody = $_POST['postbody'];
$userid = Login::isLoggedIn();
// валидация формы
if (strlen($postbody) > 160 ||
strlen($postbody) < 1) {
die('Incorrect length!');
}
// 0 - кол-во лайков по
умолчанию
DB::query('INSERT INTO posts VALUES
(:id, :postbody, NOW(), :userid, 0)', array(':id'=>null,
':postbody'=>$postbody, ':userid'=>$userid));
}
// посты
$dbposts = DB::query('SELECT * FROM posts
WHERE user_id=:userid ORDER BY id DESC', array(':userid'=>$userid));
$posts = "";
foreach($dbposts as $p) {
//print_r($p);
$posts .= $p['body']."<hr /><br
/>";
}
} else {
die('User not found!');
}
}
?>
<h1><?php
echo $username; ?>'s' Profile<?php if ($verified) { echo ' -
Verified'; } ?> </h1>
<form
action="profile.php?username=<?php echo $username; ?>"
method="post">
<?php
// кнопка follow не будет
отображаться для своего собственного
профайла
if ($userid != $followerid) {
if ($isFollowing) {
echo '<input type="submit"
name="unfollow" value="Unfollow"/>';
} else {
echo '<input type="submit"
name="follow" value="Follow"/>';
}
}
?>
</form>
<form
action="profile.php?username=<?php echo $username; ?>"
method="post">
<textarea name="postbody" cols="80"
rows="8"></textarea> <br />
<input type="submit" name="post"
value="Post"/>
</form>
<div
class="posts">
<?php echo $posts; ?>
</div>
Комментариев нет:
Отправить комментарий