Veuillez vous connecter ou créer un compte pour suivre ce topic
Ce topic est suivi par: Nobodief
Ce topic a été résolu
Auteur Sujet: Système de bannissement - Espace membre

Marius

Messages: 138

Bonjour à tous, alors, voilà mon problème :

J'ai créer un espace membre, et qui dit espace membre dit forcément espace administration. J'ai donc une page admin.php sur laquelle sont affichés (sous forme de tableau) tous les membres de ma base de donnée (nommée membres) ainsi que des infos relatives tels que : l’email, si l’utilisateur est banni ou pas etc... Lorsque je clique sur le pseudo de la personne,  cela me redirige vers une page (profil_modif_admin.php?id=iddelapersonne&pseudo=pseudodelapersonne&banned=0ou1) et ca m'affiche des options par rapport à la personne selectionée : Supprimer ce compte, bannir ce compte etc... Pour la suppression, c'est ok, mais je n'ai aucune, mais alors aucune idée de comment faire mon système de bannissement, sachant que  dans ma base de donnée, j'ai une colonne "banned" en tinyint(1) sachant que la valeure par défaut est de 0. J'aimerais faire en sorte que, quand l'administrateur clique sur le lien "bannir ce compte", le 0 devienne 1, et que l'utilisateur soit donc banni.

Pourriez-vous m'aider ?

En vous remerciant par avance,
Cordialement,
Marius
Publicité

Nobodief

Messages: 73

Salut ! Tout d'abord, je ne comprend pas pourquoi tu récupère autant d'information pour affiché le profil d'une personne sachant que tu peux le faire avec juste : profil_modif_admin.php?id=iddelapersonne

Par la suite tu récupère l'id pour en trouver et en retourné les informations de l'utilisateur présente dans ta base de donnée, en PDO cela donnerais un truck du genre :

$userbdd = $bdd->prepare('SELECT * FROM users WHERE id = ?');
$userbdd->execute(array($_GET['id']));
$user = $userbdd->fetch();
Et puis ensuite pour modifier la valeurs de l'utilisateurs je vais te filer une astuce sympathique ( à toi de la sécurisé et de l'adapté) :

<?php 
   if(isset($_POST['je_le_banni']) {
      $SelectPost = intval($_POST['banned']);

      if(isset($SelectPost) {
         $Adieu = $bdd->prepare('UPDATE users SET banned = ? where id = ?');
         $Adieu->execute(array($SelectPost, $user['id']));
      }
   }
 ?>

<form method="POST" action="" enctype="multipart/form-data">
    <select name="banned">
        <option value="0" <?php echo $user('banned') === '0' ? 'selected' : ''; ?>>Pas banni</option>
        <option value="1" <?php echo $user('banned') === '1' ? 'selected' : ''; ?>>Banni</option>
    </select>
    <button type="submit" name="je_le_banni">
</form>

 Voyons ce que j'ai fait, tout d'abord j'ai mis en place un formulaire en mode select avec des valeurs (0 et 1), la ligne : <?php echo $user('banned') === '0' ? 'selected' : ''; ?> est très utile, car j’interroge les informations de l'utilisateur actuel pour voir l'état du champs banned et pour en retourné la valeur, puis si la valeurs correspond avec celle que j'ai indiqué, cela m'affichera automatiquement l'option actuel, en gros si l'utilisateurs est banni je verrais en première sélection l'options (banni), sinon je verrais (Pas banni).

Puis après une simple update de base, j'ai pas poussé.

Marius

Messages: 138

Oki merci, je vais essayer tout cela ! Mais l'update de ma base de donnée vas ducoup changer le 0 en 1 ? Merci !

Marius

Messages: 138

Salut, ca ne marche pas... Pourrais-tu m'aider ?
Merci par avance,
Marius

TheFlameflo

Messages: 303

Salut !
C'est quoi qui ne marche pas précisément ?
Ça affiche une erreur ? Peux-tu nous envoyer un screen shoot de ta table membres ?

Nobodief

Messages: 73

Envoie nous plutôt tout ton code de ta page administrative pour les profils, cela nous permettra de regarder ce qui ne va pas.

Marius

Messages: 138

Salut @santar et @TheFlameFlo ! Tout d'abord, merci pour vos réponses et vos conseils. Finalement, tout marche nikel, je m'étais trompé dans la requête SQL. Mais est-ce que vous sauriez comment faire pour que, au lieu de la liste de sélection, on mette deux lien (bannir et débannir) en fonction de si l'utilisateur l'est déjà ou pas...

Merci par avance !

Nobodief

Messages: 73

<?php 
   
   if(isset($_POST['je_le_banni']) { 
      $SelectPost = intval($_POST['banned']);

      if(isset($SelectPost) {  
         if(!$SelectPost > 1) {  // On empêche les petits malin de mettre une valeur supérieur a celle présente dans colonne banned (On veut 0 ou 1, pas 2 ou 1000).  
            $Adieu = $bdd->prepare('UPDATE users SET banned = ? where id = ?'); 
            $Adieu->execute(array($SelectPost, $user['id']));
         }
      }
   }
 ?>

<form method="POST" action="" enctype="multipart/form-data">
    <input type="hidden" name="banned" value="<?php if($user['banned'] == '0'){ echo '1'; } else { echo '0'; } ?>" ></input>
    <button type="submit" name="je_le_banni"><?php if($user['banned'] == '0'){ echo 'bannir'; } else { echo 'Dé-bannir'; } ?></button>
</form>
Lorsque tu fais ce genre de systèm tu rentre dans une boucle et tu remarqueras que tu fais toujours la même chose, par exemple ici, voici le tableau des tâches :

  • Condition vérification et alternative.
  • Récupération (Étape du GET).
  • Condition vérification et alternative.
  • Traitement + récupération (Étape de la requête, dans le but de récupérer des informations.).
  • Condition + Affichage de la page et de son contenu dynamique.
  • Condition vérification et alternative de $_POST.
  • Récupération de la valeur $_POST et transformation en $SelectPost.
  • Condition (Vérification)
  • Traitement + Update.

Tout ce que je veux te dire dans cet exemple, c'est que quoi que tu programme tu en reviendras toujours au même, tu as des conditions, des récupérations, du traitement et de l'affichage. (et de l'initialisation).

Donc  pour ton système ( je t'ai mis le code ci-dessus), tu dois faire une condition, pour faire en sorte que si l'utilisateur est banni, la requête retournera la valeur 0 et s'il n'est pas banni la valeur 1, pour cela tu t'aide des données de l'utilisateur en question.

Marius

Messages: 138

D'accord, merci pour ta précieuse aide !


Veuillez vous connecter ou créer un compte pour poster une réponse