Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/03/2008, 12h02   #1
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
Par défaut 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 :
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 :
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
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 12h15   #2
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 522
Points : 15 522
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 13h00   #3
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
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)
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 14h00   #4
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 522
Points : 15 522
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 :
xmlHttp.send("nom_deplacement="getElementById("nom_deplacement").value);
A réception de la réponse, elle lance stateChanged()
Citation:
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).
Citation:
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 :
1
2
3
response.expires = -1
response.AddHeader "Pragma", "no-cache"
response.AddHeader "cache-control", "no-store"
A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 14h38   #5
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
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...
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 14h42   #6
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 522
Points : 15 522
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 :
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+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 14h43   #7
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 522
Points : 15 522
.... au fait : il faudrait passer toute ta partie <script type="text/javascript">...</script> dans le <head> de ta page ...

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 14h50   #8
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
Mais il est bien là le souci, c'est que j'y ai pensé à mettre un alert où un document.write("blabla")... Mais....rien du tout !!

Je cherche...
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 15h04   #9
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 522
Points : 15 522
Citation:
Envoyé par polothentik Voir le message
Mais il est bien là le souci, c'est que j'y ai pensé à mettre un alert où un document.write("blabla")... Mais....rien du tout !!
Alors c'est que ton code JS a planté avant l'appel (peut être au chargement de la page).
Un message d'erreur ?
Sont ils activés ?
Les autres codes JS continuent à fonctionner ?

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 15h13   #10
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
Si je place un document.write dans la partie <body> de la page (les fonctions en javascript étant dans le <head>), il s'affiche parfaitement bien!

Pas de message d'erreur lors du chargement de la page ou après le button click (J'ai l'impression qu'il ne prend pas en compte mon onClick (onClick ou onclick ??))

Merci
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 15h31   #11
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 522
Points : 15 522
Citation:
Envoyé par polothentik Voir le message
Pas de message d'erreur lors du chargement de la page ou après le button click (J'ai l'impression qu'il ne prend pas en compte mon onClick (onClick ou onclick ??))
onclick !!
Contrairement à une vieille habitude, tout doit être en minuscule en ... HTML

Un doute :
Code :
onclick="ValidForm(this.form)"
ne fonctionnerait pas mieux ?

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 15h40   #12
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
J'ai apporté toute les corrections que tu m'as précisées précédemment :

Code formulaire :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form name="form" 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)"/>
			<input type="reset" value="Retablir"/>
	</div>
</form>

Code complet :

Code :
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
81
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 
<html>
<head>
    <title>Acquisition de donnees </title>
	<link rel="stylesheet" type="text/css" href="style2.css" />
	<script type="text/javascript">
 
// Fonction d'insertion des données dans la base données
	function ValidForm(form){
	alert('Et oui !');
	if (document.getElementById('nom_deplacement').value == ""){
		document.getElementById('txtHint').innerHTML='Ce champ est obligatoire !';
  		return false;
  		}
  	//return true;
 
 
	var 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').value);
		}
	}
 
// 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>
 
</head>
 
<body>
<div id="content">
<form name="form" 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)"/>
			<input type="reset" value="Retablir"/>
	</div>
</form>
 
 
</div>
 
</body>
</html>
Je me permet de faire un up de ma question :"Y a t-il un entête spécifique à déclarer pour que le navigateur (IE pour ma part) puisse lire le javascript ?"
Je dirais que non vu que j'arrive à écrire du javascript dans la apge dans les balise <script>..

Na gros Bobo les neurones
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 16h12   #13
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 522
Points : 15 522
Citation:
Envoyé par polothentik Voir le message
"Y a t-il un entête spécifique à déclarer pour que le navigateur (IE pour ma part) puisse lire le javascript ?"
Je dirais que non vu que j'arrive à écrire du javascript dans la apge dans les balise <script>..
Ah oui, pardon

Le doctype n'intervient directement que sur le code HTML (et css ?). Par contre, si ton html n'est pas considéré comme valide, du coup ça peut effectivement "influencer" le JS ...

Le code JS doit être commenté en stric, d'ailleurs je crois
Code :
1
2
3
4
5
<script type="text/javascript">
<!--
code JS
-->
</script>
Tu as essayé en transitionnal ?

A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 16h33   #14
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
J'ai essayé en strict <!-- et //-->
Si transitional consiste à rajouter language="javascript", j'ai donc aussi essayé

