Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je suis entrain de faire un petit systeme de bannisement des membres sur mon site mais le seul probleme ses quand je clique sur le bouton bannir sur la page rien ne se change et même dans le BDD sa reste a 0 au lieu de 1

<?php
     session_start();
     $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre;charset=utf8', 'root', '');

      if(!isset($_SESSION['id']))
      {
          header('Location: connexion.php'); # Si le membre est pas connecté, on le redirige vers la connexion.php
      }
      elseif(isset($_SESSION['id']) && $_SESSION['grade'] != 'administrateur'){
          header('Location: index.php'); # Si le member est conencté, mais il est pas administrateur, on le redirige vers index.php
      }

      $info = $bdd->query('SELECT * FROM membres');
      foreach($info as $info)
      {

        if(!empty($_GET['ban']) && $_GET['ban'] > 0 && isset($_POST['secure']))

        {
            $id = intval(trim($_GET['ban']));
            $banUsers = $bdd->prepare('UPDATE membres SET ban = ? WHERE id = ?');
            $banUsers->execute(array("1", $id));
            header('Location: admin.php');
        }

        if(!empty($_GET['unban']) && $_GET['unban'] > 0 && isset($_POST['secure']))
        {
            $id = intval(trim($_GET['unban']));
            $unbanUsers = $bdd->prepare('UPDATE membres SET ban = ? WHERE id = ?');
            $unbanUsers->execute(array("0", $id));
            header('Location: admin.php');
        }

?>
    <p><?= $info['id']; ?>. <b><?= $info['pseudo']; ?></b> - <?= $info['mail']; ?> - <?= $info['grade']; ?> <?php if($info['ban'] == '0') { ?> <button onclick="javascript:location.href='admin.php?ban=<?= $info['id']; ?>'">Bannir</button> <?php } elseif($info['ban'] == '1') { ?> <button onclick="javascript:location.href='admin.php?unban=<?= $info['id']; ?>'">Dé-bannir</button> <?php } ?> </p>
<form method="POST"><input type="checkbox" name="secure"></form>
<?php
      }
  ?>

4 réponses


Bonsoir,

  • Activer les erreurs PDo (cf la doc)
  • Mettre en commentaire tous les header et mettre un echo pour savoir si tu vas bien dans la bonne condition
  • A mon avis la, tu ne peux pas avoir et du POST et du GET (à vérifier par un var_dump() )

faut que je verifie quoi avec le Var_dump ?

Que tu reçois bien les données dans $_POST et $_GET

Bonsoir.
Il y a clairement de gros problèmes dans ton code.
En plus de ce qu'à dit Carouge10, si tu fais une redirection dans une boucle, ta boucle n'ira pas plus loin que le premier tour de celle-ci, en plus de ça, tu ne peux pas donner le même nom de variable à l'alias que celui de la variable sur lequel la fonction foreach va boucler.
Pour finir, pourquoi utiliser du JavaScript dans ton formulaire si c'est pour lui faire faire ce qu'il est capable de faire nativement sans JavaScript ?
D'ailleurs, quel est l'intérêt de faire une boucle sur tous les utilisateurs pour l'update si c'est pour ne faire l'update que sur un seul enregistrement à chaque soumission du formulaire ?
Ton code devrais plutôt être comme ceci.