Modifier ou supprimer uniquement son commentaire PHP

Par Guizmo, il y a 5 ans


Bonjour,

Voila je rencontre un petit problème avec mon code car lorsque je poste un commentaire avec n'importe quel identifiant, j'ai la posibilité de modifier ou supprimer mon commentaire mais également celui des autres or il faudrait que je puisse effectuer les modifications uniquement sur un seul et même profil.

Voici mon code :

                        if(!empty($_SESSION['id']) == 1){?>

                            <div id= "modifications"><a href= "modifications.php?commentaireUtilisateur=<?=$c['id']?>">Modifier</a></div>
                            <div id= "suppressions"><a href= "supprimer.php?commentaireUtilisateur=<?=$c['id']?>#scroll">Supprimer</a></div><?php
                        } else ?>

12 réponses

bidule, il y a 5 ans

salut,

il faut ajouter une condition et vérifier que le l'ID de l'auteur et l'ID en session sont identique.
A partir de là tu peux afficher les liens d'édition et de suppression.

Si les 2 id sont différents alors pas de liens visible.
Il faut aussi penser a faire cette vérification dans ton modèle (requete SQL)

Guizmo, il y a 5 ans

De cette manière là ?

                        if(!empty($_SESSION['id'])){                            

                            if(!empty($_SESSION['pseudo']) AND !empty($_POST['commentaire'])) {
                            $pseudo = $_SESSION['pseudo'];
                            $commentaire = $_POST['commentaire'];?>

                            <div id= "modifications"><a href= "modifications.php?commentaireUtilisateur=<?=$c['id']?>">Modifier</a></div>
                            <div id= "suppressions"><a href= "supprimer.php?commentaireUtilisateur=<?=$c['id']?>#scroll">Supprimer</a></div><?php 
                            }
                        }?>
Carouge10, il y a 5 ans

Bonjour,
La tu vérifies s'il ne sont pas vide.
Il faut vérifier ce qu'à dit mon VDD avec un ==

Guizmo, il y a 5 ans

Dac, dans cet esprit ?

                    if(!empty($_SESSION['id'])){                            

                        if(($_SESSION['id']) == ($_SESSION['pseudo'];)) {?>

                        <div id= "modifications"><a href= "modifications.php?commentaireUtilisateur=<?=$c['id']?>">Modifier</a></div>
                        <div id= "suppressions"><a href= "supprimer.php?commentaireUtilisateur=<?=$c['id']?>#scroll">Supprimer</a></div><?php 
                        } else (($_SESSION['id']) !== ($_SESSION['pseudo'])); {
                            ?>
                        <div id= "modifications"><a href= "modifications.php?commentaireUtilisateur=<?=$c['id']?>"></a></div>
                        <div id= "suppressions"><a href= "supprimer.php?commentaireUtilisateur=<?=$c['id']?>#scroll"></a></div><?php 
                        }
                    }?>
Guizmo, il y a 5 ans

D'accord, pour le moment rien ne s'affiche, par contre si je rajoute dans le else quelques choses entre > < /a> cela affiche du texte mais c'est pas le but

                    if(!empty($_SESSION['id'])){                            

                        if (($_SESSION['id']) == ($c['id']) AND !empty($_POST['commentaire'])) {

                            $pseudo = $_SESSION['pseudo'];
                            $commentaire = $_POST['commentaire'];?>

                        <div id= "modifications"><a href= "modifications.php?commentaireUtilisateur=<?=$c['id']?>">Modifier</a></div>
                        <div id= "suppressions"><a href= "supprimer.php?commentaireUtilisateur=<?=$c['id']?>#scroll">Supprimer</a></div><?php 
                        } else { ?>
                        <div id= "modifications"><a href= "modifications.php?commentaireUtilisateur=<?=$c['id']?>"></a></div>
                        <div id= "suppressions"><a href= "supprimer.php?commentaireUtilisateur=<?=$c['id']?>#scroll"></a></div><?php 
                        }
                    }?>
bidule, il y a 5 ans

Salut,

if (($_SESSION['id']) == ($c['id']) AND !empty($_POST['commentaire'])) {

Pour moi, $c['id'] indique l'id du commentaire, là il te faut l'id du créateur du commentaire

Je ferai plutôt ça, a condition bien sûr d'avoir cette info en base

if( $_SESSION['id']) === $c['author']){
Guizmo, il y a 5 ans

Je pensais faire une condition sur commentaire pour indiquer celui de l'utilisateur mais en effet cela ne sert à rien,
justement il faut l'id du créateur mais je vois pas trop ce que je pourrais mettre comme code puisque l'ID devrait déjà renseigner l'utilisateur si ce n'est ['pseudo']...

Guizmo, il y a 5 ans

Bidule tu as mis $c['author']) mais si je mets plutôt ($c['pseudo'])) cela n'est pas censé fonctionner ?

                    if(!empty($_SESSION['id'])){                            

                        if (($_SESSION['id']) == ($c['pseudo'])) {?>

                        <div id= "modifications"><a href= "modifications.php?commentaireUtilisateur=<?=$c['id']?>">Modifier</a></div>
                        <div id= "suppressions"><a href= "supprimer.php?commentaireUtilisateur=<?=$c['id']?>#scroll">Supprimer</a></div><?php 
                        } else { ?>
                        <div id= "modifications"><a href= "modifications.php?commentaireUtilisateur=<?=$c['id']?>"></a></div>
                        <div id= "suppressions"><a href= "supprimer.php?commentaireUtilisateur=<?=$c['id']?>#scroll"></a></div><?php 
                        }
                    }?>
Carouge10, il y a 5 ans

Non ça serai plutôt $c['user_id']
Comment est structuré ta table "commentaire" ?

Guizmo, il y a 5 ans

Ma table commentaire >> id | pseudo | commentaire | date_commentaire

Carouge10, il y a 5 ans

Alors il faut vérifier $_SESSION['pseudo'] et $c['pseudo']
La relation entre la table users et la table commentaires devraient se faire avec l'id_user (a ajouté dans la table comentaire) car ti ton users change de pseudo, il ne pourra plus modifier ses commentaires (à moins que tu as prévu ce cas)

Guizmo, il y a 5 ans

Purée oui c'était (($_SESSION['pseudo']) == ($c['pseudo'])) cela fonctionne parfaitement !! Merci ;)