Partage
  • Partager sur Facebook
  • Partager sur Twitter

Formulaire AJAX et Récupération de variables

    8 juin 2010 à 22:42:11

    Bonsoir,

    Je souhaite réaliser un formulaire un peu spécial, nécessitant, d'après ce que j'ai compris, d'utiliser AJAX.

    Dans le formulaire, il y a un champs "Numéro d'identification". Après avoir rempli ce champs, un tableau apparait grâce à AJAX contenant les noms, prénoms et coordonnées de la personne (trouvées dans la BDD grâce à son numéro d'identification). Jusque là, pas de souci.

    Le problème survient quand je veux enregistrer mes données dans la BDD: je n'arrive pas à récuperer les variables noms, prénoms, etc.

    Voici les sources, réduites à l'essentiel:
    <form>
        Numéro d'identification: 
        <input type="text" size="40" id="identite" name="identite" />
        <input type="button" onclick="request(update);" value="Valider" />
    </form>
    
    <!-- AJAX Affichera ici les informations sur la personne -->
    <div id="infos">
    </div>
    			
    <form name="form" action="save.php" method="post">
         <!-- Pour envoyer le formulaire, j'ai besoin du NOM (celui affiché par AJAX). Or, je ne sais pas comment récupérer la variable (pour l'instant, j'ai mis $nom)) -->
         <input type="text" name="nom" id="nom" value="<?php echo $nom; ?>" />
         ...
    </form>
    


    function getXMLHttpRequest() {
    	var xhr = null;
    	
    	if (window.XMLHttpRequest || window.ActiveXObject) {
    		if (window.ActiveXObject) {
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			xhr = new XMLHttpRequest(); 
    		}
    	} else {
    		alert("Error: XMLHTTPRequest...");
    		return null;
    	}
    	
    	return xhr;
    }
    
    function request(callback) {
    	var xhr = getXMLHttpRequest();
    	
    	xhr.onreadystatechange = function() {
    		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    			callback(xhr.responseText);
    		}
    	};
    
    	var identite = encodeURIComponent(document.getElementById("identite").value);
    	xhr.open("POST", "update.php", true);
    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    	xhr.send("identite=" + identite + "");
    }
    
    
    function update(sData) {
    	document.getElementById('infos').innerHTML = sData;
    }
    


    <?php
    /* ## Charset ## */	
    	header('Content-Type: text/html; charset=ISO-8859-1');
    	
    /* ## Connexion BDD ## */
    	...
    			
    	//Récuperation des infos
    	$req = $db->prepare('SELECT * FROM informations WHERE identite = ?');
    	$req->execute(array($_POST['identite']));
    	$data = $req->fetch();
    	$req->closeCursor();
    	
    	//Affichage des infos
    	//$data['nom'];
    	//$data['prénom'];
    	//...
    ?>
    



    Comment puis-je donc faire pour récupérer les données dans le premier fichier ? (données qui sont actuellement affichées par le fichier PHP appelé par AJAX).
    J'espère avoir été suffisamment clair, si ce n'est pas le cas, n'hésitez pas à me demander des précisions.

    Merci d'avance pour vos réponses.
    • Partager sur Facebook
    • Partager sur Twitter
      8 juin 2010 à 22:55:15

      Ton problème, c'est que tu tentes d'accéder à une variable php avec de l'aJaX.

      aJaX ne te renverra toujours que du code client (html, css, javascript, etc). Tu ne pourras jamais avoir accès à des données PHP brutes sur un retour de requête.

      Donc là, dans ton 2e formulaire, il est normal que tu ne puisses pas récupérer $nom, puisque c'est du php, et qu'au chargement de la page, cette variable n'est pas encore alimentée..

      Je vois 2 solutions à ton problème :

      1) soit tu génère ton 2e formulaire en même temps que tes infos (donc en premier tes données sur la personne, suivi du formulaire), que tu complètes directement dans ton php.

      2) soit tu génère du javascript en même temps que tes données, qui s'occupe d'alimenter ton 2e formulaire.
      • Partager sur Facebook
      • Partager sur Twitter
      Directeur technique, créateur de jeux HTML5 et fan de JavaScript | La suite de OnHack est sur les rails !
        9 juin 2010 à 17:38:37

        Ok, merci. J'ai appliqué ta méthode n° 1, et ca marche. :)
        Cependant, maintenant, je souhaiterais pouvoir ajouter un nouveau champ, autant de fois que le souhaite l'utilisateur (en appuyant sur un bouton "+", un nouveau champs apparait grâce à AJAX). Dans ce cas là, je dois utiliser ta deuxième méthode, ou il y a plus simple ? (je ne maitrise pas trop le Javascript en fait :p)
        • Partager sur Facebook
        • Partager sur Twitter

        Formulaire AJAX et Récupération de variables

        × 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