En me promenant sur Internet, j'ai vu pas mal de post sur le fait qu'il vaut mieux mettre le javascript dans un fichier annexe : ce que j'ai fait !

Je maintient que mon gros souci vient du onclick...

Quel DocType utilises-tu habituellement ?? Peux-tu me le poster stp ??

Merci
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2008, 17h34   #15
Responsable Modération
 
Homme
Inscription : janvier 2007
Messages : 9 316
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 : 9 316
Points : 15 522
Points : 15 522
Citation:
Envoyé par polothentik Voir le message
J'ai essayé en strict <!-- et //-->
Si transitional consiste à rajouter language="javascript", j'ai donc aussi essayé
Non, ça consiste surtout à changer l'en-tête DOCTYPE, et à respecter les normes de développement associées (cf. le W3C et son Validator)

Code :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
A+
E.Bzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2008, 11h00   #16
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
Par défaut Appel de fonction javascript impossible !?!?!

Salut,

Tout d'abord, un grand merci à tous ceux qui jusqu'à lors se sont penchés sur mon problème !

Un petit récapitulatif : L'objectif est de remplir un formulaire contenu dans une page "ajouter_deplacement.asp", à la validation d'un <input> de type "button" et via une commande "onclick", une fonction de validation du formulaire est appellée. Celle-ci est contenu dans un fichier "test.js".

Dans un 1er temps, cette fonction test si le champ "text" est rempli et renvoye un message d'erreur via une cible nommée "txtHint" s'il ne l'est pas.
Dans un 2nd temps, cette fonction fait appel à une fonction permettant de tester le "BROWSER" de l'utilisateur puis envoye une requête au serveur de type "POST". Execution du code asp contenu dans le fichier "Request.asp" chargé d'insérer le contenu du champ "txt" dans une base de données.

Le problème survient lors de l'appel de la fonction de validation du formulaire "ValidForm(this.form)". Une commande "alert" a été rajoutée dans la fonction ValidForm (fichier "test.js") avant toutes condition mais ce message ne s'affiche pas !!!!

Une commande javascript dans la page "ajouter_deplacement.asp" s'effectue parfaitement !!
Le doctype de cette même page est de type transitionnal pour XHTML 1.0 !!
Aucun message d'erreur ne s'affiche, seulement aucune execution de la fonction !!
Il n'y a pas de doctype dans les fichiers "test.js" et "RequestASP.asp" (faut-il en mettre ?)

Quelqu'un pourrait-il m'aider à résoudre ce problème d'appel de la fonction "ValidForm" ? Si queuqu'un arrivait à faire fonctionner le lein entre les fichiers "ajouter_deplacement.asp" et "test.js" chez lui, je serais rassuré !! Je ne comprend pas d'où vient l'erreur !

Merci d'avance pour la lecture de ce post tout à fait indigeste !!

fichier "ajouter_deplacement.asp" :

Code :
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
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html>
<head>
    <title>Acquisition de données </title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
	<link rel="stylesheet" type="text/css" href="style2.css" />
	<script src="test.js" type="text/javascript">
	</script>
</head>
 
<body>
<div id="content">
<form name="form" action="" method="post">
	<div class="AttachedForm"> Ajout d'un déplacement dans la base de données </div>
		<div class="PositionForm">
			<table>
			<tr>
			<td class="LabelForm"> <label for="nom_deplacement">Type de déplacement</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)"/>
			<input type="reset" value="Rétablir"/>
			<script type="text/javascript">
			<!--
			alert("test");
			//-->
			</script>
	</div>
</form>
 
 
</div>
 
</body>
</html>

fichier "test.js"

Code :
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
 
