Like/Dislike message forum [Réglé]
Navalex Membre non connecté
Booster Roquette
-
Booster Roquette
- Voir le profil du membre Navalex
- Inscrit le : 12/02/2012
- Site internet
- Groupes :
J'ai remarqué une chose que je considère comme "manquante" sur le forum, sans vouloir vous offenser.

Un système pour like/dislike un message sur un topic est un bon point pour valoriser des messages utiles.
J'ai donc voulu m'y atteler moi même !

Seulement voilà que je bloc au niveau Ajax.. Je vais tout d'abord vous citer les étapes que j'ai fais pour commencer ce système:
- Création d'une table site_forum_like qui contient 3 colonnes: id (A-I), idtopic, user_id
- Ajout d'une fonction dans topic.php qui détecte si le message est like par l'utilisateur courant, et renvois true ou false dans la boulce msg
- Dans le tpl, petite condition qui affiche like ou dislike en fonction de la fonction précédente
Et c'est là que je bloque car je n'y connais pas grand chose en ajax..

Donc j'ai essayé de faire une fonction qui récupère l'id du message, et l'action, mais du coup je bloc ici car si je like le contenu du lien changeras, mais le lien sera toujours like (ou dislike après reload). Je vous donne tout de même le bout de code dans le tpl qui affiche les liens, et le bout de code de la fonction js:
Code TPL :
<span class="pull-right"> # IF USER_LIKE # <a href="javascript:XMLHttpRequest_like({msg.ID}, 'dislike')" id="forum_like"><i class="fa fa-thumbs-o-down"></i></a> <a href="javascript:XMLHttpRequest_like({msg.ID}, 'dislike')" id="forum_like_msg">Dislike</a> # ELSE # <a href="javascript:XMLHttpRequest_like({msg.ID}, 'like')" id="forum_like"><i class="fa fa-thumbs-o-up"></i></a> <a href="javascript:XMLHttpRequest_like({msg.ID}, 'like')" id="forum_like_msg">Like</a> # ENDIF # </span>
Code JAVASCRIPT :
function XMLHttpRequest_like(msgId, type) { if( document.getElementById('forum_like') ) document.getElementById('forum_like').innerHTML = '<i class="fa fa-spinner fa-spin"></i>'; xhr_object = xmlhttprequest_init('{PATH_TO_ROOT}/forum/xmlhttprequest.php?token={TOKEN}&' + type + '=1&msg_id=' + msgId); xhr_object.onreadystatechange = function() { if( xhr_object.readyState == 4 && xhr_object.status == 200 ) { if( document.getElementById('forum_like') ) document.getElementById('forum_like').innerHTML = xhr_object.responseText == '1' ? '<i class="fa fa-thumbs-o-up"></i>' : '<i class="fa fa-thumbs-o-down"></i>'; if( document.getElementById('forum_like_msg') ) document.getElementById('forum_like_msg').innerHTML = xhr_object.responseText == '1' ? "Like" : "Dislike"; } } xmlhttprequest_sender(xhr_object, null); }
Et aussi mon bout de code dans le fichier XMLHttpRequest.php:
Code PHP :
elseif (!empty($like) && $User->check_level(User::MEMBER_LEVEL)) //Ajout du sujet aux sujets suivis. { $query = PersistenceContext::get_querier(); $result = $query->insert(PREFIX . 'forum_like', array( 'topicid' => $msg_id, 'user_id' => $user_id )); echo 1; } elseif (!empty($dislike) && $User->check_level(User::MEMBER_LEVEL)) //Retrait du sujet, aux sujets suivis. { $query = PersistenceContext::get_querier(); $result = $query->delete(PREFIX . 'forum_like', 'WHERE idtopic=:idtopic AND user_id=:user_id', array( 'topicid' => $msg_id, 'user_id' => $user_id )); echo 2; }
Donc je suis un peut perdu et je vous appel à l'aide.. :/
Cordialement, Navalex.
Édité par Mipel Le 10/11/2017 à 13h57
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie