создавать кнопку megusta как twitter

привет вопрос com я могу делать кнопку megusta, как это есть у этого Твиттера, это мой рукописный шрифт

<?php
$dbh = new PDO('mysql:host=remotemysql.com;dbname=7MedQZ36mR;charset=utf8mb4',"","");
$sql = $dbh->prepare("SELECT * FROM post ORDER BY id DESC");
$sql->execute();
while ($result = $sql->fetch(PDO::FETCH_ASSOC)) {
  $_SESSION['avatar'] = $result['avatar'];

  echo '<li class="rv b agz">
  <a href="'.$result['usuario'].'">  <img
      class="bos vb yb aff"
      src="img/avatar/'.$_SESSION['avatar'].'"></a>
    <div class="rw">
      <div class="bpb">
        <small class="acx axc">'.$result['time_date_post'].'</small>
        <h6><a href="'.$userid.'">'.$result['usuario'].'</a></h6>
      </div>

      <p>';
      $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
      $result['cuerpo'] = str_replace("\n", "<br/>",$result['cuerpo']);
  if(preg_match($reg_exUrl, $result['cuerpo'], $url)) {
    echo preg_replace($reg_exUrl, '<a id="link" href='.$url[0].'>'.$url[0].'</a>', $result['cuerpo']);
  }
  else {

    echo $result['cuerpo'];
  }

      echo '</p>';
      if ($result['image'] == "") {

      }else {
        echo '<div rel="shadowbox" class="boy" data-grid="images">
        <img style="display: inline-block;width: 468px;height: 269px!important;margin-bottom: 10px;margin-right: 0px;vertical-align: bottom;border-radius: 2%;border: 1px solid rgb(216, 216, 216);" data-action="zoom" src="'.$result['image'].'">
        </div>';

      }
      if ($result['video'] == ""){

      }else{
          echo '
          <div class="boy" data-grid="images">
             <!--VIDEO PLAYER-->
             <div class="embed-responsive embed-responsive-16by9">

             <iframe style="display: inline-block;margin-bottom: 10px;margin-right: 0px;vertical-align: bottom;border-radius: 2%;border: 1px solid #d8d8d8;" class="embed-responsive-item" src="'.$result['video'].'" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
          </div>
              <!--END VIDEO PLAYER-->
          </div>

          ';
      }
echo "<span><i class="fas fa-heart"></i></span>";
    echo "</div>
  </li>";
}
?>

и это моя таблица post в базе данных

CREATE TABLE `post` (
  `id` int(11) NOT NULL,
  `userID` varchar(2500) COLLATE utf8_swedish_ci NOT NULL,
  `usuario` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
  `cuerpo` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
  `avatar` varchar(2500) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `image` varchar(3500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `video` varchar(3500) COLLATE utf8_swedish_ci DEFAULT NULL,
  `time_date_post` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
  `mg_cont`int(11)NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci ROW_FORMAT=COMPACT;

довольно сейчас я прокомментирую им мою проблему, с которой я сталкиваюсь это, после того, как будет стараться делать и он был таким, как я способствую тому, чтобы это был автомобиль incrementable, я думал о том, чтобы использовать UPDATE, но также прорастал, что, если я использую update, уже должна бы быть стоимость внутри переменной "mg_cont", а не обновила бы этот или бросила бы в меня ошибку, а следовательно я остался без идей у какого-либо есть идея, чтобы улучшать мой код? ты подпираешь он мне понравился бы, что пользователь однажды дал megusta одинокую кнопку, позвольте ему снимать этот megusta и подсчет загрузил descuerdo этого единственного пользователя, который дал этот megusta ejemlo

usuario1 дай megusta post usuario2

таблица post> mg_cont> +1

но потом:

usuario1 сними Ваш megusta post пользователя

таблица post> mg_cont>-1

и ему дали возможность снова, чтобы вновь давать megusta

если они добавляют примеры, они помогли бы мне много

4
задан 07.08.2019, 17:19
1 ответ

я рекомендую тебе следующие изменения в твоей базе данных:

CREATE TABLE `post` (
  `id` int(11) NOT NULL PRIMARY KEY,
  `userID` int(11) NOT NULL,
  `cuerpo` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
  `avatar` varchar(2500) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `image` varchar(3500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `video` varchar(3500) COLLATE utf8_swedish_ci DEFAULT NULL,
  `time_date_post` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
  FOREIGN KEY(userID) references users(id),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci ROW_FORMAT=COMPACT;

CREATE TABLE `users` (
  `id` int(11) NOT NULL PRIMARY KEY,
  `usuario` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci ROW_FORMAT=COMPACT;

CREATE TABLE `me_gusta` (
  `userID` int(11) NOT NULL,
  `postID` int(11) NOT NULL,
        PRIMARY KEY(userID, postID),
        FOREIGN KEY(userID) references users(id) on delete cascade,
        FOREIGN KEY(postID) references post(id) on delete cascade
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci ROW_FORMAT=COMPACT;

Во-первых, доставать пользователи во внешней таблице (Не sГ©, если уже tenГ-схвати это, но в случае когда у меня есть это, я рекомендую тебе, что aГ±adas Фореинг Кеи в таблицу Пользователи с таблицы Posts, это он darГЎ целостность в базу данных и тебя permitirГЎ, что пользователь верит в несколько posts. С другой стороны, для темы их мне нравится

я рекомендую тебе создавать внешнюю таблицу, где каждый раз, когда пользователь нравится post, этот остался хранившимся в таблице "me_gusta", чтобы доставать, он они мне нравится post ты можешь делать это посредством следующего query:

SELECT COUNT(1) as total FROM me_gusta WHERE postID=<id del post>

Так что, если post не имеет "мне нравится" saldrГЎ 0. Если пользователь удаляет, он мне нравится, так как ты это удаляешь из таблицы с delele. AdemГЎs, тебе - aГ±adido delete on cascade в них он мне нравится для того, чтобы, если post удаляется, они были удалены, он они мне нравится присоединенные в Г©l. То же самое происходит с пользователями.

В конце концов тема, которой пользователь sГіlo сможет, дай ему мне нравится Гєnica раз контролируется помещая, как primary key idUser и idPost, как это первичный ключ, не могут повторяться и следовательно пользователь может голосовать за Гєnica раз.

Надеялся, что он служит тебе помощью, приветствие.

3
ответ дан 11.11.2019, 02:29