Bonjour tout le monde, c'est la première fois que je me permet de demander de l'aide sur un forum car la situation est devenue urgente ! Urgente pour ma santé mentale car je suis en train de devenir fou.

(Je tiens à préciser que je suis ultra débutant et que je ne suis pas le plus malin de la bande.)

J'ai un souci avec l'envoie de formulaire fait en jquery. J'ai voulu créé un bouton "like" pour des commentaires.
Je voulais surtout, que la page ne se refresh pas en cliquant sur le like et que le compteur se mette à jour tout seul comme un grand.
Mettre en relation avec la bdd, faire la requete en php, faire en sorte que la page ne se recharge pas et que le compteur s'actualise, Okay.
Le problème est que j'ai plusieurs commentaires qui sont dans une boucle while. J'ai également le "form" du "like" dans la boucle.
Si j'ai plusieurs commentaires et bah la fonction Jquery on('click') fonctionne bien, mais pour le premier commentaire seulement. Si je clique sur les autres, ça intéragit également qu'avec le premier commentaire.

A contrario, si je n'ai qu'un commentaire, tout fonctionne bien et le soleil brille dans mon coeur.

Comment faire pour que la fontction décrite dessous fonctionne pour chaque commentaires ?
Dois-je faire un each() ? Dois-je mettre mon code java dans la boucle while ? Dois-je prier le php et le javascript pour implorer leur indulgences ? Dois-je tout abondonner pour aller vendre des Churros au bord du lac ?

Je tiens à préciser que j'ai regardé le tuto de Grafikart sur Like / Dislike pour créer la base et l'adapter à mon code.

Code Java :

(function($) {
        var $avisCommentUp = $('.formCommentUp');
        $('.formCommentUp').on('click', function(e) {
            e.preventDefault();

            $.post('avisComment.php', {
                FKS: $avisCommentUp.data('question'),
                FKC: $avisCommentUp.data('comment'),
                avis: $avisCommentUp.data('avis'),
                current_user: $avisCommentUp.data('current_user')

            }).done(function(data, textStatus, jqxhr) {
                $('.avisComment_countB').text(data.NumberAvisUpComment);

//NumberAvisUpComment vient du fichier avisComment.php et retourne le nombre de like après avoir liké.

            }).fail(function(jqxhr, textStatus, errorThrown) {

            })

        });

        $('.avisComment_countB').replaceWith(data.NumberAvisUpComment);
    })

Code html/php :

<form class="avis avisRight formCommentUp" data-question="<?= $idQuestion ?>" data-comment="<?= $idComment ?>" data-avis="1" data-current_user="<?= $idCompteConnecté ?>" method="POST">
        <button type="submit" id="avisCommentUp">
            <svg</svg>
        </button>
                <p class="avisComment_countB<?= $idComment ?>"><?= $NumberAvisUpComment; ?></p>
</form>
// $NumberAvisUpComment est un variable qui contient le nombre de like du commentaire, la valeur se fait remplacer grâce à replaceWith().

Si vous avez vu le tuto de Grafikart, vous remarquerez que je l'ai copié comme un copieur, sauf que:

  • J'ai changé les id par des classes dans le form (car, en recherchant sur les divers forums, j'ai vu une réponse qui disait qu'il fallait mettre des classes car les id sont uniques. Ce qui n'a pas marché...)

Je retiens à préciser que l'opération fonctionne parfaitement bien de A à Z si il n'y a qu'un commentaire !

Je remercie déjà la bonne âme charitable qui verra ma question et qui se dira "Je vais aider ce pauvre homme !".

Aucune réponse