Partage
  • Partager sur Facebook
  • Partager sur Twitter

Changer image sur Select onchange

PHP Javascript getXMLHttpRequest

    12 novembre 2010 à 19:05:13

    Bonjour,

    Je cherche à faire afficher une image stocker dans ma BDD lors d'une action sur un select rempli par php

    La fonction est bien appelé, mais l'image ne se change pas.

    Dans ma page de navigation:
    ...
    echo "<SELECT NAME='pseudo' id='pseudo' onchange='changephoto()'>";
    ...
    Dans mes fonctions javascript:
    function changephoto()
    {
    var xhr2 = getXMLHttpRequest();
    var pseudo2 = encodeURIComponent(document.getElementById('pseudo').value);
    	
    xhr2.onreadystatechange = function() {
            if (xhr2.readyState == 4 && (xhr2.status == 200 || xhr2.status == 0)) {
    			alert(pseudo2);
    			
                    document.getElementById('miniphoto').innerHTML = xhr2.responseText; // Données textuelles récupérées
            }
    };
    
    xhr2.open("POST", "photochat.php", true);
    xhr2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr2.send("pseudo="+pseudo);
    
    }
    

    Le fichier php, qui n'est pas appelé?

    <?php
    header("Content-Type: text/html; charset=iso-8859-1");
    mysql_connect("localhost", "root", "root");
    mysql_select_db("Membre");
    echo "test";
    
    if (isset($_POST['pseudo'])) 
    {
    
        if (!empty($_POST['pseudo'])) 
        {
    		  $pseudo = mysql_real_escape_string(utf8_decode($_POST['pseudo']));
    		  $sql = 'SELECT IconeProfil FROM IdMembre WHERE Login='".$pseudo."'';
    		  $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    		  $data = mysql_fetch_array($req);
    		  $Image=$data['ImageProfil'];
    		  echo "<img src='".$data['IconeProfil']."' alt='alternate text'>";
    		 
    		  mysql_free_result($req);
    		  mysql_close();
    
    		    }
    }		  
    ?>
    

    Débutant en javascript AJAX, je ne parviens pas à cerner le problème...

    Si quelqu'un a une idée, merci d'avance!
    • Partager sur Facebook
    • Partager sur Twitter
      12 novembre 2010 à 19:13:15

      Salut,

      Comme ça...

      xhr2.send("pseudo="+pseudo2);
      

      ?

      Edit: Ou mieux remplacer toutes les variables "pseudo2" par "pseudo"
      • Partager sur Facebook
      • Partager sur Twitter
        12 novembre 2010 à 19:20:02

        Plusieurs petits soucis, déjà sur le "encodeURIComponent" qui sert si tu utilise GET, pour encodé l'url, pas pour un post ou tu envoie des données.

        Ensuite tu récupère du texte, mais sur ta page Php tu ne précise pas le bon header :
        <?php header("Content-Type: text/plain"); ?>
        


        Après pas vraiment une erreur mais ton code Php et pas très clean, tu te connecte sur la BDD dès le début sans vérifier.
        Et tu fais un isset puis un différent de vide.
        Alors que faire ceci serrait plus court et simple :
        <?php
        header("Content-Type: text/plain");
        
        if(!empty($_POST['pseudo'])){
        
           mysql_connect("localhost", "root", "root");
           mysql_select_db("Membre");
        
           $pseudo = mysql_real_escape_string(utf8_decode($_POST['pseudo']));
           $sql = 'SELECT IconeProfil FROM IdMembre WHERE Login="'.$pseudo.'"';
           $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
           $data = mysql_fetch_array($req);
           $Image=$data['ImageProfil'];
           echo "<img src='".$data['IconeProfil']."' alt='alternate text'>";
        		 
           mysql_free_result($req);
           mysql_close();
        }
        ?>
        


        (D'ailleurs ceci est un peu 'louche' vis à vis du '".$pseudo."').
        'SELECT IconeProfil FROM IdMembre WHERE Login='".$pseudo."''



        Sinon à première vu je vois rien d'autre ^^ .
        Edit: ah si l'erreur du précédent :D .
        • Partager sur Facebook
        • Partager sur Twitter

        Changer image sur Select onchange

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown