[RESOLU] fonction modifier un commentaire

Avatar du membre
Eléphant du PHP | 60 Messages

03 févr. 2019, 00:03

Bonjour,
sur cette page je viens de réussir a créer une fonction pour supprimer les messages par contre je n'arrive pas à faire une fonction pour modifier les messages.
si quelqu'un pouvais m'aider ce serait sympa .
merci d'avance.

<?php
define('include',NULL);
include('../core.php');

if (!isset($_SESSION['membre']) || $_SESSION['connect'] != true){header('Location: /compte/login'); die();}

$nompage = 'Categorie 1';
$page = "categorie1";
$descpage = 'Categorie 1 du Forum du site';

include('../header.php');
include('../sidebar.php');

$sqlinfos = $db->prepare('SELECT euros, credits, pseudo, avatar FROM membres WHERE id = :id');
$sqlinfos->execute(array(':id' => $_SESSION['membre']));  
$infos = $sqlinfos->fetch(PDO::FETCH_OBJ);



$avatar = ($infos->avatar == '') ? '/theme/images/noavatar.png' : $infos->avatar;


if(isset($_POST['envoyer']))
{
	$message=($_POST['message']);
	$auteur=($_POST['auteur']);
	$categorie=($_POST['categorie']);
	$date=($_POST['date']);
}



$insert = $db->prepare('INSERT INTO forum_commentaire1 SET message = :message, auteur = :auteur, categorie = :categorie, date = :date');
$insert->execute(array(':message'=>$_POST['message'], ':auteur'=>$_POST['auteur'], ':categorie'=>$_POST['categorie'], ':date'=>time()));

// fonction supprimer

if (isset($_POST['del_x']) && isset($_SESSION['pseudo']) && $_SESSION['admin'] == true) {

$_POST['id'] = intval($_POST['id']);

$delete = $db->prepare('DELETE FROM forum_commentaire1 WHERE id = :id');
$delete->execute(array(':id' => $_POST['id']));
$message = '<div id=valid>Commentaire Supprimé</div><script>setTimeout(\'window.location.replace("/categorie1")\',2000);</script>';

}
$delete = $db->prepare('UPDATE forum_commentaire1 SET message = :message, auteur = :auteur WHERE id = :id');
$delete->execute(array(':message' => $_POST['message'], ':auteur' => $_POST['auteur'], ':id' => $_POST['id']));
$message = '<div id=valid>Commentaire Modifié</div><script>setTimeout(\'window.location.replace("/categorie1")\',2000);</script>';

// fin fonction upprimer

// fonction modifier


//fin fonction modifier


$sqlpubh = $db->prepare('SELECT pub FROM pubs WHERE page = :page AND pos = :pos LIMIT 1');
$sqlpubh->execute(array(':page' => 'forum', ':pos' => 'haut'));
$pubh = $sqlpubh->fetch(PDO::FETCH_OBJ);
$sqlpubb = $db->prepare('SELECT pub FROM pubs WHERE page = :page AND pos = :pos LIMIT 1');
$sqlpubb->execute(array(':page' => 'forum', ':pos' => 'bas'));
$pubb = $sqlpubb->fetch(PDO::FETCH_OBJ);

echo '
<div id="content" class="float_r"><div class="center topart"><h3>Discussions sur le site</h3><div class="sidehead2"><div class="sidehead3"></div></div></div>
<div class="center padding">
Des questions, des commentaires, des idées à proposer ?<br>N\'hésitez pas à venir les poster ici !<br><br>

<div class="center"><a href="index"><button type="button" class="btn">Retour au forum</button></a></div><br>



<form method="post" action="categorie1"> 
<input type="hidden" value="'.$infos->pseudo.'" name="auteur" />
<input type="hidden" value="1" name="categorie" />
<input type="hidden" value="time" name="date" />

