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 :

[AJAX] Insertion de données (formulaire) dans une base Access : ASP JavaScript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 239
    Par défaut [AJAX] Insertion de données (formulaire) dans une base Access : ASP JavaScript
    Salut,

    J'ai récemment appris les langage ASP et Javascript et je cherche à entrer des informations saisies par formulaire dans une base de données Access...

    Je me suis pas mal promener sur le web mais je dois avouer que je frole l'overdose d' "incompréhension générale" vue que je commence à m'emmeler les méninges dans tous les sens.

    Mon problème est donc le suivant :

    fichier "ajouter_deplacement.ASP"

    1 champ text de saisie - 1 <div> contenant une référence "txtHint"
    1 boutton "Valider" avec un onClick -> function ValidForm

    ValiForm :

    1- Vérification que le champ text est non vide
    2- Vérification du BROWSER
    3- Envoi d'une requete au serveur (Je n'ai pas trop compris à quoi corresponde les paramètres : RequestHeader et ce que je vasi envoyer au serveur avec Send)
    4- Controle du State
    5- Envoi

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     <html>
    <head>
        <title>Acquisition de donnees </title>
    	<link rel="stylesheet" type="text/css" href="style2.css" />
    </head>
     
    <body>
     
    <div id="content">
    <form name="form_deplacement" action="" method="post">
    	<div class="AttachedForm"> Ajout d'un deplacement dans la base de donnees </div>
    		<div class="PositionForm">
    			<table>
    			<tr>
    			<td class="LabelForm"> <label for="nom_deplacement">Type de deplacement</label>: </td>
    			<td class="TextForm"> <input type="text" id="nom_deplacement" name="nom_deplacement"/></td>
    			<td class="AdviceForm"><div id="txtHint"></div></td>
    			</tr>
    			</table>
    		</div>
    	<div>
    			<input type="button" value="Valider" onClick="ValidForm(this.form_deplacement)"/>
    			<input type="reset" value="Retablir"/>
    	</div>
    </form>
     
     
    <script type="text/javascript">
     
    // Fonction d'insertion des données dans la base données
     
    function ValidForm(form){
    	if (form.length==0){ 
    		document.getElementById("txtHint").innerHTML="Champ Obligatoire !";
      		return;
      		}
      	else{	
    	xmlHttp=GetXmlHttpObject();
    	xmlHttp.open("post","/RequestASP.asp",true);
    	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    	xmlHttp.onreadystatechange = stateChanged;
    	xmlHttp.send("nom_deplacement="getElementById("nom_deplacement"));
    		}
    	}
     
    // Fonction de test du BROWSER
     
    function GetXmlHttpObject() {
    	var xmlHttp = null;
    	try { 
    		xmlHttp = new XMLHttpRequest(); }		// Firefox, Opera 8.0+, Safari
    	catch (e) {
    		try {
    	    	xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); }		// Internet Explorer 6.0+
    	  catch (e) {
    	    try {
    	      	xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); }		// Internet Explorer 5.5+
    	      catch (e) {
    	      	alert("Votre Explorateur Internet ne supporte pas la technologie AJAX !"); }
    	    }
    	  }
    	return xmlHttp;
    	}
     
    // Fonction de test du transfert des données au serveur
     
    function stateChanged() { 
    	if (xmlHttp.readyState==4 && xmlHttp.status == 200) {
    		document.getElementById("txtHint").innerHTML = xmlHttp.responseText;
    		}
    	}
     
    </script>
     
     
     
    </div>
     
    </body>
    </html>

    fichier "Request.ASP"

    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
     
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    <%option explicit %>
     
    <%
    Dim g_oConn
    Dim g_oRs
    Dim TempId
    Dim frm = Request.form
     
        Connect
        InsertData(Request.form)
        if TempId 
        Disconnect
     
     
     
    Sub Connect
        Set g_oConn = Server.CreateObject("ADODB.Connection")
        g_oConn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & Server.MapPath("base_test.mdb") & ";"
            On error resume next
            g_oConn.Open
            if g_oConn.State = 0 then
                Response.Write "La connexion à la base """ & Server.MapPath("base_test.mdb") & """ a échoué <br/>"
                Response.End        	
            End if
        On error goto 0
    End Sub
     
     
    Sub Disconnect
        If g_oConn.State = 1 then g_oConn.Close
        Set g_oConn = Nothing
    End Sub
     
     
    Sub InsertData(frm)
        Dim sql
     
    	    Set g_oRs = Server.CreateObject("ADODB.Recordset")
    	    sql = "INSERT INTO deplacements (nom_deplacement) VALUES ('" & frm("nom_deplacement") & "');"
        	g_oRs.Open sql, g_oConn, 3, 3
     
    		response.write("Le deplacement a été ajouté à la base !")
    End Sub
     
    Sub AfficheForm
        %>

    Si une ame charitable pouvait m'aider (en compréhension : lien vers explications / en programmation)...

    Merci

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par polothentik Voir le message
    Si une ame charitable pouvait m'aider (en compréhension : lien vers explications / en programmation)...
    Il manque un point essentiel : quelle est la question ou le problème qui te bloque ?

    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 239
    Par défaut
    Effectivement,

    et bien ce dont je suis sûr :

    // Dans le fichier ajouter_deplacement.asp
    function GetXmlHttpObject()
    function stateChanged()

    //Dans le fichier RequestASP.asp
    La procédure pour entrer des données dnas la base fonctionne !

    Ce dont je ne suis pas sûr :

    // Dans le fichier "ajouter_deplacement.asp"
    function ValidForm : Lorsque j'essaye de "valider" une donnée, je ne comprend pas ce que fait la fonction !! J'ai essayé de mettre un document.write dans le if, dans le else, avant le if .... RIEN NE S'AFFICHE !!

    De meme, je ne sais pas si ma condition pour détecter les champ vide est juste... elle me semble correcte !!??

    Enfin, je ne suis absolument pas sûr de la conformité de ma méthode POST. J'ai pu voir sur Internet qu'il existe beaucoup de configurations différentes pour setRequestHeader !!! Pourriez-vous m'en dire un peu plus ?

    Quant est-il de la 1ère ligne de code que l'on retrouve partout dans les fichiers (.asp) "response.expires=-1" ? Parfois, elle se retrouve sous la frome de plusieurs lignes ???

    Du coup, ça fait plein de questions et j'en suis désolé !!

    Merci pour tout (d'avance)

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    La fonction ValidForm() appelle via Akjax la page /RequestASP.asp en lui passant en paramètre "nom_deplacement="getElementById("nom_deplacement")
    Paramètre qui n'est pas bon : il manque le .value =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlHttp.send("nom_deplacement="getElementById("nom_deplacement").value);
    A réception de la réponse, elle lance stateChanged()
    De meme, je ne sais pas si ma condition pour détecter les champ vide est juste... elle me semble correcte !!??
    Non ! Elle teste le nombre de champ du formulaire (qui ne dépend pas des saisies de l'utilisateur).
    Il faut que tu testes les champs individuellement (cf. la FAQ Javascript).
    Quant est-il de la 1ère ligne de code que l'on retrouve partout dans les fichiers (.asp) "response.expires=-1" ? Parfois, elle se retrouve sous la frome de plusieurs lignes ???
    Cela force la regénération de la page (empêche l'utilisation du cache serveur).
    Personnellement, j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    response.expires = -1
    response.AddHeader "Pragma", "no-cache"
    response.AddHeader "cache-control", "no-store"
    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 239
    Par défaut
    Merci pour la rapidité de ta réponse !!

    Je me pose une question toute bete : "Est-ce qu'il faut déclarer quelque chose en en-tête de page ??

    J'utilise <script type="text/javascript"> --- </script> pour tout ce que j'écris en javascript !!

    je ne comprend pas pourquoi onClick il ne veut pas éxecuter ma fonction ValidForm !!

    Je cherche...

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par polothentik Voir le message
    je ne comprend pas pourquoi onClick il ne veut pas éxecuter ma fonction ValidForm !!
    Je pense qu'elle s'exécute !
    Pour t'en convaincre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function ValidForm(form){
    alert('Et oui !');
    	if (form.length==0){ 
    ...
    Mais comme le passage de paramètre n'est pas bon (est en cas de bugg serveur, même s'il l'est), soit la réponse n'arrive jamais, soit elle n'a aucun effet.

    A+

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

Discussions similaires

  1. insertion des données checkbox dans une base de données
    Par WIN76 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/01/2017, 17h28
  2. Réponses: 17
    Dernier message: 11/10/2013, 09h57
  3. Insertion des données Excel dans une base SQL-Server
    Par cedy-kassy dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 15/03/2012, 11h11
  4. [MySQL] insertion de données csv dans une base de données
    Par angelina88 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 12/12/2011, 00h57
  5. Insérer des données Excel dans une base Access ?
    Par MaTHieU_ dans le forum Access
    Réponses: 3
    Dernier message: 22/06/2005, 15h11

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