bonjour, j'ai déjà poser cette question mais pas de réponse, après plusieurs recherche je pas de solution alors je doit recommencer avec un autre titre.
j'ai un système de commentaire, que je traite avec ajax pour ne pas actualiser le navigateur, ça marche mais le problème c'est quand je click sur le bouton commenter au lieux d'enregistrer un seul commentaire, le script s’exécute plusieurs fois et enregistre le même commentaires 5,7,100 fois
j'aimerais que si je click sur commenter, qu'il y ai qu'un seul enregistrement, que le script transmet a la page comment_add.php qu'un seul commentaire par click
voici mon code:
comment.php
comment_add.php
require_once'../inc/functions.php';
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
require_once'../identifiant.php';
$id_user = $_SESSION['auth']->id_user;
$prenom_user = $_SESSION['auth']->prenom_user;
$nom_user = $_SESSION['auth']->nom_user;
$avatar_user = $_SESSION['auth']->avatar_user;
if (!empty($_POST['com_comment'])) {
$com_comment = $_POST['com_comment'];
$quer = "INSERT INTO commentaire (id_com_parent, id_pub_com, id_user_com, prenom_user_com, nom_user_com, avatar_user_com, commentaire_com, date_time_com) VALUES (?, ?, ?, ?, ?, ?, ?, NOW())";
$statement = $pdo->prepare($quer);
$statement->execute([$_POST['comment_id'], $_POST['bar_cmt'], $id_user, $prenom_user, $nom_user, $avatar_user, $com_comment]);
}
$data = array('error' =>$error);
echo json_encode($data);
merci beaucoup d'avance
j'ai un système de commentaire, que je traite avec ajax pour ne pas actualiser le navigateur, ça marche mais le problème c'est quand je click sur le bouton commenter au lieux d'enregistrer un seul commentaire, le script s’exécute plusieurs fois et enregistre le même commentaires 5,7,100 fois
j'aimerais que si je click sur commenter, qu'il y ai qu'un seul enregistrement, que le script transmet a la page comment_add.php qu'un seul commentaire par click
voici mon code:
comment.php
Code:
<form class="form_com">
<textarea id="com_comment_<?= $bar_cmt;?>" class="com_comment" placeholder="votre commentaire"></textarea>
<input type="hidden" id="comment_id_<?= $bar_cmt;?>" value="0"/>
<input type="hidden" id="bar_cmt_<?= $bar_cmt;?>" value="<?= $bar_cmt;?>" />
<button type="submit" class="comment_sub" id="comment_sub_<?= $bar_cmt;?>">Commenter</button>
</form>
Code:
<script>
$(document).ready(function(){
$(document).on('click', '#comment_sub_'+<?= $bar_cmt;?>, function(cmm){
cmm.preventDefault();
var com_comment = $('#com_comment_'+<?= $bar_cmt;?>).val();
var comment_id = $('#comment_id_'+<?= $bar_cmt;?>).val();
var bar_cmt = $('#bar_cmt_'+<?= $bar_cmt;?>).val();
$.ajax({
url : "comment/comment_add.php",
method : "POST",
data : {com_comment:com_comment, comment_id:comment_id, bar_cmt:bar_cmt},
dataType: "json",
success:function(data)
{
if(data.error != '')
{
$('#pub_message').html(data.error);
$('.comment_id').val('0');
}
else{
$('#pub_message').html(data.error);
}
}
});
});
});
</script>
comment_add.php
require_once'../inc/functions.php';
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
require_once'../identifiant.php';
$id_user = $_SESSION['auth']->id_user;
$prenom_user = $_SESSION['auth']->prenom_user;
$nom_user = $_SESSION['auth']->nom_user;
$avatar_user = $_SESSION['auth']->avatar_user;
if (!empty($_POST['com_comment'])) {
$com_comment = $_POST['com_comment'];
$quer = "INSERT INTO commentaire (id_com_parent, id_pub_com, id_user_com, prenom_user_com, nom_user_com, avatar_user_com, commentaire_com, date_time_com) VALUES (?, ?, ?, ?, ?, ?, ?, NOW())";
$statement = $pdo->prepare($quer);
$statement->execute([$_POST['comment_id'], $_POST['bar_cmt'], $id_user, $prenom_user, $nom_user, $avatar_user, $com_comment]);
}
$data = array('error' =>$error);
echo json_encode($data);
merci beaucoup d'avance