<table class="table"><tr class="tr"><td style="width: 90%" class="center"><b>Ajouter votre commentaire</b></td></tr>
<tr style="background: white;"><td style="width: 90%" class="center"><textarea rows="6" cols="45" class="input" name="message" id="message" placeholder="Ecrivez ici votre commentaire..." required></textarea></td></tr>
<tr style="background: white;"><td style="width: 90%" class="center"><input type="submit" value="Envoyer" name="envoyer" class="btn" /></td></tr>
</table></form><br /><br />


<table class="table">
<tbody>
<tr class="tr"><td style="width:55%">Commentaire</td><td class="center" style="width:20%">Auteur</td><td class="center" style="width:25%">Date</td></tr>
</tbody>
</table>';



$sqlforum_commentaire1 = $db->query('SELECT * FROM forum_commentaire1 ORDER BY id DESC');
while($forum_commentaire1 = $sqlforum_commentaire1->fetch(PDO::FETCH_OBJ)){

$admin = (isset($_SESSION['pseudo']) && $_SESSION['admin'] == true) ? '<form method="post" action="categorie1" style="float:right"><input type="hidden" name="id" value="'.$forum_commentaire1->id.'" /><input type="image" src="/theme/images/edit.png" title="Modifier ce commentaire" name="modif" />&nbsp;<input type="image" onclick="return confirm(\'Supprimer ce commentaire ?\');" src="/theme/images/del.png" title="Supprimer ce commentaire" name="del" /></form>' : '';

echo '<table class="table">
<tbody>
<tr style="background: white;">
<td style="width:55%">'.$forum_commentaire1->message.' '.$admin.'</td><td class="center" style="width:20%">'.$forum_commentaire1->auteur.'</td><td class="center" style="width:25%">'.jour_date($forum_commentaire1->date).'</td></tr>
</tbody>
</table>';


}

echo '<br><div class="center"><span style="color:green"><b>Mini Forum créé par bibou51</b></span></div><br>




</div><br />

</div>';







include('../footer.php');
?>

Avatar du membre
Eléphant du PHP | 60 Messages

03 févr. 2019, 16:12

bonjour,
bon j'ai réussi à faire ma fonction "modifier" mais ça ne fonctionne que quand je suis connecté en admin.
si on pouvais m'aider pour que l'auteur d'un message puisse aussi modifier ou supprimer ses propres messages ça serait sympa.
Merci d'avance.
<?php
define('include',NULL);
include('../core.php');

if (!isset($_SESSION['membre']) || $_SESSION['connect'] != true){header('Location: /compte/login'); die();}

$nompage = 'Categorie 1';
$page = "categorie1";
$descpage = 'Categorie 1 du Forum du site';

include('../header.php');
include('../sidebar.php');

$sqlinfos = $db->prepare('SELECT euros, credits, pseudo, avatar FROM membres WHERE id = :id');
$sqlinfos->execute(array(':id' => $_SESSION['membre']));  
$infos = $sqlinfos->fetch(PDO::FETCH_OBJ);

$avatar = ($infos->avatar == '') ? '/theme/images/noavatar.png' : $infos->avatar;

if(isset($_POST['envoyer']))
{
	$message=($_POST['message']);
	$auteur=($_POST['auteur']);
	$categorie=($_POST['categorie']);
	$date=($_POST['date']);
}


$insert = $db->prepare('INSERT INTO forum_commentaire1 SET message = :message, auteur = :auteur, categorie = :categorie, date = :date');
$insert->execute(array(':message'=>$_POST['message'], ':auteur'=>$_POST['auteur'], ':categorie'=>$_POST['categorie'], ':date'=>time()));


// fonction supprimer

if (isset($_POST['del_x']) && isset($_SESSION['pseudo']) && $_SESSION['admin'] == true) {

$_POST['id'] = intval($_POST['id']);

$delete = $db->prepare('DELETE FROM forum_commentaire1 WHERE id = :id');
$delete->execute(array(':id' => $_POST['id']));
$message = '<div id=valid>Commentaire Supprimé</div><script>setTimeout(\'window.location.replace("/categorie1")\',2000);</script>';


$delete = $db->prepare('UPDATE forum_commentaire1 SET message = :message, auteur = :auteur WHERE id = :id');
$delete->execute(array(':message' => $_POST['message'], ':auteur' => $_POST['auteur'], ':id' => $_POST['id']));
$message = '<div id=valid>Commentaire Modifié</div><script>setTimeout(\'window.location.replace("/categorie1")\',2000);</script>';
}
// fin fonction supprimer

