IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Actualisaton des parametre d'Applet


Sujet :

JavaScript

  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 14
    Par défaut Actualisaton des parametre d'Applet
    Bien le bonjour ami développeur

    Je suis actuellement en stage de BTS IG développeur, et je cherche désesperément à utiliser AJAX mais la bête ne se dompte pas facilement. Aussi, après avoir écumé plusieurs forums, fais une multitude de test, je suis toujours bloqué.

    Mon sujet est le suivant, avoir les résultats des lignes de production en temps réel, j'ai une base de donnée que j'interroge toutes les n secondes.

    Le tous s'affichant dans une page Web pour que n'importe qui dans l'usine y ai accés

    J'ai crée une class JAVA qui me donne un compteur en pourcentage le taux de rendement de ma ligne.
    Je passe en paramètre dans ma page Web les résulats renvoyés pour chaque ligne par PHP.
    Chaque ligne de production à son petit <div></div> perso pour mettre à jour n'importe quel compteur et ne pas obliger à recharger toute la page à chaque fois ce qui est très lourd tout de meme.

    Voici mon code pour index.php :
    $bd= mssql_connect("localhost","root","");
    mssql_select_db("bdd");

    //mt_rand(1,100) pour ressortir un numéro entre 1 et 100 car ma base n'ai pas encore incrémenté directement par les résultats réel;
    //Je fais un insert pour que, quand je fais un refresh, la valeur change et simuler ce qui se passera

    mssql_query('UPDATE avoir SET prjour='.mt_rand(1,100).' WHERE FK_numligne='.$intCompteur.' AND FK_numjour=1 AND FK_numligne=1' );

    //Création de la requete
    $strRequete = "SELECT distinct(l.numligne), libelleligne, prjour FROM ligne l, avoir a WHERE a.FK_numligne=l.numligne AND FK_numjour=1 AND FK_numligne=1 ORDER BY l.numligne";
    //Je stock le résultat
    $objRequete = mssql_query($strRequete);

    $rsRequete=mssql_fetch_array($objRequete);

    echo'

    <applet code="Compteur" name="AppletCompteur" width="300" height="300">
    <div id="CptL1" style="display:inline" >
    <param name="lblLigne" value="'.$rsRequete['libelleligne'].'">
    <param name="dblMonth" value="'.$rsRequete['prjour'].'">
    </div>
    <b>Votre navigateur n\'est pas compatible java.</b>
    </applet>

    Donc, je passe en parametre de ma classe, le libelle de la ligne, ainsi que son taux de production. Cela marche relativement bien. Maintenant, attaquons l'AJAX.

    Mon fichier refresh.php est appelé pour mettre à jour les données du <div>

    mssql_query('UPDATE avoir SET prjour='.mt_rand(1,100).' WHERE FK_numligne=1 AND FK_numjour=1');
    }

    $strRequete = "SELECT distinct(l.numligne), libelleligne, prjour FROM ligne l, avoir a WHERE a.FK_numligne=l.numligne AND FK_numjour=1 AND FK_numligne=1ORDER BY l.numligne";

    $objRequete = mssql_query($strRequete);

    $rsRequete=mssql_fetch_array($objRequete);

    echo'
    <div id="CptL1" style="display:inline" >
    <param name="lblLigne" value="'.$rsRequete['libelleligne'].'">
    <param name="dblMonth" value="'.$rsRequete['prjour'].'">
    </div>
    ';

    Ce fichier me servira à replacer les parametres de mon fichier index.php par les nouvelles valeurs.

    Sur les forums j'ai réussi à trouver des bouts de codes qui fonctionnent plus ou moins et j'avoue ne pas avoir totalement compris le fonctionnement d'AJAX :s
    Mais dans mon fichier index.php, dans les balises SCRIPT j'ai cela

    function getXhr()
    {
    var xhr = null;
    if(window.XMLHttpRequest) // Firefox et autres
    xhr = new XMLHttpRequest();
    else if(window.ActiveXObject)
    { // Internet Explorer
    try {
    xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    }
    else
    { // XMLHttpRequest non supporté par le navigateur
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    xhr = false;
    }
    return xhr;
    }


    function go()
    {
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function()
    {
    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    if(xhr.readyState == 4 && xhr.status == 200)
    {
    leselect = xhr.responseText;

    document.getElementById('CptL1').innerHTML = leselect;
    }
    }


    xhr.open('POST','refresh.php',true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    var intLigne = response.getElementsByTagName("CptL1");
    documents.getElementById("CptL1").innerHTML =


    J'ai un setTimeout qui au bout de n seconde fait appel à la fonction qui m'actualisera les données

    En fait, c'est là que je bloque, je ne sais pas, si il vaut mieux que je change totalement tous le block <div></div>, ou simplement la valeur des parametres qui sont dans se block.
    Surtout, surtout, la syntaxe d'AJAX a avoir derrière car après avoir lu plusieurs tuto c'est vraiment dure de débuter, même une simple actualisation de Div comme ici.

    Si quelqu'un peut éclairer ma lanterne ... ou si vous avez de bonne incantation vaudoux pour le faire fonctionner je suis preneur =)

    Merci

  2. #2
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Teoftene... Sillos ?

    Sinon, visiblement dans ton code t'envoies rien à ton serveur. Il te manque le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.send(cequetuveuxenvoyer);
    apres ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xhr.open('POST','refresh.php',true);
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    Si tu développes sous firefox et que tu ne l'as pas déja installé, télécharge toi l'extension firebug qui est bien utile pour débugger ce genre de trucs (permet de voir les requetes http qui passent pendant l'exécution de ton script, et ainsi de voir certaines erreurs)

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 14
    Par défaut
    Ciloss

    (s'pèce d'ignorant =) )

    Je viens de trouver quelquechose qui s'apparente mais le chargement est douloureux ^^

    Ma fonction AJAX donne cela :

    function AJAX()
    {
    var xhr;
    try { xhr = new XMLHttpRequest(); }
    catch(e)
    {
    xhr = new ActiveXObject(Microsoft.XMLHTTP);
    }

    xhr.onreadystatechange = function()
    {
    if(xhr.readyState == 4 && xhr.status == 200)
    {


    //Id de la balise DIV que l'on douhaite modifierdocument.getElementById("CptL1").innerHTML = xhr.responseText;
    }
    };


    xhr.open( "GET", "refresh.php", false);
    xhr.send(null);
    //alert(xhr.responseText);
    //Id de la balise DIV que l'on douhaite modifier
    document.getElementById("CptL1").innerHTML = xhr.responseText;

    window.setTimeout("AJAX()",3000);

    }

    Néanmoins, (par chance) un flash m'a poussé à changer le témoin de xhr.open et ca a fonctionné ... quelqu'un saurait pourquoi ?

    De plus, (chuis un peu vert ... ) ca change les valeurs de la balise DIV, ca me met donc les parametres fraichement recalculés, mais ca ne met pas a jour ma classe pour autant.

    Il a fallu que je met aussi les balises APPLET dans mon DIV, ce qui fait que toute la classe est recalculée et ce n'est pas très hestétique ce petit(moyen) scintillement ...

    Une idée ?!?

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/08/2010, 11h30
  2. [FLASH MX2004] Lecture des parametres de l'url
    Par matN59 dans le forum Flash
    Réponses: 5
    Dernier message: 23/06/2006, 13h30
  3. Réponses: 2
    Dernier message: 19/07/2005, 11h12
  4. [script SQL]comment passer des parametres a un scrip sql?
    Par la7su dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/03/2005, 10h55
  5. sql ne comprend pas mon where!et me demande des parametres
    Par marie10 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 20/04/2004, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo