привет вопрос 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
если они добавляют примеры, они помогли бы мне много
я рекомендую тебе следующие изменения в твоей базе данных:
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 раз.
Надеялся, что он служит тебе помощью, приветствие.