[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:
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
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 :aie: !
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 !!!! 8O
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 !! :aie:
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
%> |