Aller au contenu
  • Veuillez ne pas poster de message pour but d'insulter, incitation à la haine, propos sexuels et tout autre qui ne respecte pas nos conditions générales !

Problème php ajax


Akushi

Messages recommandés

Yop, donc j'ai fait un système de commentaire d'article en ajax mais j'ai un petit problème le commentaire ne s'affiche pas immédiatement je dois reload la page:

 

L'ajax:

$("form#commentaire").on("submit", function() {
    $("#error1").css({"display": "block"});
    var commentaire = $("#editor1").val();
    var id_article = $("#id_article").val();
    
    if(commentaire == "" || id_article == "") {
        $('#error').html('Tous les champs doivent êtres remplis').show();
    } else {
        $.ajax({
            url: "ajax/commentaire.php",
            type: "post",
            data: {commentaire: commentaire, id_article: id_article},
            beforeSend: function()
            {
                $('#error').html('Vérification en cours, patientez..').show();
            },
            success: function(error) {
            if(error == "ok") {
                $('#error').html('Votre commentaire vient d\'être posté..').show();
            } else {
                $('#error').html(error).show();
            }
        },   
    });
}
    return false;
});

Mon php:

<?php
require('../core.php');

if(isset($_POST['commentaire'],$_POST['id_article']))
{
    if(!empty($_POST['commentaire']) AND !empty($_POST['id_article']))
    {
        sleep(1);
        $id_article = htmlspecialchars($_POST['id_article']);
        $commentaire = htmlspecialchars($_POST['commentaire']);
        $commentaire = utf8_encode($commentaire);
        $commentaire = str_replace('', '', $commentaire);
        $commentaire = utf8_decode($commentaire);
        if(strlen($commentaire) >= 10)
        {
            $PDO_ARTICLES = $bdd->prepare('INSERT INTO habbo_commentaire (id_article, commentaire, id_auteur, date) VALUES (?, ?, ?, ?)');
            $PDO_ARTICLES->execute(array($id_article, $commentaire, $_SESSION['id'],  time()));
            echo 'ok';
        }
        else
        {
            echo "Ton commentaire doit faire plus de 10 caractères";
        }
    }
    else
    {
        echo "Tu dois remplir tout les champs.";
    }
}
else
{
    echo "Une erreur est survenue.";
}
?>

 

Voilà ensuite pour l'affichage des commentaires :

$commentaires = $bdd->prepare('SELECT * FROM habbo_commentaire WHERE id_article = :id_article ORDER BY id DESC');
$commentaires->bindValue(":id_article", $articles_export['id']);
$commentaires->execute();

----------------------------------------------------------------------------------------------------------------------

<?php while($c = $commentaires->fetch()) {
				$user_commentaires = $bdd->prepare('SELECT * FROM users WHERE id = :id_auteur');
				$user_commentaires->bindValue(":id_auteur", $c['id_auteur']);
				$user_commentaires->execute();
				$u_c = $user_commentaires->fetch();
			 ?>
				<div class="commentaire-box">
					<div class="commentaire-avatar"><div class="avatar" style="background-image: url(https://avatar-retro.com/habbo-imaging/avatarimage?figure=<?php echo $u_c['look']; ?>)"></div></div>
					<div class="commentaire-pseudo"><?php echo htmlspecialchars($u_c['username']); ?>
					<div class="commentaire-com"><?php echo htmlspecialchars($c['commentaire']); ?></div></div>
				</div>
			<?php } ?>

 

Merci à ceux qui pourrons m'aider ;)

Lien à poster
Partager sur d’autres sites

il y a 46 minutes, Akushi a dit :

Yop, donc j'ai fait un système de commentaire d'article en ajax mais j'ai un petit problème le commentaire ne s'affiche pas immédiatement je dois reload la page:

 

L'ajax:


