为什么它在数据库中输入相同的ID,而不是每个输入一个ID?

时间:2019-02-14 17:47:24

标签: php jquery

嗨, 我想在管理员单击“ bannir”时禁止该用户(这将收集该用户的ID并将“被禁止”置于数据库中的1)

打印我正在使用while循环的用户信息,但是当我尝试收集用户id时,在html标记中的类“ idUser”中,它总是发送第一个id,而我不这样做不知道为什么。

image of membership area

<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”中的请求正常运行。

感谢您的帮助

1 个答案:

答案 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); 
  });
});