Bonjour à tous,

Sur un système de like/unlike d'une galerie photo je bute sur le fait que lorsque je clique sur le lien "like" l'affichage de l'intitulé ne soit pas automatiquement actualisé en "unlike" sauf à faire refresh F5.

J'ai beau scruter mon fichier .js je ne vois pas ce qui cloche.
(le code de mes fichiers ci-dessous, j'ai volontairement déclaré ma variable user à 2 car je suis encore en phase de test)

Grand merci par avance pour votre aide.

gallery.php (la galerie photo)
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
</head>
<body>
<div id="conteneur">
<?php
require "connect.php";
$dir = 'uploadPics/';
$reponse = $bdd->query('SELECT id,nomPhoto,titre,description,likes FROM uploadphotos ORDER BY Id DESC');
while ($donnees = $reponse->fetch()){
	echo "<div class=\"cadrePhoto\">";
	echo $donnees['id'];
	echo "<br />";
	echo $donnees['titre'];
	echo "<br />";
	echo $donnees['description'];
	echo "<br />";
	echo "<img src='".$dir.$donnees['nomPhoto']."' />";
	echo "<br />";
	echo $donnees['nomPhoto'];
	echo "<br />";
	$uid=2;
	$sql=$bdd->prepare("SELECT * FROM fdlikes WHERE pid=? and user=?");
	$sql->execute(array($donnees['id'], $uid));
	if($sql->rowCount()==1){
		echo "<a href=javascript:void(0) class=\"like\" id='".$donnees['id']."' title=\"Unlike\">Unlike</a>";
	}
	else{ 
		echo "<a href=javascript:void(0) class=\"like\" id='".$donnees['id']."' title=\"Like\">Like</a>";
	}
	echo "</div>";
}
$reponse->closeCursor();
?>
<script src="function.js"></script>
</div>
</body>
</html>


function.js
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(document).ready(function(){
 $(document).on('click', '.like', function(){
  if($(this).attr('title')=='Like'){
   $.post('action.php',{pid:$(this).attr('id'),action:'like'},function(){
    $(this).text('Unlike');
    $(this).attr('title','Unlike');
   });
  }else{
   if($(this).attr('title')=='Unlike'){
    $.post('action.php',{pid:$(this).attr('id'),action:'unlike'},function(){
     $(this).text('Like');
     $(this).attr('title','Like');
    });
   }
  }
 });
});

action.php
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
include "connect.php";
$pid=$_POST['pid'];
$user=2;
$action=$_POST['action'];
if ($action=='like'){
 $sql=$bdd->prepare("SELECT * FROM fdlikes WHERE pid=? and user=?");
 $sql->execute(array($pid,$user));
 $matches=$sql->rowCount();
 if($matches==0){
 $sql=$bdd->prepare("INSERT INTO fdlikes (pid, user) VALUES(?, ?)");
 $sql->execute(array($pid,$user));
 $sql=$bdd->prepare("UPDATE uploadphotos SET likes=likes+1 WHERE id=?");
 $sql->execute(array($pid));
 }else{
 die("Il n'existe pas de photo avec cet ID");
 }
}
if ($action=='unlike'){
 $sql=$bdd->prepare("SELECT * FROM fdlikes WHERE pid=? and user=?");
 $sql->execute(array($pid,$user));
 $matches=$sql->rowCount();
 if ($matches!=0){
 $sql=$bdd->prepare("DELETE FROM fdlikes WHERE pid=? AND user=?");
 $sql->execute(array($pid,$user));
 $sql=$bdd->prepare("UPDATE uploadphotos SET likes=likes-1 WHERE id=?");
 $sql->execute(array($pid));
 }
}
 
?>