[RESOLU] Garder minimum 1 utilisateur lors des suppressions.

Avatar du membre
Eléphant du PHP | 88 Messages

10 mars 2015, 18:22

Bonjour,
j'ai besoin d'aide sur un truc SVP,

Je suis entrain de créer un admin (un petit CMS), et j'ai une rubrique "utilisateurs".
Et dans cette rubrique, il y a possibilité d'ajouter des utilisateurs, que les utilisateurs puissent modifier leur mail et identifiants, et il y a aussi la possibilité de supprimer un ou des utilisateurs.

Et c'est dans la partie "supprimer un utilisateur" que j'ai un problème.
Supprimer un utilisateur ça marche. Mais par contre, si il reste seulement 1 utilisateur, je souhaite que ce ne soit pas possible de le supprimer.

Voici mon code (je pense que j'y suis presque, mais je bloque) :
<?php
if (isset($_GET['id']) {
	$id_get = intval($_GET['id']);
}
else {
	header('location:utilisateurs.php');
}

// requete SQL comter nb users, le but: si il reste que 1 utilisateur dans BDD -> ne pas pouvoir le supprimer
$requete = $db->prepare('SELECT COUNT(*) FROM utilisateurs WHERE id = :id');
$requete->execute(array('id'=>$id_get));
if($requete->fetchColumn() != 0) {			// JE Pense que c'est par ici mon problème
			
	// requete SQL pour recup user
	$requete = $db->prepare("SELECT * FROM utilisateurs WHERE id = :id LIMIT 1");
	$requete->execute(array('id'=>$id_get));

	$info_user = $requete->fetch();

	if(isset($info_user['id'])) {		// pour que si l'utilisateur change l'id, qu'il soit redirigé
	?>

	<form method="POST" action="#">
		<p class="bold">Êtes-vous sur de vouloir supprimer définitivement l'utilisateur "<?php echo $info_user['pseudo_user'] ?>" ?</p>
		<p class="rouge bold">Cette opération est irréversible.</p>
						
		<input id="supprimer-confirmer" type="submit" name="supprimer" value="Supprimer">
		<input id="supprimer-annuler" type="submit" name="annuler" value="Annuler">

		<?php					
		if(!empty($_POST['supprimer'])) {
			// requete SQL pour supprimer user
			$requete = $db->prepare("DELETE FROM utilisateurs WHERE id = :id LIMIT 1");
			$requete->execute(array('id'=>$id_get));
			$requete->closeCursor();
			header('location:utilisateurs.php');
		}
						
		if(!empty($_POST['annuler'])) {			// annuler la supprssion de l'article
			header('location:utilisateurs.php');
		}
						
		?>
	</form>
Merci beaucoup

Mammouth du PHP | 688 Messages

10 mars 2015, 18:35

la requete à faire, c'est SELECT COUNT(*) FROM utilisateurs
si id est bien un identifiant unique de la table utilisateurs

Avatar du membre
Eléphant du PHP | 88 Messages

10 mars 2015, 18:51

_la requete à faire, c'est SELECT COUNT(*) FROM utilisateurs

_A ok, Du coup j'ai remplacé ceci:

Code : Tout sélectionner

// requete SQL comter nb users, le but: si il reste que 1 utilisateur dans BDD -> ne pas pouvoir le supprimer $requete = $db->prepare('SELECT COUNT(*) FROM utilisateurs WHERE id = :id'); $requete->execute(array('id'=>$id_get)); if($requete->fetchColumn() != 0) { // JE Pense que c'est par ici mon problème
par ceci:

Code : Tout sélectionner

// requete SQL comter nb users dans BDD $requete = $db->query('SELECT COUNT(*) FROM utilisateurs'); if($requete->fetchColumn() > 1) { // garder minimum 1 user
et visiblement,t ça marche.

Merci