$("form#commentaire").on("submit", function() {
    $("#error1").css({"display": "block"});
    var commentaire = $("#editor1").val();
    var id_article = $("#id_article").val();
    
    if(commentaire == "" || id_article == "") {
        $('#error').html('Tous les champs doivent êtres remplis').show();
    } else {
        $.ajax({
            url: "ajax/commentaire.php",
            type: "post",
            data: {commentaire: commentaire, id_article: id_article},
            beforeSend: function()
            {
                $('#error').html('Vérification en cours, patientez..').show();
            },
            success: function(error) {
            if(error == "ok") {
                $('#error').html('Votre commentaire vient d\'être posté..').show();
            } else {
                $('#error').html(error).show();
            }
        },   
    });
}
    return false;
});

Mon php:


<?php
require('../core.php');

if(isset($_POST['commentaire'],$_POST['id_article']))
{
    if(!empty($_POST['commentaire']) AND !empty($_POST['id_article']))
    {
        sleep(1);
        $id_article = htmlspecialchars($_POST['id_article']);
        $commentaire = htmlspecialchars($_POST['commentaire']);
        $commentaire = utf8_encode($commentaire);
        $commentaire = str_replace('', '', $commentaire);
        $commentaire = utf8_decode($commentaire);
        if(strlen($commentaire) >= 10)
        {
            $PDO_ARTICLES = $bdd->prepare('INSERT INTO habbo_commentaire (id_article, commentaire, id_auteur, date) VALUES (?, ?, ?, ?)');
            $PDO_ARTICLES->execute(array($id_article, $commentaire, $_SESSION['id'],  time()));
            echo 'ok';
        }
        else
        {
            echo "Ton commentaire doit faire plus de 10 caractères";
        }
    }
    else
    {
        echo "Tu dois remplir tout les champs.";
    }
}
else
{
    echo "Une erreur est survenue.";
}
?>

 

Voilà ensuite pour l'affichage des commentaires :


$commentaires = $bdd->prepare('SELECT * FROM habbo_commentaire WHERE id_article = :id_article ORDER BY id DESC');
$commentaires->bindValue(":id_article", $articles_export['id']);
$commentaires->execute();

----------------------------------------------------------------------------------------------------------------------

<?php while($c = $commentaires->fetch()) {
				$user_commentaires = $bdd->prepare('SELECT * FROM users WHERE id = :id_auteur');
				$user_commentaires->bindValue(":id_auteur", $c['id_auteur']);
				$user_commentaires->execute();
				$u_c = $user_commentaires->fetch();
			 ?>
				<div class="commentaire-box">
					<div class="commentaire-avatar"><div class="avatar" style="background-image: url(https://avatar-retro.com/habbo-imaging/avatarimage?figure=<?php echo $u_c['look']; ?>)"></div></div>
					<div class="commentaire-pseudo"><?php echo htmlspecialchars($u_c['username']); ?>
					<div class="commentaire-com"><?php echo htmlspecialchars($c['commentaire']); ?></div></div>
				</div>
			<?php } ?>

 

Merci à ceux qui pourrons m'aider ;)

 

Pourquoi $("form#commentaire") ?

Lien à poster
Partager sur d’autres sites

à l’instant, Èsska (S-K) a dit :

 

Pourquoi $("form#commentaire") ?

Car j'ai donner l'id commentaire à ma form

<form id="commentaire">

 

Modifié par Akushi
Lien à poster
Partager sur d’autres sites

à l’instant, Èsska (S-K) a dit :

Juste $("#commentaire") rien d'autre. Oublie pas de vider ton cache si le js est dans un fichier .js

 

Thx même si ça fonctionner aussi comme avant ;)

Sinon tu saurais pour que le commentaire sois visible immédiatement ?

Lien à poster
Partager sur d’autres sites

à l’instant, Èsska (S-K) a dit :

Oui. Il faut recharger la div toute les x secondes. Du moins la boucle.

J'avais déjà fais pour un compteur de joueur en ligne en direct mais sa spam dans la conso dev le fichier .php

Lien à poster
Partager sur d’autres sites

il y a 3 minutes, Akushi a dit :

J'avais déjà fais pour un compteur de joueur en ligne en direct mais sa spam dans la conso dev le fichier .php

Normal. Au mieux, c'est du websocket, mais je doute que tu as les compétences en nodejs et en javascript.

 

Lien à poster
Partager sur d’autres sites

à l’instant, Èsska (S-K) a dit :

