Optimisation PHP SQL AJAX

omlaly - 26 mars 2013 à 10:44
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 - 26 mars 2013 à 14:02
Bonjour,

J'aimerais optimiser mon code qui récupère les articles et leurs commentaires correspondants.
A l'heure actuelle afin de voir des nouveaux articles ou commentaires, il faut rafraichir, recharger la page.
J'aimerais modifier cela pour faire en sorte que les nouveaux articles ou commentaires s'affichent "en direct" (sans rechargement de la page).

J'ai vu qu'il fallait interagir avec le serveur grâce à l'AJAX et notamment grâce à XMLHttpRequest.

Pour tout vous dire, il faut que je fasse ça sur deux blocs (divs) (articles+commentaires correspondant).

Si vous pouvez m'en dire plus, n'hésitez pas...

Cordialement

1 réponse

BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
26 mars 2013 à 14:02
Hello,

tu peux par exemple faire cela en utilisant JQuery et plus particulièrement les fonctions setTimeout() et/ou setInterval() : cela te permet d'exécuter une fonction toutes les X secondes, dans cette fonction tu envoies une requête à un script PHP qui renverra la mise à jour des articles. Pour envoyer la requête du script JQuery au script PHP je te préconise plutôt le json ou le XML (en POST) car le XHR n'est pas fonctionnel sur d'anciennes versions de certains navigateurs (notammenent IE pour changer). Tu trouveras plein d'exemples de scripts pour ton intégration en fouinant sur la toile, pour ma part je procède en postant les données de JQuery à PHP et je renvoie un XML au script JQuery pour afficher le résultat :

var Data = { variable: "ma_variable" };

$.post($(location).attr('href'), Data, function(xml){

$('retour', xml).each(function(){

var STATUT = $(this).find('statut').text();
var MESSAGE = $(this).find('message').text();

if(STATUT == 'OK'){

// action à effectuer si la réponse est ok

}else{
            
// action à effectuer si la réponse est foireuse

}
                        
    });
           
});


<?php

$var = htmlspecialchars($_POST['variable']);

// connexion à ta BDD puis requête pour récupérer tes infos...

if($var == "tout baigne"){

    $STATUT = "OK";
    $INDIC = "Ca roule : les données sont bien mises à jour";

    $XML = '<?xml version="1.0" encoding="UTF-8"?>';
    $XML .= '<tonsite>';
    $XML .= '<retour>';
    $XML .= '<statut>'.$STATUT.'</statut>';
    $XML .= '<message>'.$INDIC.'</message>';
    $XML .= '</retour>';
    $XML .= '</tonsite>';
    echo $XML;

}else{

    $STATUT = "PAS OK";
    $INDIC = "Ca roule pas...";

    $XML = '<?xml version="1.0" encoding="UTF-8"?>';
    $XML .= '<tonsite>';
    $XML .= '<retour>';
    $XML .= '<statut>'.$STATUT.'</statut>';
    $XML .= '<message>'.$INDIC.'</message>';
    $XML .= '</retour>';
    $XML .= '</tonsite>';
    echo $XML;

}


A+

BBFUNK01

//C'est en forgeant qu'on devient forgeron... ;-) ;
0
Rejoignez-nous