Lien profil

Ce topic a été résolu
M69-74

M69-74 Le 1 avril 2016 à 20:40 (Édité le 25 janvier 2019 à 17:50)

Bonjour à tous !

Alors voilà, je vous explique mon problème : j'ai fait un système d'administration dans lequel il y a la liste de tous les membres de ma BDD ayant pour chacun des options (tels que : supprimer ce compte, bannir ce compte etc...), mais je rencontre deux problèmes : tout d'abord, je voudrais que l'administrateur puisse cliquer sur le pseudo et que ca affiche la page de cet utilisateur, mais je ne sais pas comment faire. Ensuite, je ne sais pas non plus comment faire pour que l'action de l'administrateur (suppression, bannissement etc...) soit éféctuée sur l'utilisateur concerné.

Je vous remercie de vos réponses,
Bien Cordialement,
Marius
PrimFX

PrimFX Le 1 avril 2016 à 22:14

Salut !

Pour ça il faut que tu fasses passer des paramètres soit via l'URL (en $_GET) ou bien via des formulaires (en $_POST ou $_GET).

Etant donné que ce sont des données relativement sensibles (suppressions de comptes, etc.), je te conseillerais de faire ça en POST à l'aide de formulaires, et de sécuriser le tout un minimum 😋

Pour le lien vers le profil, tout dépend de la structure de tes URL. Il faut que tu arrives à passer en paramètre d'URL la ou les variables qui permettront d'identifier l'utilisateur concerné 😉

@+
M69-74

M69-74 Le 1 avril 2016 à 22:24

Salut PrimFX, merci de ta réponse ! Voila une URL type d'un profil : profil.php?id=29  Je n'ai aucune idée de comment faire pour que, lorsqu'on clique sur le prénom de ce profil (ex : Marius), ca nous mene sur sa page de profil (ex : profil.php?id=29) sachant que j'ai toute la liste des membres sur ma page administration. Après, sur ma page administration, j'ai juste un lien : supprimer le compte, donc je ne sais pas ou et quand faire la suppression (j'ai le script de suppression déjà)... Et je ne sais pas non plus comment faire pour que la supression est bien lieu pour ce profil et non pas celui de l'administrateur .
Merci !
TheFlameflo

TheFlameflo Le 1 avril 2016 à 22:26 (Édité le 1 avril 2016 à 22:27)

Salut !
Moi, j'ai créé un système qui me permet d'accéder à la fiche d'un membre par une liste et sur cette fiche, je peux modifier les infos.
Alors, la liste :
<h1>Liste des membres</h1>
   <table>
   <tr>
       <td>ID</td>
       <td>Pseudo</td>
       <td>Mail</td>
       <td>Confirmé ou non</td>
       <td>Niveau de permission</td>
   </tr>
<?php 
include("includes/config.php");
$req = $bdd->query('SELECT id, pseudo, mail, confirme, perm FROM espace_membre ORDER BY id DESC');
        while($membres = $req->fetch())
        {
?>
        <tr>
<td><?php echo $membres['id']; ?></td>
<td><a href="membre.php?pseudo=<?php echo $membres['pseudo']; ?>"><?php echo $membres['pseudo']; ?></a></td>
<td><?php echo $membres['mail']; ?></td>
<td><?php 
            if($membres['confirme'] == 0){
                echo "Non-confirmé";
            }
            else{
                echo "Confirmé";
            }
    ?></td>
<td><?php
    if($membres['perm'] == 1)
    {
        echo "Membre";
    }
    elseif($membres['perm'] == 2)
    {
        echo "Administrateur";
    } 
    else
    {
    echo "Erreur";
    }
    ?>
</td>
        </tr></br>
<?php
        }
        $req->closeCursor();