// Fonction d'insertion des données dans la base données
	function ValidForm(form) {
	alert('Ca marche enfin !');
	if (document.getElementById('nom_deplacement').value == "") {
		document.getElementById('txtHint').innerHTML='Ce champ est obligatoire !';
  		return false;
  		}
  	//return true;
 
	else {
	var xhr = GetXmlHttpObject();
	xhr.open('post','RequestASP.asp',true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xhr.onreadystatechange = stateChanged;
	xhr.send('nom_deplacement='getElementById('nom_deplacement').value);
		}
	}
 
// Fonction de test du BROWSER
 
function GetXmlHttpObject() {
	var xhr = null;
	try { 
		xhr = new XMLHttpRequest(); }		// Firefox, Opera 8.0+, Safari
	catch (e) {
		try {
	    	xhr = new ActiveXObject('Msxml2.XMLHTTP'); }		// Internet Explorer 6.0+
	  catch (e) {
	    try {
	      	xhr = new ActiveXObject('Microsoft.XMLHTTP'); }		// Internet Explorer 5.5+
	      catch (e) {
	      	alert('Votre Explorateur Internet ne supporte pas la technologie AJAX !'); }
	    }
	  }
	return xhr;
	}
 
// Fonction de test du transfert des données au serveur
 
function stateChanged() { 
	if (xhr.readyState==4 && xhr.status == 200) {
		document.getElementById('txtHint').innerHTML = xhr.responseText;
		}
	}

fichier "RequestASP.asp" :

Code :
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%option explicit %>
 
<%
' Regénération de la page (empêche l'utilisation du cache serveur)
response.expires = -1
response.AddHeader "Pragma", "no-cache"
response.AddHeader "cache-control", "no-store"
 
Dim g_oConn
Dim g_oRs
Dim TempId
Dim frm = Request.form
 
    Connect
    InsertData(Request.form) 
    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
    %>
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2008, 00h38   #17
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
Salut,

Je me permet de faire un petit UP de mon problème vu que je suis tout bloqué....

Merci d'avance pour un petit test de ma programmation !!
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2008, 17h29   #18
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
Salut,

J'ai réalisé plusieurs tests notamment celui de faire appel à la fonction GetXmlHttpObject() et d'essayer d'afficher le contenu de la variable xhr par un document.write(xhr) ...

Il m'affiche le mot "undefined" !!

Si quelqu'un à une explication ou même la solution ...

Merci

la page d'affichage "ajouter_deplacement.asp :

Code :
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
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html>
<head>
    <title>Acquisition de données </title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<link rel="stylesheet" type="text/css" href="style_ajouter_deplacement.css" />
	<script type="text/javascript" src="JavaScript/test.js"></script>
</head>
 
<body>
<div id="content">
<p> Ajout d'un déplacement dans la base de données :</p>
<form name="form" action="" method="post" class="PositionForm">
	<table>
		<tr>
		<td class="LabelForm"> <label for="nom_deplacement">Type de déplacement</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>
		<input type="button" value="Valider" onclick="validForm(this.form)"/>
		<input type="reset" value="Rétablir"/>
	</div>
</form>
 
 
</div>
 
</body>
</html>

La page contenant les fonction JavaScript pour le test :

Code :
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
 
/* Fonction de validation du formulaire */
 
function validForm(form) {
	if (document.getElementById('nom_deplacement').value == "") {
		document.getElementById('txtHint').innerHTML='Ce champ est obligatoire !';
  		return false;
  		}  	
	else {
		var xhr = GetXmlHttpObject();
		//xhr.open('post','RequestASP.asp',true);
		//xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		//xhr.onreadystatechange = stateChanged;
		//xhr.send('nom_deplacement='getElementById('nom_deplacement').value);
		return document.write(xhr);
		}
	}
 
 
 
/* Fonction de test du BROWSER */
 
function GetXmlHttpObject() {
	var xhr = null;
	try { 
		xhr = new XMLHttpRequest();
		}		// Firefox, Opera 8.0+, Safari
	catch (e) {
		try {
	    	xhr = new ActiveXObject('Msxml2.XMLHTTP');
	    	}		// Internet Explorer 6.0+
		catch (e) {
		    try {
		      	xhr = new ActiveXObject('Microsoft.XMLHTTP');
		      	}		// Internet Explorer 5.5+
		    catch (e) {
	      		alert('Votre Explorateur Internet ne supporte pas la technologie AJAX !');
	      		}
	    	}
	  	}
	return xhr;
	}
 
 
 
/* Fonction de test du transfert des données au serveur */
 
function stateChanged() { 
	if (xhr.readyState == 4 && xhr.status == 200) {
		document.getElementById('txtHint').innerHTML = xhr.responseText;
		}
	}
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2008, 09h59   #19
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
Salut,

Je poursuis dans mon monologue ! Je vais finir par le resoudre par moi même ce problème... héhé !

La situation s'est grandement améliorée... disons que j'ai pas mal débuggé le fichier "test.js". Ca ne marche toujours pas vous l'aurez bien compris, j'ai donc 2 questions !

