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)); } } ?>
Partager