?>
En gros, ça créé un tableau où il y a les infos du membre (quelque unes). Le pseudo est sous forme d'un lien cliquable.
Et la fiche du membre permet de supprimer le membre s'il n'est pas administrateur :
 <?php
    include("includes/menu.php");
    include("includes/config.php");
    if(isset($_GET['pseudo']) AND !empty($_GET['pseudo']))
    {
        $requser = $bdd->prepare('SELECT * FROM espace_membre WHERE pseudo = ?');
        $requser->execute(array($_GET['pseudo']));
        $user = $requser->fetch();
    }
    if(isset($_POST['modifuser']))
    {
    
      if(isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo'])
        {   
            $newpseudo = htmlspecialchars($_POST['newpseudo']);
            $pseudolength = strlen($newpseudo);
            if($pseudolength <= 255)
            {
                $reqpseudo = $bdd->prepare('SELECT * FROM espace_membre WHERE pseudo = ?');
                $reqpseudo->execute(array($pseudo));
                $pseudoexist = $reqpseudo->rowCount();
                        
                if($pseudoexist == 0)
                {
                $insertpseudo = $bdd->prepare('UPDATE espace_membre SET pseudo = ? WHERE pseudo = ?');
                $insertpseudo->execute(array($newpseudo, $_GET['pseudo']));
                header('Location: espace_membre.php');
                }
                else
                {
                    $msg = "Ce pseudo est déjà pris.";
                }
            }
            else
            {
                $msg = "Le pseudo ne doit pas dépasser 255 caractères.";
            }
        }
        
    if(isset($_POST['newmail']) AND !empty($_POST['newmail']) AND $_POST['newmail'] != $user['mail'])
        {
            $newmail = htmlspecialchars($_POST['newmail']);
            if(filter_var($newmail, FILTER_VALIDATE_EMAIL))
            {
                $reqmail = $bdd->prepare('SELECT * FROM espace_membre WHERE mail = ?');
            $reqmail->execute(array($newmail));
            $mailexist = $reqmail->rowCount();
                if($mailexist == 0)
                {
                $insertpseudo = $bdd->prepare('UPDATE espace_membre SET mail = ? WHERE pseudo = ?');
                $insertpseudo->execute(array($newmail, $_GET['pseudo']));
                header('Location: espace_membre.php');
                }
                else
                {
                    $msg = "Cette adresse mail est déjà utilisée !";
                }
            }
            else
            {
            $msg = "Cette adresse mail n'est pas valide.";    
            }
        }
        
        if(isset($_POST['newpseudo']) AND $_POST['newpseudo'] == $user['pseudo'])
        {
        header('Location: espace_membre.php');
        }
    
        if(isset($_POST['confirmuser']))
        {
                $confirmuser = $bdd->prepare('UPDATE `u820264992_flame`.`espace_membre` SET confirme = 1 WHERE pseudo = ?');
                $confirmuser->execute(array($_GET['pseudo']));
                header('Location: espace_membre.php');
        }
    
        if(isset($_POST['deleteuser']))
        {
            $deleteuser = $bdd->prepare('DELETE FROM espace_membre WHERE pseudo = ?');
            $deleteuser->execute(array($_GET['pseudo']));
            header('Location: espace_membre.php');
        }
    }
        ?>
       <form method="POST" action="">
   <table>
       <tr>
           <td><label>Pseudo:</label></td>
           <td><input type="text" name="newpseudo" class="inputbasic" placeholder="Nouveau pseudo" value="<?php echo $user['pseudo']; ?>"/></td>
       </tr>
       <tr>
           <td><label>Mail:</label></td>
           <td><input type="text" name="newmail" class="inputbasic" placeholder="Nouveau mail" value="<?php echo $user['mail']; ?>"/></td>
       </tr>
        <?php 
            if($user['confirme'] == 0)
            {
        ?>
       <tr>
           <td><label>Confirmer l'utilisateur :</label></td>
           <td><input type="checkbox" name="confirmuser"/></td>
       </tr>
        <?php
            }
        ?>
        <?php 
            if($user['perm'] == 1)
            {
        ?>
       <tr>
           <td><label>Supprimer l'utilisateur :</label></td>
           <td><input type="checkbox" name="deleteuser"/></td>
       </tr>
        <?php
            }
        ?>
        <tr>
            <td><input type="submit" value="Valider les changements" text-align="center" name="modifuser"/></td>
        </tr>
   </table>
        </form>
        <?php
        if(isset($msg))
        {
            echo $msg;
        }
        ?>
Voilà !
Si tu as des questions, n'hésite pas ! 
EDIT : J'ai vu que tu amènes vers une fiche avec un paramètre, ID, par contre ici c'est un paramètre pseudo... 
M69-74

M69-74 Le 1 avril 2016 à 23:11 (Édité le 1 avril 2016 à 23:18)

Salut, je te remercie du fond du cœur pour tes conseils et ton code ; tout à marcher(le premier code) , je te remercie. Mais une petite question tout de même 😀 : Si je redirige après vers profil_modif_admin.php?id=<?php echo $membres['id']; ?> , est ce que les modification (suppression, bannissement etc...) ne se feront que pour ce membre ?
Je te remercie encore,
Cordialement,
Marius
TheFlameflo

TheFlameflo Le 1 avril 2016 à 23:24

Salut !
Heu... en fait, je ne comprend pas trop. Si tu rediriges avec l'ID, c'est la même chose que le pseudo SAUF qu'il faudra que tu modifies toutes les variables $_GET['pseudo'] par $_GET['id'] !
M69-74

M69-74 Le 1 avril 2016 à 23:35

Oui oui, j'ai bien tout modifié, merci beaucoup ! Et juste un dernier petit truc, saurais-tu comment on créer un compteur de membre ? J'ai l'idée mais pas le code 😭:) (on récupere les ID dans la bdd avec une requete query et on fait un fetch) ? Merci en tout cas !
TheFlameflo

TheFlameflo Le 1 avril 2016 à 23:52

En gros, tu dois faire un rowCount :
$reqUser = $bdd->prepare('SELECT * FROM espace_membre');
$nombreUser= $reqUser->rowCount();
J'ai pas testé, mais en théorie, ça devrait marcher !
PS : Tu dois afficher $nombreUser ! 😀
M69-74

M69-74 Le 2 avril 2016 à 00:02 (Édité le 2 avril 2016 à 00:34)

Hello, en fait au lieu de prepare il fallait juste mettre query. Merci pour ton aide tout au long de ce topic !
PrimFX

PrimFX Le 2 avril 2016 à 00:46

(Re) Salut !

Content que tu ais pu trouver solution à ton problème notamment grâce à l'aide de @TheFlameflo 😀

N'oublies pas de passer le topic en "résolu" si tu n'as plus besoin d'aide concernant ce sujet 😋

@+
TheFlameflo

TheFlameflo Le 2 avril 2016 à 01:19 (Édité le 2 avril 2016 à 01:19)

 @Marius Ah oui ^^!  J'ai oublié car j'ai copié du code sans penser à l'adapter ! 😉
Je suis content d'avoir pu t'aider ! 😀
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte