Mise a jour de graph via AJAX?

LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 - 2 févr. 2006 à 16:13
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 3 févr. 2006 à 16:55
Bonjour a tous;



voila sur uen de mes pages php

je créé un graphique(diagrmme en batons+courbes) a partir de données MYSQL

ces données sont updatées toutes les 10sec

et je voudrais savoir si c'est possible via ajax de faire un timer sur mon graphique pr l'updater



je connais deja ajax et j'ai essayer pr updater des valeurs ds un tableaupas de soucis mais pr un graph

je n'y arrive pas ....



si quelqu'un a deja chercher cela.....

32 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
2 févr. 2006 à 16:23
Qu'est ce qui te pose problème exactement ?

ce qui doit se passer, c'est avec un setInterval, par exemple, d'appeler ta fonction : elle va chercher les données dans ta bdd, créer le graph, et l'afficher donc. Tu renvoies cet affichage.

Le truc c'est évidemment d'utiliser la même image... tu la crées, tu l'affiches, tu la détruis. Et ainsi de suite.
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
2 févr. 2006 à 16:31
ouais concrétement ca donne ca :



<script type="text/javascript">

function update() {

var xhr_object = null;

//alert("debut!");

if(window.XMLHttpRequest) // Firefox

xhr_object = new XMLHttpRequest();

else if(window.ActiveXObject) // Internet Explorer

xhr_object = new ActiveXObject("Microsoft.XMLHTTP");

else { // XMLHttpRequest non supporté par le navigateur

alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");

return;

}

xhr_object.open("POST", "furnace_view.php", true);



xhr_object.onreadystatechange = function()

{

//alert(xhr_object.responseText);

if(xhr_object.readyState == 4)

{

// alert(xhr_object.responseText);


document.getElementById('img').src = xhr_object.responseText;


}

}

xhr_object.send(null);

}

//update();

setInterval("update()",5000);

</script>





et furnace view.php est un script qui fait un graph normal ...

header("Content-type: image/png");

blablabla....

imagepng($image);

imagedestroy($image);



et rien n'est générée.....
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
2 févr. 2006 à 16:58
Re :-)

<script type="text/javascript">
function update() {
var xhr_object = null;
//alert("debut!");
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("POST", "furnace_view.php", true);


xhr_object.onreadystatechange = function()
{
//alert(xhr_object.responseText);
if(xhr_object.readyState == 4)
{
// alert(xhr_object.responseText);
document.getElementById('img').src = xhr_object.responseText;
}
}
xhr_object.setRequestHeader("Content-type", "image/png");
xhr_object.send(null);
}
//update();
setInterval("update()",5000);
</script>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
2 févr. 2006 à 17:00
Hmm nan va y avoir blème...je teste et je modifie si besoin est.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
2 févr. 2006 à 17:05
apparement il manquait juste le header que j'ai rajouter mais ca ne passe toujours pas!!!
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
2 févr. 2006 à 17:53
malalammmmmmmmmmmmmmm....
tu trouves pas???
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
2 févr. 2006 à 17:54
J'ai fini par trouver une solution :

FICHIER test.php :

<?php
session_start ();
?>
<script type="text/javascript">
function update() {
var xhr_object = null;
//alert("debut!");
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("POST", "furnace_view.php", true);


xhr_object.onreadystatechange = function()
{
if(xhr_object.readyState == 4)
{
document.getElementById('img').src = xhr_object.responseText;
}
}
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr_object.send(data);
}


setInterval("update()",5000);
</script>



FICHIER furnace_view.php :

<?php
session_start ();
if (isset ($_SESSION['image'])) {
if (file_exists ($_SESSION['image'])) {
unlink ($_SESSION['image']);
}
}
$code = '';
$chars = '0123456789';
for ($i = 0; $i < 6; $i ++) {
$code .= $chars {mt_rand (0, 9)};
}
$im = @imagecreate (100, 50)
or die ("Impossible d'initialiser la bibliothèque GD");
$background_color = imagecolorallocate ($im, 255, 255, 255);
$text_color = imagecolorallocate ($im, 233, 14, 91);
imagestring ($im, 1, 5, 5, $code, $text_color);
imagepng ($im, $code.'.png');
imagedestroy($im);
$_SESSION['image'] = $code.'.png';
echo $code.'.png';
?>
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
2 févr. 2006 à 17:56
bon la au premier regard je comprends pas tout
je vais voir un peu ca et jte recontacte si j'ai des soucis
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
2 févr. 2006 à 18:01
j'initialise les sessions (j'en ai besoin)

Je mets une balise img (sans source).

Sur l'évènement, j'appelle la fonction générant les images.

Je vérifie si la variable de session 'image' existe, si oui, je vérifie que ce soit un fichier valide, si oui, je lke supprime.
Je génère mon image (là c'est une image à moi hein).
Je la génère dans un FICHIER, je ne l'envoie pas directement au navigateur.
Je mets le nom de l'image généré (chaque fois différent) dans ma variable de session 'image'.

J'affiche le nom du fichier image généré.
Il sera envoyé dans le src de ma balise .

C'est tout.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
2 févr. 2006 à 18:01
C'est tortueux, mais bon, dans la hâte, j'ai pas trouvé mieux.
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
3 févr. 2006 à 13:39
re mala,



bon j'ai appliquer ton code sur le mien et mon graphique ne s'affiche plus du tout....

ca plante je vais essayer ton script a part pr voir mais sur mon graph c'est mort!
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
3 févr. 2006 à 13:45
bon je viens de tester ton script seul avec une partie création et une partie affichage et ca ne marche pas non plus....



ca passe chez toi?
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
3 févr. 2006 à 13:50
xhr_object.send(data);

je comprends pas pourquoi tu utilises ca alors que ds mon cas on n'envoi aucun parametre

c'est juste un appel sur un timer....
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
3 févr. 2006 à 13:53
a priori le pb vient de ca

il faut mettre null a send!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 févr. 2006 à 13:57
Non, tu n'as pas compris le but du script, et je t'assure qu'il fonctionne. Le seul truc c'est qu'il faut mettre une image par défaut, parce qu'à l'initialisation, évidemment, on a rien.
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
3 févr. 2006 à 14:09
je pense avoir compris et ca donne un bon resultat quand je mets send(null)

et je ne mets pas d'image par defaut

ce que je fais c'est que j'appele une premiere fois ma fonction update()

et ensuite je mets un timer...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 févr. 2006 à 14:18
Oui oui, je l'avais marqué mais ça s'est effacé apparemment : le send (data) était une erreur de copier/coller :-) Il faut bien send (null)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 févr. 2006 à 14:18
Donc, au final, ça marche, lol ?
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
3 févr. 2006 à 14:26
ouais ca a l'air de marcher je prefere dire ca tant que j'ai pas tester a fond et sur un temps plus long



par contre comment je l'adapte sie je fais un graph avec jpgraph?

qui se finit par graph->stroke



une idée merveilleuse peut etre?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
3 févr. 2006 à 14:29
y a pas d'options pour enregistrer un graf sur un fichier ?
0
Rejoignez-nous