Le site Web sur lequel je travaille permet aux utilisateurs de poster plusieurs commentaires sur le site Web et chaque commentaire a un identifiant unique qui est auto_incremented dans la base de données. Ensuite, j'ai mis ces ID à une liste d'objets de commentaires. Dans mon code HTML, je récupère ces identifiants et crée un ensemble de boutons J'aime et N'aime pas (avec une boucle foreach) pour chaque objet de commentaire. Le problème que j'ai est quand un utilisateur clique sur un bouton similaire, le nom du bouton qui est également le même que le nom de son id (noms dynamiques) est censé être comparé avec l'id qui est dans la base de données. Mais cliquer sur les boutons ne change que les goûts pour l'un des commentaires affichés à l'écran. J'utilise actuellement des sessions pour stocker le tableau et envoyer ses valeurs à la classe DA mais je n'ai pas eu de succès.Php compare noms de boutons html avec des noms dans la base de données
Je ne sais pas comment envoyer et comparer correctement les noms avec les ID dans la base de données.
Le html:
<?php foreach ($comments->getComments() as $comment) : ?>
<!--The like button:-->
<form class="userActions" action="../Controller/index.php" method="post">
<input type="submit" name="<?php echo "comment_#" . $comment->getID() . "_Likes"; ?>" class="btnLike btnLikeStyle like" value="Like">
<input type="hidden" name="action" value="comment_like">
</form>
<!--Show number of likes on the page:-->
<div>
<!--display the likes number from the database-->
<label class="lblLikes"><?php echo htmlspecialchars($comment->getLikes()); ?></label>
</div>
<!--Dislike button:-->
<form class="userActions" action="../Controller/index.php" method="post">
<input type="submit" name="<?php echo "comment_#" . $comment->getID() . "_Likes"; ?>" class="btnDislike btnDislikeStyle dislike" value="Dislike">
<input type="hidden" name="action" value="comment_dislike">
</form>
<?php endforeach; ?>
Le contrôleur:
case 'comment_like':
$commentID = $comment->getID();
$comments = comments::addLike($theCommentID);
include('../View/home.php');
break;
case 'comment_dislike':
$commentID = $comment->getID();
$comments = comments::addDislike($theCommentID);
include('../View/home.php');
break;
Commentaires classe
function addLike($commentID) {
CommentDA::addCommentLike($commentID);
}
function addDislike($commentID) {
CommentDA::addCommentDislike($commentID);
}
La classe DA:
public static function addCommentLike($commentID) {
$db = self::getConnection();
$query = 'UPDATE comments
SET commentLikes = CommentLikes + 1
WHERE CommentID = :commentIDPlaceholder';
$statement = $db->prepare($query);
$statement->bindValue(':commentIDPlaceholder', $commentID);
try {
$statement->execute();
} catch (PDOException $e) {
$error_message = $e->getMessage();
include('database_error.php');
exit();
}
$statement->closeCursor();
}
public static function addCommentLike($commentID) {
$db = self::getConnection();
$query = 'UPDATE comments
SET commentLikes = CommentLikes - 1
WHERE CommentID = :commentIDPlaceholder';
$statement = $db->prepare($query);
$statement->bindValue(':commentIDPlaceholder', $commentID);
try {
$statement->execute();
} catch (PDOException $e) {
$error_message = $e->getMessage();
include('database_error.php');
exit();
}
$statement->closeCursor();
}