Après une série de test en bataille, je suis sûr de ma fonction validForm (la partie if fonctionne, l'ordre d'appel des fonctions dans la partie else est le même que tout ce que j'ai pu trouver sur Internet et les fonctions sont conformes à la méthode POST)


1ere question : Je ne comprend pas la formulation des données que j'envoie... Cette formulation est-elle formalisée ?? Comment vais-je devoir traiter les données que j'envoie dans le fichier "RequestASP.asp" ?? C'est principalement le 'nom_deplacement=' qui me perturbe car pour moi il ne sert à rien !!

Code :
1
2
3
var data = 'nom_deplacement=' + getElementById('nom_deplacement').value;
[...]
xhr.send(data);
2ème question : Que doit contenir (ou comment doit être structuré) mon fichier "RequestASP.asp" pour recevoir les données que je lui envoie sous la variable data?? L'objectif final est d'entrer des données dans une Base De Données !

Merci d'avance pour toute vos réponse

fichier "test.js" updated :

Code :
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
function validForm(form) {
	if (document.getElementById('nom_deplacement').value == "") {
		document.getElementById('txtHint').innerHTML = 'Ce champ est obligatoire !';
  		return false;
  		}
	else {
		var xhr = GetXmlHttpObject();
		xhr.onreadystatechange = reportStatus();											//Fonction de suivi de l'état de la requête
		xhr.open('post','ajouter_deplacement.asp',true);									//'post' : méthode / '***' : URL absolue ou relative de la page XML / true : pour asynchrone
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');			//Fonction appartenant à la méthode POST
		var data = 'nom_deplacement=' + document.getElementById('nom_deplacement').value;
		xhr.send(data);
		}
	}
 
 
// Fonction de test du BROWSER
 
function GetXmlHttpObject() {
	var xhr = null;
	try { 
		xhr = new XMLHttpRequest();		// Firefox, Opera 8.0+, Safari
		}
	catch (err) {
		try {
	    	xhr = new ActiveXObject('Msxml2.XMLHTTP');		// Internet Explorer 6.0+
	    	//var test = "xhr IE6";
	    	//document.getElementById('txtHint').innerHTML = test.responseText;
	    	}
	  	catch (err) {
	  		try {
	      		xhr = new ActiveXObject('Microsoft.XMLHTTP');		// Internet Explorer 5.5+
	      		}
	      	catch (err) {
	      		alert('Votre Explorateur Internet ne supporte pas la technologie AJAX !');
	      		}
	    	}
		}
	return xhr;
	}
 
 
// Fonction de test du transfert des données au serveur
 
function reportStatus() { 
	if (xhr.readyState == 4 && xhr.status == 200) {									//readyState --> 0 : uninitialized / 1 : Open / 2 : Sent / 3 : Receiving / 4 : Loaded
		document.getElementById('txtHint').innerHTML = xhr.responseText;
		}
	}

fichier ajouter_deplacement.asp" (inchangé) :

Code :
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
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html>
<head>
    <title>Acquisition de données </title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<link rel="stylesheet" type="text/css" href="style_ajouter_deplacement.css" />
	<script type="text/javascript" src="test.js"></script>
</head>
 
<body>
<div id="content">
<p> Ajout d'un déplacement dans la base de données :</p>
<form name="form" action="" method="post" class="PositionForm">
	<table>
		<tr>
		<td class="LabelForm"> <label for="nom_deplacement">Type de déplacement</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>	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		<input type="button" value="Valider" onclick="validForm(this.form)"/>
		<input type="reset" value="Rétablir"/>
	</div>
</form>
 
 
</div>
 
</body>
</html>
fichier "Request.ASP" (sans doute à modifier) :

Code :
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%option explicit %>
 
<%
' Regénération de la page (empêche l'utilisation du cache serveur)
response.expires = -1
response.AddHeader "Pragma", "no-cache"
response.AddHeader "cache-control", "no-store"
 
Dim g_oConn
Dim g_oRs
Dim TempId
Dim frm = Request.form
 
    Connect
    InsertData(Request.form) 
    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
    %>
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2008, 16h34   #20
Membre du Club
 
Inscription : mars 2008
Messages : 234
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 234
Points : 46
Points : 46
Salut,

Est-ce qu'il vaut mieux programmer le fichier de connexion et d'insertion de données dans la base de données access en ASP ou PHP ?

Le PHP semble plus facile à manier (et on le rencontre plus souvent que l'ASP sur le web dans les exmples)

Help !
polothentik est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h42.


 
 
 
 
Partenaires

Hébergement Web