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 :

[JS-PHP] PHP-JS


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 43
    Par défaut [JS-PHP] PHP-JS
    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
    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);
    }
    Puis enfin un fichier PHP qui génère un histogramme (ou devrait le faire )


    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

  2. #2
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Par défaut
    Bonjour

    AJAX, c'est fait pour recevoir du texte (sous format texte ou XML, mais ça reste du texte) .Or je vois :
    header ("Content-type: image/png");
    Je suppose que tu veux faire passer un objet Image ? Si tel est le cas, c'est pas fait pour.(d'ailleurs, tu utilises bien responseText). Pourquoi ne pas jouer sur l'attribut src d'une image ? Ou utiliser un iframe ?


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 43
    Par défaut
    A vrai dire je n'y connais en Ajax, j'ai repris le code exact dont je me sers sur cette page. L'idée est de générer un histogramme suivant la compétence voulue donc un select qui envoie la variable post à un script PHP qui, lui, génère l'histogramme. Donc l'image n'existe nulle part, elle est "fabriquée" puis affichée. Ajax ne me sert qu'à rafraichir la partie où l'histogramme s'affiche et à passer la valeur du select au fichier PHP, je ne passe aucune info relative à l'image dans Ajax.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 43
    Par défaut
    Bien vu ! J'ai essayé l'iframe et ça marche. Bon je n'ai toujours pas compris pourquoi ça ne s'affiche pas autrement mais ça marche.

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. HTML dans PHP, PHP dans HTML...
    Par jeremy_chauvel dans le forum Langage
    Réponses: 3
    Dernier message: 24/04/2006, 20h28
  2. [apache2][php]php ne marche pas
    Par Jack_serious dans le forum Apache
    Réponses: 3
    Dernier message: 28/03/2006, 17h41
  3. [Plugin][Php]PHP console : son rôle ?
    Par MYKERINOS dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/03/2005, 09h27
  4. [Apache / PHP] PHP pas interpété
    Par melitta dans le forum Apache
    Réponses: 8
    Dernier message: 15/09/2004, 09h19

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