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

AJAX Discussion :

[AJAX] Enregistrement champs formulaire


Sujet :

AJAX

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Points : 177
    Points
    177
    Par défaut [AJAX] Enregistrement champs formulaire
    Bonjour

    j'aimerai enregistrer les champs de mon formulaire des que ceux ci sont rempli :

    donc j'ajoute un onblur sur chaque champs
    cela va declencher la fonction ajax qui va envoyer le nom du champs et sa valeur au fichier php
    le fichier php va enregistrer le 1er champs dans la table avec un insert
    et il doit me renvoyer l'id créé dans la table afin que les autres champs soient enregistrés avec un update

    est ce la bonne methode?
    existe il un script ou un tuto?

    Merci de votre aide et de vos suggestion

  2. #2
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Clairement, non ce n'est pas la bonne méthode.

    Pourquoi ne pas simplement enregistrer tous tes champs une fois le formulaire correctement rempli et soumis?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Points : 177
    Points
    177
    Par défaut
    parce que le cahier des charges veut que chaque champs remplis soient enregistrés directement...

    concernant la recuperation des valeurs entrées je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onblur=\"form_ajax('$Table','$Field',this.value)\"
    mais apparment this.value n'est pas le bon terme à utiliser car j'ai l'erreur js "objet attendu"

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Salut,
    this.value se réfère à value de l'élément, c'est la bonne syntaxe mais je m'en doute avec $Table et $Field. Vérifie le code html généré.
    De plus:
    Citation Envoyé par DoubleU
    Clairement, non ce n'est pas la bonne méthode.

    Pourquoi ne pas simplement enregistrer tous tes champs une fois le formulaire correctement rempli et soumis?
    Je pense que dans ton cas, l'utilisation de AJAX n'est utile que pour faire une vérification coté serveur avant l'envoie du formulaire si c'est nécessaire.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Points : 177
    Points
    177
    Par défaut
    quelle serait la bonne methode ?

    voici ce que j'utilise actuellement comme ajax (qui ne fonctionne pas)
    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
     
    function form_ajax(table,champs,valeur)
    {
    	var OAjax;
    	if (window.XMLHttpRequest) OAjax = new XMLHttpRequest();
    	else if (window.ActiveXObject) OAjax = new ActiveXObject('Microsoft.XMLHTTP'); 
    	OAjax.open('POST',"../../traitement_form.php",true);
    	OAjax.onreadystatechange = function()
    	{
    		if (OAjax.readyState == 4 && OAjax.status==200)
    		{
    			if (document.getElementById) 
    			{	
    				if (OAjax.responseText =='true') {
    				alert(table+" "+champs+" "+valeur);	
    				document.getElementById('msg').innerHTML='';		
    				}else{
    				document.getElementById('msg').innerHTML=OAjax.responseText;
    				}
    			}
    		}
    	}
    	OAjax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    	OAjax.send('table='+table+'&champs='+champs+'&valeur='+valeur);
    }
    Code source de l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" width="32" id="nom" name="nom" maxlength="32" tabindex="2" title="Nom" value="[nom]" lang="fr" onblur="form_ajax('c_etatcivil2','nom',this.value)" />
    le Alert ne s'affiche pas

    merci de votre aide

  6. #6
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Si le alert ne s'affiche pas, c'est que tu ne rentres pas dans ton if car ton resoponseText ne vaut pas 'true', sans doute car dans ton script php, tu as quelque par un espace ou un saute de ligne avant ou apres les balises <?php ?>.

    Ca peut être d'autant plus difficile à trouver si tu fais de multiples inclusions de fichiers, il faut les regarder un par un.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Points : 177
    Points
    177
    Par défaut
    oui merci, j'ai trouvé l'erreur
    donc ça fonctionne maintenant

    en resumé :
    lorsque je sors du champs, cela appel la fonction ajax, qui active le script php d'insertion dans la bdd

    mais si je rempli un autre champ : ça me fait toujours un insert
    il faut donc que je créé une variable qui recupere le nouvel "id" inséré

    comment passer cette variable afin de la recupérée ensuite pour activer la requete update
    quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $derinsert = "<script language='Javascript'> document.getElementById('msg').innerHTML </script>";

Discussions similaires

  1. [AC-2007] Enregistrer champ Formulaire
    Par simo_w dans le forum Access
    Réponses: 1
    Dernier message: 20/10/2012, 09h14
  2. Enregistrer champs des formulaire
    Par jesuisla dans le forum Langage
    Réponses: 10
    Dernier message: 05/09/2009, 00h00
  3. Réponses: 8
    Dernier message: 26/05/2009, 12h18
  4. Réponses: 1
    Dernier message: 06/05/2009, 11h18
  5. Réponses: 1
    Dernier message: 15/01/2008, 15h27

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