// fonction modifier


if (isset($_POST['modif_x']) && isset($_SESSION['pseudo']) && $_SESSION['admin'] == true && isset($_POST['id']) && $_POST['id'] != '') {

$_POST['id'] = intval($_POST['id']);

$sqllivre2 = $db->prepare('SELECT * FROM forum_commentaire1 WHERE id = :id');
$sqllivre2->execute(array(':id' => $_POST['id']));
$livre2 = $sqllivre2->fetch(PDO::FETCH_OBJ);

//
$delete = $db->prepare('DELETE FROM forum_commentaire1 WHERE id = :id');
$delete->execute(array(':id' => $_POST['id']));
$message = '<div id=valid>Commentaire Supprimé</div><script>setTimeout(\'window.location.replace("/categorie1")\',2000);</script>';


$delete = $db->prepare('UPDATE forum_commentaire1 SET message = :message, auteur = :auteur, date = :date WHERE id = :id');
$delete->execute(array(':message' => $_POST['message'], ':auteur' => $_POST['auteur'], ':date' => $_POST['date'], ':id' => $_POST['id']));
$message = '<div id=valid>Commentaire Modifié</div><script>setTimeout(\'window.location.replace("/categorie1")\',2000);</script>';
//

echo '<div id="content" class="float_r"><div class="center topart"><h3>Discussions sur le site</h3><div class="sidehead2"><div class="sidehead3"></div></div></div>
<div class="center padding">
Des questions, des commentaires, des idées à proposer ?<br>N\'hésitez pas à venir les poster ici !<br><br>

<div class="center"><a href="index"><button type="button" class="btn">Retour au forum</button></a></div><br>

<form method="post" action="categorie1"> 
<input type="hidden" value="'.$infos->pseudo.'" name="auteur" />
<input type="hidden" value="1" name="categorie" />
<input type="hidden" value="time" name="date" />

<table class="table"><tr class="tr"><td style="width: 90%" class="center"><b>Modifier votre commentaire</b></td></tr>
<tr style="background: white;"><td style="width: 90%" class="center"><textarea rows="6" cols="45" class="input" name="message" id="message" placeholder="Ecrivez ici votre commentaire..." required>'.$livre2->message.'</textarea></td></tr>
<tr style="background: white;"><td style="width: 90%" class="center"><input type="submit" value="Modifier" name="modifier" class="btn" /></td></tr>
</table></form><br /><br />

</div></div>';

}
else{
// fin fonction modifier

$sqlpubh = $db->prepare('SELECT pub FROM pubs WHERE page = :page AND pos = :pos LIMIT 1');
$sqlpubh->execute(array(':page' => 'forum', ':pos' => 'haut'));
$pubh = $sqlpubh->fetch(PDO::FETCH_OBJ);
$sqlpubb = $db->prepare('SELECT pub FROM pubs WHERE page = :page AND pos = :pos LIMIT 1');
$sqlpubb->execute(array(':page' => 'forum', ':pos' => 'bas'));
$pubb = $sqlpubb->fetch(PDO::FETCH_OBJ);

echo '
<div id="content" class="float_r"><div class="center topart"><h3>Discussions sur le site</h3><div class="sidehead2"><div class="sidehead3"></div></div></div>
<div class="center padding">
Des questions, des commentaires, des idées à proposer ?<br>N\'hésitez pas à venir les poster ici !<br><br>

<div class="center"><a href="index"><button type="button" class="btn">Retour au forum</button></a></div><br>

<form method="post" action="categorie1"> 
<input type="hidden" value="'.$infos->pseudo.'" name="auteur" />
<input type="hidden" value="1" name="categorie" />
<input type="hidden" value="time" name="date" />

<table class="table"><tr class="tr"><td style="width: 90%" class="center"><b>Ajouter votre commentaire</b></td></tr>
<tr style="background: white;"><td style="width: 90%" class="center"><textarea rows="6" cols="45" class="input" name="message" id="message" placeholder="Ecrivez ici votre commentaire..." required></textarea></td></tr>
<tr style="background: white;"><td style="width: 90%" class="center"><input type="submit" value="Enover" name="envoyer" class="btn" /></td></tr>
</table></form><br /><br />

<table class="table">
<tbody>
<tr class="tr"><td style="width:55%">Commentaire</td><td class="center" style="width:20%">Auteur</td><td class="center" style="width:25%">Date</td></tr>
</tbody>
</table>';


$sqlforum_commentaire1 = $db->query('SELECT * FROM forum_commentaire1 ORDER BY id DESC');
while($forum_commentaire1 = $sqlforum_commentaire1->fetch(PDO::FETCH_OBJ)){

$admin = (isset($_SESSION['pseudo']) && $_SESSION['admin'] == true) ? '<form method="post" action="categorie1" style="float:right"><input type="hidden" name="id" value="'.$forum_commentaire1->id.'" /><input type="image" src="/theme/images/edit.png" title="Modifier ce commentaire" name="modif" />&nbsp;<input type="image" onclick="return confirm(\'Supprimer ce commentaire ?\');" src="/theme/images/del.png" title="Supprimer ce commentaire" name="del" /></form>' : '';


echo '<table class="table">
<tbody>
<tr style="background: white;">
<td style="width:55%">'.$forum_commentaire1->message.' '.$admin.' '.$auteur.'</td><td class="center" style="width:20%">'.$forum_commentaire1->auteur.'</td><td class="center" style="width:25%">'.jour_date($forum_commentaire1->date).'</td></tr>
</tbody>
</table>';


}

echo '<br><div class="center"><span style="color:green"><b>Mini Forum créé par bibou51</b></span></div><br>


</div><br />

</div>';
}