Normal. Au mieux, c'est du websocket, mais je doute que tu as les compétences en nodejs et en javascript.

 

Oui je connais juste c'est quoi et en js je galère un peut

Lien à poster
Partager sur d’autres sites

à l’instant, Akushi a dit :

Oui je connais juste c'est quoi et en js je galère un peut

Si tu galères sur du JS sans framework, tu risques de galérer avec du NodeJS qui est un framework JS et qui comporte les websockets. De plus, il va falloir gérer 2 serveurs, un peu comme pour un rétro, mais pour gérer les réponses et les envoi du serveur. Donc clairement, tu vas galérer. Le plus simple c'est recharger la boucle toute les 5 ou 10 secondes par exemple.

 

Lien à poster
Partager sur d’autres sites

il y a 15 minutes, Èsska (S-K) a dit :

Si tu galères sur du JS sans framework, tu risques de galérer avec du NodeJS qui est un framework JS et qui comporte les websockets. De plus, il va falloir gérer 2 serveurs, un peu comme pour un rétro, mais pour gérer les réponses et les envoi du serveur. Donc clairement, tu vas galérer. Le plus simple c'est recharger la boucle toute les 5 ou 10 secondes par exemple.

 

J'avais trouvé sa sur le net :

Pour avoir accès à ce lien, merci de vous connecter.

Lien à poster
Partager sur d’autres sites

à l’instant, Èsska (S-K) a dit :

Tu veux que ça rafraîchit uniquement quand c'est toi qui poste le commentaire?

Non en gros une fois le commentaire posté sa l'affiche immédiatement et sans rafraichir la page

Lien à poster
Partager sur d’autres sites

à l’instant, Akushi a dit :

Non en gros une fois le commentaire posté sa l'affiche immédiatement et sans rafraichir la page

C'est ce que j'entendais par là. Écoute, il y a moyen de passer Skype / Discord ? Clairement ça pourrit ton post d'écrire ici, surtout que c'est pas un chat ici.

Lien à poster
Partager sur d’autres sites

à l’instant, Èsska (S-K) a dit :

C'est ce que j'entendais par là. Écoute, il y a moyen de passer Skype / Discord ? Clairement ça pourrit ton post d'écrire ici, surtout que c'est pas un chat ici.

Yep Discord j'ai mais donne le tient le miens a des caractères

Lien à poster
Partager sur d’autres sites

Salut,

Ton problème est-il résolu?

 

Ceci est un message automatique.

Ancien Responsable des modérateurs

Mon discord : Nagasaki#5318
 
16 août 2017   ->  16 février 2020
Je m'en vais ..

 

 

                                   

                                         

Lien à poster
Partager sur d’autres sites

Il y a 14 heures, Kurumi Tokisaki a dit :

Recharger la div tous les x secondes inutiles !

juste faire plus simples tu recharge la div au moment du envoye de ton commentaire en ajax.

et le tours et joué.

 

après pour le websocket faut quand même atteindre, un minimum 

comme un exemple: tchat, avec 100 utilisateurs en ajax sa passe , mais 50 de plus c'est fichus ! après le websocket gère mieux cela

 

J'avais mal comprit, il voulait bel et bien un formulaire qui, au moment de l'envoi, rafraichit le résultat. Pa la même occasion, l'ajax peut gérer bien plus que 150 personnes. C'est juste que niveau fonctionnalités, c'est limité. Après la limite c'est celle du serveur. Rien de plus. Et les websockets pour certains système, c'est presque indispensable par exemple pour les notifications en temps réel, chat en ligne, ou autre. On peut faire en ajax, mais c'est médiocre.

Lien à poster
Partager sur d’autres sites

    Salut Akushi ,
    Ton sujet a été déplacé pour une des deux raisons suivantes :

    - Ta demande a été résolue.

    - Ton sujet se trouvait dans la mauvaise catégorie.

        
      Ceci est un message automatique.

Sky, un bot discord français multifonctions avec un RPG hors du commun.

Site web : https://skybot.fr

Serveur communautaire https://skybot.fr/discord

Lien à poster
Partager sur d’autres sites

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
×
×
  • Créer...