Bonjour

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

Voici le code :

Code javascript : 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
 
<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 html : 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
 
	$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 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
 
<?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 php : Sélectionner tout - Visualiser dans une fenêtre à part
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

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...