Bonjour,
J'ai un petit souci avec un script qui est un mélange de plusieurs scripts trouvés par ci par là. Le script d'origine fonctionne parfaitement sur mon site. C'est un script en PHP mais la partie qui me fait tout disfonctionner est la partie AJAX que j'ai rajoutée.
Voici mes fichiers :
test_histo.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <script src="mesfonc.js" type="text/javascript"></script> <form name="form_histo" id="form_histo" style="width:500px"> <select name="histo" id="histo" onchange="gohisto1(this.value)" style="width:250px" class="defaut"> <option value="-1">Choisissez une région</option> <option value="attaque">Attaque</option> <option value="defense">Défense</option> </select> <div id="div_histo"> </div> </form>
Ensuite intervient un fichier Javascript/Ajax :
mesfonc.js
Puis enfin un fichier PHP qui génère un histogramme (ou devrait le faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 // Creation de l'objet XMLHttpRequest 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 gohisto1(histo) { $idobjet('div_histo').innerHTML = ''; var xhrmule = getXhr(); xhrmule.onreadystatechange = function() { // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhrmule.readyState == 4 && xhrmule.status == 200) { leselect = xhrmule.responseText; // Ajoute les options $idobjet('div_histo').innerHTML = leselect; } } // Ici on va voir comment faire du post xhrmule.open("POST","image.php",true); // ne pas oublier ça pour le post xhrmule.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // Poste les arguments ici le compte via l'id du select var selcpte = $idobjet('histo'); var cptesel = selcpte.options[selcpte.selectedIndex].value; var data = "histo="+cptesel; xhrmule.send(data); })
image.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 <?php require_once('connexion.inc.php'); ?> <?php mysql_select_db("............"); ?> <?php header("Content-Type: text/html; charset=iso-8859-15"); header ("Content-type: image/png"); $histo = $_POST['histo']; $moyenne1 = mysql_query("SELECT AVG(".$histo.") FROM condition1"); $moyenne = mysql_result($moyenne1,0); $joueur = 89; $moyenne = round($moyenne); $stats = array($joueur, $moyenne); $largeurImage = 150; $hauteurImage = 120; $im = ImageCreate ($largeurImage, $hauteurImage) or die ("Erreur lors de la création de l'image"); $blanc = ImageColorAllocate ($im, 255, 255, 255); $noir = ImageColorAllocate ($im, 0, 0, 0); $bleu = ImageColorAllocate ($im, 0, 0, 255); // on dessine un trait vertical pour représenter l'axe du temps // le nombre maximum de visites $statsMax = 100; // tracé des batons for ($i=1; $i<=2; $i++) { $hauteurImageRectangle = round(($stats[$i-1]*$hauteurImage)/$statsMax); ImageFilledRectangle ($im, $i*30-7, $hauteurImage-$hauteurImageRectangle, $i*30+7, $hauteurImage-10, $bleu); ImageString ($im, 0, $i*30-7, $hauteurImage-$hauteurImageRectangle-10, $stats[$i-1], $noir); } // et c'est fini... ImagePng ($im); ?>
La création marche bien, si je ne passe pas par le fichier .js mais l'image ne s'affiche pas si je passe par Ajax.
Merci de votre aide
Partager