Bonjour :calim2:
Le titre n'est pas très explicite, je vais m'expliquer un peu mieux :
Alors j'ai créer un système de "like" sur des messages d'utilisateur.
Lorsqu'on met un "alert()" dans le code javascript celui-ci s'affiche autant de fois que le profil contient de message. Par exemple si vous likez un message sur le profil et que celui-ci contient 32 messages, il y aura un affichage de 32 alert()...
Ce qui me fait dire que ce n'est pas trop normal qu'il rentre autant de fois dans le javascript... Et 0 fois si c'est le tout premier message.
J'espère que vous pourrez m'aider... cela fait un moment que je bute dessus et ça pompe pas mal de ressources en plus :aie:
Voici le code :
Code:
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 <script type="text/javascript"> jQuery.noConflict(); (function($) { $(document).ready(function() { $("button.likebox").click(function() { var id = $(this).parent().attr("id"); var login = $("#login").val(); var loginpage = $("#loginpage").val(); var idquestion = $("#idquestion").val(); $.ajax({ type: "POST", url: "scripts/like.php", data: { id: id, loginpage: loginpage, login: login }, success: function(data, textStatus, jqXHR) { if(data != "ok") { $(".error").empty().append(data); } else { $("#like" + id).hide(); $("#newdiv_like" + id).show(); } } }); }); }); })(jQuery); </script>
Le like.php :
Code:
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 $sqlidlike = "SELECT login FROM likes WHERE id='".$id[0]."' AND login='".$_SESSION['login']."' AND liked_login='".$login."'"; $reqidlike = mysqli_query($aVar, $sqlidlike); $rowidlike = mysqli_fetch_array($reqidlike); if ($rowidlike[0] == $_SESSION['login'] && isset($_SESSION['login'])) { ?><div class="newdivlike" id="newdiv_like<?php echo $id[0];?>" style="display:block;"> <div id="tu_aimes">Tu aimes </div><div class="class_like" style="display:inline-block; margin-bottom: -7px;"></div> </div> <?php } if(isset($_SESSION['login']) && ($rowidlike[0] != $_SESSION['login']) && ($login != $_SESSION['login'])) { ?> <div class="likebox" id="like<?php echo $id[0];?>" style="display:inline;"> <div id="<?php echo $id[0]?>" class="form_like"> <input type="hidden" name="loginpage" id="loginpage" value="<?php echo $login ?>"> <input type="hidden" name="login" id="login" value="<?php echo $_SESSION['login'] ?>"> <input type="hidden" name="id" value="<?php echo $id[0] ?>"> <button class="likebox"></button> </div> </div> <div class="newdivlike" id="newdiv_like<?php echo $id[0];?>"> <div id="tu_aimes">Tu aimes </div><div class="class_like" style="display:inline-block; margin-bottom: -7px;"></div> </div> <?php }
Et le scripts/like.php (qui est appelé par ajax)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php include('../../config.php'); extract($_POST); $sqltest = "SELECT login FROM likes WHERE id='".$id."' AND liked_login='".$loginpage."' AND login='".$login."'"; $nametest = mysqli_query($aVar, $sqltest); $test = mysqli_fetch_array($nametest); if(isset($login) && !empty($login) && $test[0] != $login) { $time = date("Y-m-d H:i:s"); $sql = "INSERT INTO likes(id, liked_login, login, dateheure) VALUES ('".$id."', '".$loginpage."', '".$login."', '".$time."')"; $name = mysqli_query($aVar, $sql); echo "ok"; } else { echo "error liking"; } ?>
Code:
1
2 $test[0] != $login
Je n'ai trouvé que cette solution pour l'empêcher de remplir x fois la base de donnée avec la même chose...
Je ne sais pas ce qu'il se passe c'est un peu embêtant :aie:
Le like.php est appelé dans un while qui affiche toutes les réponses de la page de profil.
En vous remerciant énormément par avance...