Veuillez vous connecter ou créer un compte pour suivre ce topic
Ce topic est suivi par: PrimFX
Ce topic a été résolu
Auteur Sujet: Lien profil

Marius

Messages: 138

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
Publicité

PrimFX
Membre Premium

Messages: 113

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 Tire la langue

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é Clin d'oeil

@+

Marius

Messages: 138

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

Messages: 303

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... 

Marius

Messages: 138

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 Sourire : 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

Messages: 303

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'] !

Marius

Messages: 138

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 Pleur:) (on récupere les ID dans la bdd avec une requete query et on fait un fetch) ? Merci en tout cas !

TheFlameflo

Messages: 303

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 ! Sourire

Marius

Messages: 138

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

PrimFX
Membre Premium

Messages: 113

(Re) Salut !

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

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

@+

TheFlameflo

Messages: 303

[email protected] Ah oui ^^!  J'ai oublié car j'ai copié du code sans penser à l'adapter ! Clin d'oeil
Je suis content d'avoir pu t'aider ! Sourire


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