Bonjour je crée un tchat en php et ajax mais j'ai un soucis la mise a jour de mes profils ne se fait pas au submit du formulaire
par contre les données sont bien la si je recharge la page

voici mon code:

<?php
session_start(); 

include "".$_SERVER['DOCUMENT_ROOT']."/include/mysql_connect.php";
?>
<script>

$(document).ready(function (e) {
    $('#ajoute_mess').on('submit', function(e) {
        e.preventDefault();
        var $form = $(this);
        $.ajax({
            url: '/fiche_cli/affiche_mess.php',
            method: 'GET',
            dataType: 'html',
            data: $form.serialize()
        }).then(function (data) {
            $("#affiche_mess").html(data); // Mise à jour des messages
            document.getElementById('list_profil').innerHTML; // Mise à jour des profils de contact
            document.forms['ajoute_mess'].reset(); // Reset du formulaire
            document.getElementById('affiche_mess').scrollTop=document.getElementById('affiche_mess').scrollHeight; // Baisse la scrollbar
        }).catch(function (error) {
            console.log(error);
        });
    });
});

document.getElementById('affiche_mess').scrollTop=document.getElementById('affiche_mess').scrollHeight;
</script>

<br>

<div class="chatter">

<div id="list_profil" class="chat_profils">
<?php include "".$_SERVER['DOCUMENT_ROOT']."/fiche_cli/liste_profil.php"; ?>
</div>

<div class="chat_ecrire">
<?php include "".$_SERVER['DOCUMENT_ROOT']."/fiche_cli/ajoute_mess.php"; ?>
</div>

<div id="affiche_mess" class="messages">
<?php include "".$_SERVER['DOCUMENT_ROOT']."/fiche_cli/affiche_mess.php"; ?>
</div>

</div>

4 réponses


Salut

Cette ligne ne fait rien du tout: document.getElementById('list_profil').innerHTML;
Manque un = 'blabla' afin de mettre a jour son contenu.

ça m'arrange pas lol, l'objectif est le suivant:

je selectionne un utilisateur, j'ouvre un tchat avec lui et quand le message est posté je voudrais mettre à jour la liste des utilisateurs avec qui il est en contacte

les données proviennent de mysql

Faudrait refaire un call ajax vers liste_profil.php au niveau de la ligne précisée dans mon premier message.
Ce php te retourne un HTML (comme actuellement je pense), et juste à mettre ce HTML dans le block list_profil.

Exactement comme tu as fais pour mettre à jour les messages :)

je pensais qu'il etait possible de mettre à jour deux div en même temps
j'ai donc ajouter une seconde requete ajax dans la 1ere et ça fonctionne à merveille

il me reste juste un petit soucis:

quand je demarre une nouvelle converstion avec un nouveau contact ma div se met bien a jour au submit
mais cette liste remonte vers le haut je voulais donc appliquer une nouvelle position mais ça fonctionne pas

voici mon css:

.chat_profils_homme 
{
    position: relative; 
    top: -30px; 
    left: -20px; 
    font-size: 12px;
}

ma requete ajax:

            $.ajax({
            url: '/fiche_cli/liste_profil.php',
            method: 'GET',
            dataType: 'html',
            data: $form.serialize()
        }).then(function (data) {
            $("#list_profil").html(data);
            $('.chat_profils_homme').position({
            top : '30px' 
            });

            }).catch(function (error) {
            console.log(error);
        });

c'est dans cette partie que je souhaite modifier la position apres le post car les profils remontent et je ne vois plus le 1er profil de la liste:

while($data2 = mysql_fetch_array($req2))
{
$sql3 = mysql_query("SELECT sexe FROM membres WHERE pseudo='".$data2['dest']."'") or die (mysql_error());
list($sexe) = mysql_fetch_row($sql3);

if ($data2['dest']!=$_GET['dest'])
{
if ($sexe == 'Homme')
{
echo '<A style="margin-bottom: -15px; color: #007ba2;" class="chat_profils_homme" href="chat.php?exp='.$_SESSION['pseudo'].'&dest='.$data2['dest'].'">'.$data2['dest'].'</a>';
}
else
{
echo '<A style="margin-bottom: -15px; color: #f40e63;" class="chat_profils_homme" href="chat.php?exp='.$_SESSION['pseudo'].'&dest='.$data2['dest'].'">'.$data2['dest'].'</a>';
}
}
}