Создание постов.
Сначала создадим таблицу
в БД.
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>
 
Комментариев нет:
Отправить комментарий