2 votes

En direct : Ne pas savoir comment sauver ce qui est soumis

Le flux lui-même fonctionne mais avec les intervalles activés, il se met à jour et lorsque je soumets quelque chose, la page est rafraîchie et rien n'est enregistré.

Code jQuery :

jQuery(document).ready(function() {
    setInterval("showNewStories()", 5000);
});

function showNewStories() {
    $.getJSON("post.php", null, function(data) {
        if (data != null) {
            $("#stories").prepend($("<li><span class=\"story\">" + 
                data.story + "<br /><span class=\"date\">" + data.date + 
                "</span></li>").fadeIn("slow"));
        }
    });}

post.php :

<?php 
echo json_encode(array( "story" => $_POST['dataS'],
                                        "date" => date('l jS \of F Y h:i:s A')));
?>

Ce que je veux savoir, c'est comment faire pour que cela ressemble au fil d'actualité de Facebook, où l'on soumet quelque chose, qui est ajouté au fil d'actualité, et qui y reste même si l'on rafraîchit la page.

0voto

preinheimer Points 3227

Comment stockez-vous les données sur le serveur ? Les données devront être stockées quelque part, probablement dans une base de données pour faciliter l'accès aux plus récentes.

0voto

casperOne Points 49736

Je ne suis pas un expert en php, donc je ne peux pas dire si vous le faites déjà, mais le code côté serveur devrait accepter un paramètre qui lui indique à partir de quelle date charger les messages.

Vous devriez alors avoir une variable dans le javascript du côté client indiquant la date/heure du dernier message récupéré. Lorsque la page se charge, cette variable doit être nulle.

Ensuite, l'appel à showNewStories enverrait la variable avec la dernière date au serveur. Sur le serveur, si la variable est transmise à la page php, celle-ci renverra les résultats suivants uniquement les messages où la date et l'heure affichées sont plus grand que la date et l'heure affichées.

Ensuite, lorsque vous recevez la réponse du serveur, vous pouvez ajouter les messages à votre timeline. Lorsque vous ajoutez le dernier, vous stockez que comme étant la date et l'heure qui seront transmises au serveur la prochaine fois que l'utilisateur se connectera au serveur. showNewStories s'appelle.

Il y a une faille dans cette logique car si la résolution de la date et de l'heure sur votre serveur n'est pas assez fine pour gérer la fréquence du nombre de messages qu'il reçoit, vous pourriez rencontrer un problème lorsqu'un message est publié à l'heure suivante x vous récupérez la liste à tout moment x et ensuite un autre poste est accepté au moment x . La fois suivante showNewStories fait un appel au serveur, vous manquerez le deuxième message effectué à l'instant x .

Pour que ce système soit à l'épreuve des balles, il faut modifier la logique du serveur pour inclure tous les messages dont l'heure de publication est égale à l'heure de la date. Vous devez également renvoyer un identifiant unique pour chaque message transmis au client.

Ensuite, du côté client, lorsque la fonction de rappel de la commande getJSON est appelé, vous devez inclure tous les éléments pour lesquels la date et l'heure du message sont supérieures à l'heure soumise au serveur. ou les dates et heures sont égales, et l'identifiant du message retourné par le serveur n'est pas déjà dans la liste (je recommande d'inclure l'identifiant du message dans la liste en tant que attribut de données ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X