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


Carouge10
Réponse acceptée

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)

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
Auteur

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 
                            }
                        }?>

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

Guizmo
Auteur

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
Auteur

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 
                        }
                    }?>

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
Auteur

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
Auteur

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 
                        }
                    }?>

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

Guizmo
Auteur

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

Guizmo
Auteur

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