PHP 是一种广泛使用的开源脚本语言,特别适合于Web开发,并且可以嵌入HTML。
MySQL 是一个关系型数据库管理系统,MySQL采用了双授权政策,可以将数据保存在不同的表中,从而增加数据库的速度和灵活性,具有体积小、速度快、总体拥有成本低的特点。
留言板点赞 功能允许用户对留言板上的特定留言表示赞同或喜欢。
首先,设计一个简单的数据库表来存储留言和点赞信息。
CREATE TABLE messages (
id INT AUTO_INCREMENT PRIMARY KEY,
content TEXT NOT NULL,
user_id INT NOT NULL
);
CREATE TABLE likes (
id INT AUTO_INCREMENT PRIMARY KEY,
message_id INT NOT NULL,
user_id INT NOT NULL,
liked_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (message_id) REFERENCES messages(id)
);
<?php
// 假设已连接到数据库
$messages = $db->query('SELECT * FROM messages')->fetchAll();
foreach ($messages as $message) {
echo "<p>{$message['content']}</p>";
echo "<button onclick='likeMessage({$message['id']})'>点赞 ({$getLikesCount[$message['id']]})</button>";
}
?>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['message_id']) && isset($_SESSION['user_id'])) {
$messageId = $_POST['message_id'];
$userId = $_SESSION['user_id'];
// 检查用户是否已经点过赞
$alreadyLiked = $db->query("SELECT * FROM likes WHERE message_id = $messageId AND user_id = $userId")->fetch();
if (!$alreadyLiked) {
// 插入新的点赞记录
$db->exec("INSERT INTO likes (message_id, user_id) VALUES ($messageId, $userId)");
} else {
// 用户取消点赞
$db->exec("DELETE FROM likes WHERE message_id = $messageId AND user_id = $userId");
}
header('Content-Type: application/json');
echo json_encode(['success' => true]);
exit;
}
?>
function likeMessage(messageId) {
fetch('like.php', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: `message_id=${messageId}`
})
.then(response => response.json())
.then(data => {
if (data.success) {
// 更新点赞数显示
const likeButton = document.querySelector(`button[onclick="likeMessage(${messageId})"]`);
const likeCount = parseInt(likeButton.innerText.split(' ')[1]);
likeButton.innerText = `点赞 (${likeCount + 1})`;
}
});
}
通过上述设计和实现,可以构建一个基本的留言板点赞功能。在实际应用中,还需考虑安全性、错误处理和用户体验优化等方面。
领取专属 10元无门槛券
手把手带您无忧上云