嗨, 我想在管理员单击“ bannir”时禁止该用户(这将收集该用户的ID并将“被禁止”置于数据库中的1)
打印我正在使用while循环的用户信息,但是当我尝试收集用户id时,在html标记中的类“ idUser”中,它总是发送第一个id,而我不这样做不知道为什么。
<div>
<table class="table">
<thead>
<tr>
<th>#</th>
<th>Prénom</th>
<th>Nom</th>
<th>Email</th>
<th>Admin</th>
<th>Banni</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php while($userInfo = $req->fetch()){?>
<tr>
<td class="idUser"><?= $userInfo['id_user'] ?></td>
<td><?= $userInfo['last_name'] ?></td>
<td><?= $userInfo['first_name'] ?></td>
<td><?= $userInfo['email'] ?></td>
<td><?php if($userInfo['admin'] == 1){ ?>
<img src="../img/ok.png">
<?php } else { ?>
<img src="../img/no.png">
<?php } ?></td>
<td><?php if($userInfo['banned'] == 1){ ?>
<strong style="color:#E04949;">OUI</strong>
<?php } else { ?>
<strong style="color:#6AC259;">NON</strong>
<?php } ?></td>
<td><a href="#">Modifier</a> | <a href="#" class="banMemberJquery"><?php if($userInfo["banned"] == 0){ ?> Bannir <?php }else{ ?> Débannir <?php } ?></a></td>
</tr>
<?php } ?>
</tbody>
</table>
<script type="text/javascript">
$('.banMemberJquery').click(function(){
var idUser = $( ".idUser" ).html();
alert('Utilisateur Numero ' + idUser + ' banni avec succès.');
$.ajax({
url:"banMemberRequest.php",
data:'idUser='+idUser,
}).done(function(data){
$('#result').html(data);
});
});
PS:当我单击“ bannir”时,文件“ banMemberRequest.php”中的请求正常运行。
感谢您的帮助
答案 0 :(得分:1)
问题是因为您正在选择所有.idUser
元素。在其上调用html()
只会读取该集合中 first 的HTML。
要解决此问题,您需要使用DOM遍历来仅找到与单击的.idUser
元素相关的.banMemberJquery
元素。为此,您可以使用closest()
和find()
,如下所示:
$('.banMemberJquery').click(function() {
var idUser = $(this).closest('tr').find('.idUser').text(); // note text(), not html()
$.ajax({
url: 'banMemberRequest.php',
data: { idUser: idUser },
}).done(function(data) {
$('#result').html(data);
});
});