Bonjour, Voici mon site internet : https://benarafabole.alwaysdata.net/listpost.php
Sur listpost.php, j'ai un buton que j'ai inséré qui fait que lorsqu'un utilisateur de mon site appuie dessus, le compteur s'incrémente. Ce n'est malheuresement pas le cas... J'ai beaucoup de mal avec javascript.
Voici une partie de monde listpost.php (d'ailleurs accessible en inspectant le code source mon site web):
// Requête pour récupérer les posts, le nombre de likes pour chaque post, et le pseudo de l'utilisateur qui a posté
$data_post = 'SELECT Post.*, Utilisateur.pseudo, COUNT(Likes.post_id) as likes_count FROM Post
INNER JOIN Utilisateur ON Post.user_id=Utilisateur.user_id
LEFT JOIN Likes ON Post.post_id = Likes.post_id
GROUP BY Post.post_id
ORDER BY date';
<div class="likes">
<?php echo $dbRow['likes_count'] . ' j\'aime'; ?>
<button class="like-button" data-post-id="<?php echo $dbRow['post_id']; ?>">J'aime</button>
</div>
</div>
<!-- Inclusion de la bibliothèque jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- Script pour incrémenter le nombre de j'aime -->
<script src="javascript/jaime.js"></script>
Mes tables :
DROP TABLE IF EXISTS Likes;
DROP TABLE IF EXISTS Post;
DROP TABLE IF EXISTS Utilisateur;
CREATE TABLE Utilisateur(
user_id INTEGER PRIMARY KEY AUTO_INCREMENT,
nom VARCHAR(20),
prenom VARCHAR(16),
pseudo VARCHAR(16),
mail VARCHAR(64) UNIQUE,
mdp VARCHAR(32),
admin INTEGER DEFAULT 0
);
CREATE TABLE Post (
post_id INTEGER PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(32),
message VARCHAR(500),
date DATE,
note INTEGER,
user_id INTEGER,
CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES Utilisateur(user_id)
);
CREATE TABLE Likes (
like_id INTEGER PRIMARY KEY AUTO_INCREMENT,
post_id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
FOREIGN KEY (post_id) REFERENCES Post(post_id),
FOREIGN KEY (user_id) REFERENCES Utilisateur(user_id)
);
mon code JS jaime.js :
$(document).ready(function() {
// Ajoute un événement "click" sur chaque bouton "J'aime"
$('.like-button').click(function() {
var postId = $(this).data('post-id');
var likesDiv = $(this).siblings('.likes');
// Envoie une requête AJAX pour incrémenter le nombre de likes
$.ajax({
type: 'POST',
url: 'increment_likes.php',
data: {post_id: postId},
success: function() {
// Met à jour l'affichage avec le nouveau nombre de likes
var likesCount = parseInt(likesDiv.text().split(' ')[0]) + 1;
likesDiv.html(likesCount + ' j\'aime');
}
});
});
});
mon code de like.php :
<?php
require_once('config.php');
session_start();
if(isset($_POST['post_id'])) {
$postId = $_POST['post_id'];
// Connexion à la BD
$dbLink = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME)
or die('Erreur de connexion au serveur : ' . mysqli_connect_error());
// Sélection de la base de données
mysqli_select_db($dbLink, DB_NAME)
or die('Erreur dans la sélection de la base : ' . mysqli_error($dbLink));
// Vérifie si l'utilisateur a déjà liké ce post
$query = "SELECT * FROM Likes WHERE post_id = $postId AND user_id = {$_SESSION['user_id']}";
$result = mysqli_query($dbLink, $query);
if(mysqli_num_rows($result) == 0) {
// Incrémente le nombre de likes dans la table Post
$query = "UPDATE Post SET likes = likes + 1 WHERE post_id = $postId";
mysqli_query($dbLink, $query);
// Ajoute une entrée dans la table Likes pour enregistrer que l'utilisateur a liké ce post
$query = "INSERT INTO Likes (post_id, user_id) VALUES ($postId, {$_SESSION['user_id']})";
mysqli_query($dbLink, $query);
}
}
?>
Merci pour votre aide.
Modifié par linab (25 Apr 2023 - 18:59)