Bonjour,
Voila je rencontre un petit problème avec mon code.
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
}
?>
Bonsoir,
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.