Récupérer la valeur d'une variable issue d'une boucle while

Signaler
-
Bonjour,

J'espère que vous allez bien. J'ai besoin de faire un isset d'une variable générée via une boucle while - et je fais un isset en dehors de la boucle while.

Au juste, voici l'idée du code:

1) C'est une sorte de mini réseau social avec des messages et la possibilité de liker un message.

2) Les messages sont générés via une boucle while (et actualiser via de l'ajax)

3) Lors de l'actualisation de la page les nouveaux messages s'affichent tout comme le nouveau nb de likes (cette partie sur le nb de likes, je ne l'ai pas mise dans mon code ci-dessous pour vous montrer uniquement d'où vient mon pb).

4) Si une pers aime un message elle appuie sur le bouton like (bouton dont l'ID est généré via la boucle while, et dont l'ID = ID du message), et via un ISSET je récupère l'ID du message pour updater ma base d'un nouveau like.

Mon pb se situe au point 4. Si je laisse l'ISSET au sein de la boucle WHILE je n'ai aucun pb pour récupérer l'ID du message. Par contre pour l'actualisation ça pose pb car à chaque fois qu'une pers like un message toute la page s'actualise comme la partie du code qui augmente le nb de likes de ma page est dans ma boucle WHILE. Au juste, j'ai besoin de sortir la partie du code du WHILE, où j'augmente le nb de likes.

Le pb est que quand le ISSET est dans ma boucle, l'ID du bouton = ID du message est bien individualisé. Mais quand je le sors, l'ID du bouton est égal à tous les ID des messages de la boucle. Donc mon code ne marche plus.

Je vous ai simplifié mon code pour insister sur mon pb = ISSET d'une variable issue d'une boucle WHILE en dehors de la boucle.

Dans ce code, à la fin l'echo = tous les ID des messages générés par la boucle.
Hors, j'aimerais que lorsque le bouton like est cliqué, que seul l'ID du message cliqué soit ISSET.

Je ne sais pas si clair ? Si oui, pouvez-vous m'aider ?

Voici mon code :

$conn = new PDO("mysql:host=localhost;dbname=likes;charset=utf8", "root", "");

$resultats = $conn->prepare("SELECT * FROM message ORDER BY date DESC LIMIT 50");
$resultats->execute();

while (($messages = $resultats->fetch())!== false){ 

?>

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
    <button type="submit" name="<?php echo $messages['idmessage']; ?>"
>Likes</button></form>

<?php
}
?> 

<?php

if(isset($_POST[$messages['idmessage']])){
echo $messages['idmessage'];
}

?> 

C'est vraiment simplifié, mais si qqn sait comment ne faire apparaître dans l'echo que l'id du message liké (et non pas tous les id des messages générés par le while) je suis preneuse :)
Merci :)