include('../footer.php');
?>

Mammouth du PHP | 1967 Messages

04 févr. 2019, 17:04

insère une condition alternative à ceci $_SESSION['admin'] == true en cherchant à savoir si le post est écrit par le membre connecté.

indice: un || sera utile
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Eléphant du PHP | 60 Messages

04 févr. 2019, 23:19

Bonjour Spols,
Merci pour l'indice mais j'ai essayé avec un || et $_POST['auteur'] et aussi $_POST['message'] et j'y arrive pas.
Pourtant je suis sûr que c'est tout bête mais comme je suis débutant ce n'est pas toujours évident.

Avatar du membre
Eléphant du PHP | 60 Messages

09 févr. 2019, 18:46

Bonjour,
Malgré tout mes essais tout au long de la semaine je n'ai toujours pas trouvé la solution...
Donc si on pouvait me donner un indice supplémentaire ça serait cool.
Merci d'avance.
p.s. ; je suis débutant soyez indulgent.

Mammouth du PHP | 1967 Messages

11 févr. 2019, 09:17

isset($_SESSION['pseudo']) && $_SESSION['admin'] == true

==>

isset($_SESSION['pseudo']) && ($_SESSION['admin'] == true || $_SESSION['pseudo'] == $_POST['auteur'])

à condition d'avoir toujours une superglobale _POST et que l'auteur et le pseudo soit identique.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Eléphant du PHP | 60 Messages

11 févr. 2019, 15:13

bonjour Spols,
Merci pour ton aide mais ça ne fonctionne pas non plus.

Mammouth du PHP | 1967 Messages

12 févr. 2019, 09:11

Il faut que tu débug ton code pour savoir pourquoi cela ne marche pas.

Ajoute des echo/var_dump pour connaitre les valeurs de tes variables et pourquoi elle ne correspondent pas à tes désirs.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube