Bonjour,
Voila je rencontre un petit problème avec mon code.
Je ne parviens pas à promouvoir un membre en admin ou à le supprimer depuis cet espace d'admin.
J'ai donc recherché sur internet et ai tenté différentes choses :
Décrivez ici votre code ou ce que vous cherchez à faire
<?php
ob_start();// TEST
include("inc/timer.inc.php");//session
require("inc/database.inc.php");//connexion db
include("inc/header.inc.php");
$title='db';
$membres = $db->query('SELECT * FROM membres');
if($_SESSION['statut']==="admin") {
if(isset($_POST['suppression'])){
$m = $membres->fetch();
$suppression = $db->prepare("DELETE FROM membres WHERE identifiant= ? AND login = ?");
$suppression->execute(array($m['identifiant'],$m['login']));
}
if(isset($_POST['promote'])){
$statut = "admin";
$promote = $db->prepare("UPDATE membres SET statut = ? WHERE identifiant = ?");
$promote->execute(array($statut, $m['identifiant']));
}
}
else {
header("location: index.php");
exit;
}
?>
<body>
<div class="background">
<div class="container-fluid">
<div class="container">
<div class="membres">
<div class="row">
<table class="table">
<div class="col-lg-12 cold-md-12 col-sm-12">
<caption>Espace d'administration</caption>
<tbody>
<tr>
<th>Identifiant</th>
<th>Login</th>
<th>Statut</th>
<th>Membre/Admin</th>
<th>Suppression</th>
</tr>
<?php while($m = $membres->fetch()) { ?>
<tr>
<td>
<?= $m['identifiant']?>
</td>
<td>
<?= $m['login']?>
</td>
<td>
<?= $m['statut']?>
</td>
<td>
<input type="submit" class="btn btn-primary" name="promouvoir" value="Promouvoir" />
<?php $this->statut;
?>
</td>
<td>
<input type="submit" class="btn btn-danger" name="supprimer" value="Supprimer ce compte" />
<?php $this->suppression;
?>
</td>
<!--
<td>
<a href=""><img src="content/icons/thumbs-up-solid.svg" alt="promote" class="icons">
Promouvoir</a>
</td>
<td>
<a href="suppresion.php?identifiant=< ?=/* $m['identifiant'] */? >"><img src="content/icons/trash-alt-regular.svg"
alt="erase" class="icons"> Supprimer ce compte</a>
</td>
-->
</tr>
<?php } ?>
</tbody>
</div>
</table>
</div>
</div>
</div>
</div>
</body>
<?php
include("inc/footer.inc.php");
ob_end_flush();// TEST
?>
Je voudrais pouvoir cliquer sur l'un des membres présents et soit le promouvoir en tant qu'admin soit le supprimer de la BDD.
Avant de placer les if(isset($_POST['suppression'])) et if(isset($_POST['promote']))
mon code fonctionnait... trop bien. Je supprimais mon propre compte (l'admin qui se renvoie tout seul, je commence bien dans le dev moi...)
Bonjour.
Pour commencer, si dans tes conditions tu n'utilises pas le même nom d'index que dans le HTML, ça ne peut pas fonctionner.
Par exemple :
En partant de là, tu ne peux en aucun moment entrer dans une des deux conditions.
Ensuite, si tu veux que ton code ait un minimum de cohérence, tu devrais revoir ton code, car tu ne sembles pas savoir comment utiliser correctement les formulaires, sinon tu créerais des formulaires dans ta boucle de tableau, par exemple :
<td>
<form action="" method="post">
<input name="action" value="promouvoir" type="hidden">
<input name="identifiant" value="<?= $m["identifiant"] ?>" type="hidden">
<input type="submit" class="btn btn-primary" value="Promouvoir">
</form>
</td>
<td>
<form action="" method="post">
<input name="action" value="suppression" type="hidden">
<input name="identifiant" value="<?= $m["identifiant"] ?>" type="hidden">
<input type="submit" class="btn btn-primary" value="Supprimer ce compte">
</form>
</td>
Puis côté PHP :
if ($_SERVER['REQUEST_METHOD'] === "POST") {
$query = $db->query('SELECT identifiant, login FROM membres WHERE identifiant ?');
$query->execute([$_POST["identifiant"]]);
$membre = $query->fetch();
if ($_POST['action'] === "promouvoir") {
$suppression = $db->prepare("DELETE FROM membres WHERE identifiant= ? AND login = ?");
$suppression->execute([$membre['identifiant'], $membre['login']]);
} elseif ($_POST['action'] === "suppression") {
$promote = $db->prepare("UPDATE membres SET statut = 'admin' WHERE identifiant = ?");
$promote->execute([$m['identifiant']]);
}
}
Un dernier conseil, pour ce qui concerne l'action de promouvoir, tu devrais faire une condition dessus, car ce serait idiot de proposer l'action si l'utilisateur a déja le statut admin.
Bonjour, tu peu aussi faire de jolie bouton comme ceci:
<a href="tonlien"><button>Texte de mon bouton</button></a>
Les gens adorent les boutons c'est tellement simple de cliquer dessus et de constater que ça marche :)
Il n'imagine pas les centaines de lignes qui ce cache probablement derrière ^^
Euh on va éviter de dire des "conneries" car une balise de type block comme button ne peut pas être mis dans une balise de type inline comme a. https://i.imgur.com/S0gpK99.png
Pour faire des boutons avec un lien tu dois le faire en CSS.
@quenti77 Bonjour, je trouve le terme fort et vulgaire. Je n'ai pas trouvé d'info si l'élément été de type blok ou pas (source:https://www.w3schools.com/tags/tag_button.asp) de plus j'ai toujours utilisé les buttons ainsi sans aucun souci à signaler. S'il ne passe pas la validation stricte on peu peut-être le faire ainsi:
<button><a href="tonlien">Click ici</a></button>
Nope toujours pas : https://imgur.com/a/9DgTIFw
Je ne comprends pas pourquoi tu veux pas le faire en CSS ? C'est son but de faire du design.
Je ne comprends pas pourquoi tu veux pas le faire en CSS ? C'est son but de faire du design.
Non, aucun de vous deux n'a compris sa problématique et il n'est d'ailleurs pas question de design dans ce sujet, nous sommes au cas où vous ne l'aillez pas remarqué dans le forum PHP.
Mais il est inutile que vous vous renvoyez la balle entre vous deux, car de toute manière depuis qu'il à posté son sujet, c'est à dire il y a 12 jours, il ne semble même pas s'intéresser aux réponses qui lui sont donné, alors que je lui ai répondu le jour même.
J'ai très bien compris sa problématique mais je réponds à vavoir pour que les autres personnes qui passeraient par là ne fasse pas cette grossière erreur html.
Hello,
haha, il y'a eu beaucoup de messages içi. Merci à tous de votre aide.
Désolé, j'ai été malade ces dernières semaines.
Je vais revoir mon code.
Merci encore.