Au Fil du Temps


Accueil

***** Gestion d'une Table Cliente *****
XML / JAVASCRIPT / DHTML



Environnement : Windows XP (avec droit Admin) Navigateur : Internet Explorer Niveau : Débutant confirmé Description : Gestion simplifiée d'une base cliente en mode local."Nom,Prenom,Adresse,...". Utilisation d'un fichier XML comme unité de stockage. Opérations usuelles : Ajout, Suppression , Modification , Annulation et sauvegarde, et un compteur de page dynamique pour parcourir la table.Si aucune base n'existe,le programme génère automatique un modèle avant toutes opérations. Particularité : Msxml en natif.Utilisation de la balise <xml> pour l'intégration des données dans la page html. Bug : Accés refusé pour la sauvegarde en local de la base xml à l'appel de la méthode save du composant Msxml2.DOMDocument. Comme alternatif,j'ai utilisé le FSO du WSH.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > <HTML> <HEAD> <TITLE>[ Base Abonné ]</TITLE> <META name=VI60_defaultClientScript content=JavaScript> <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <SCRIPT type="text/javascript" language="javascript"> /* --------- Variables globales --------------*/ var ITEMTAGNAME = "abonne"; var LABELCOL = new Array("num_abonne","Nom","Prenom","Adresse","Code_Postal","Ville","Telephone"); // LABELCOL = Label des colonnes selon la structure d'un noeud abonné. La casse est respectée var MAXREC = 0; // Nombre d'abonnés dans la "base" - Initialisé au chargement var TABROW = 20; // Nombre d'enregistrement par page [ TABROW = PAGE ] var DEBINDEX = 0; // Debut de Lecture des items DEBINDEX est selon l'ordre inscrite dans la base var FININDEX = 0; // Fin de Lecture des items FININDEX est selon l'ordre inscrite dans la base var PAGE = 20; // Par défaut 20 items (video) par Lecture [ PAGE = TABROW ] var CPTPG = 1; // Compteur de page x / MAXPG -Initialisé au chargement voir initCPTPG() var MAXPG = 0; // Compteur de page MAXREC / PAGE -Initialisé au chargement voir initCPTPG() var NUMRECMAJ = 0; // Numéro element selectionné pour une mise à jour var noderec = null; // Utiliser pour la création d'un nouveau abonne var ENCODAGE = "iso-8859-1"; // codage des caractères var FILEDBABN = "dbabonne.xml"; // Localisation de la Base Abonne // ex syntaxe : Répertoire courant = "dbabonne.xml" // Autre chemin existant = "c:\\database\\dbabonne.xml" // -------------- ListSelectRec(numero) ----------------------- // Description : Manipulation sur l'enregistrement sélectionné (clické) // Entree : Numero abonne // Sortie : Affichage d'une seule ligne pour toutes manipulations : // Ajout,Suppression,Modification,Annulation,Sauvegarde // Appel de Fonction : majItemRec() - Modification de l'enregistrement // delitemrec() - Suppression de l'enregistrement // AnnulerItemRec() - Annulation des modifications en cours // REM: : L'enregistrment sur disque est effectuée pour chaque opération //------------------------------------------------------------- function ListSelectRec(numero) { if(ListSelectRec.caller.toString().match(/addItemRec/i)) // Pour l'ajout d'un nouveau abonne { delrec(); addrec(TDBXML.rows.length) ; // une seule ligne à manipuler pour toutes opérations [debut index = 0] var strIMG = "<BR><BR><DIV id=divselectopt align=center><IMG id=imgretourpg SRC='img/icoleft1.bmp' " + "title='Retour à la page' style='HEIGHT: 20px;cursor:hand' height=20 " + " onclick='javascript:retourpg();'></IMG>" + "  <IMG SRC='img/icorec.bmp' title='Mise à jour dans la base' style='HEIGHT:20px;cursor:hand'"+ " height=20 onclick='javascript:majItemRec();'></IMG></DIV>" } else { var oNode = GetItemRec(numero); if(!oNode){ txtNumero.style.backgroundColor = "red"; return;} var xmldoc = GetXMLDocument(oNode.xml) delrec(); GetRec(0,1,xmldoc) // Une ligne pour une selection var strIMG = "<BR><BR><DIV id=divselectopt align=center><IMG id=imgretourpg SRC='img/icoleft1.bmp'" + " title='Retour à la page' style='HEIGHT: 20px;cursor:hand' height=20 onclick='javascript:retourpg();'>" + " </IMG><IMG SRC='img/icorec.bmp' title='Mise à jour dans la base' style='HEIGHT: 20px;cursor:hand'" + " height=20 onclick='javascript:majItemRec();'>" + "<IMG SRC='img/icoundo.bmp' title='Annuler' style='HEIGHT: 20px;cursor:hand' height=20 " + " onclick='javascript:AnnulerItemRec();'></IMG><IMG SRC='img/icodel.bmp' title='Supprimer'" + " style='HEIGHT: 20px;cursor:hand' height=20 onclick='javascript:delitemrec();'></IMG></DIV>" } if(document.getElementById("divselectopt")) var ret = document.getElementById("divopt").removeChild(divselectopt); document.getElementById("TRREC0").onmouseout = null; document.getElementById("TRREC0").onclick = null; document.getElementById("TRREC0").onkeydown = null; divopt.innerHTML = ""; divopt.innerHTML = strIMG; document.getElementById("TRREC0").all.tags("INPUT").item(0).onkeyup = numcode_onkeyup; } /* --------------------------------[ GETREC(deb_index,fin_index,xmldoc) ]------------------------------- Description: Lecture des enregistrements par PAGE Entree: - deb_index : debut de position pour la lecture d'enregistrement - fin_index : fin de position pour la lecture d'enregistrement - xmldoc : Document xml correspondant à un noeud d'abonné Sortie: - Récupération des données (num_video,Nom,Prenom,..)pour chaque abonné Appel de fonctions: - Fonction addrec(integer) . Création et insertions des lignes pour chaque enregistrement l'affichage est effectuée sous la Table TDBXML Rem: Ci-dessous la structure d'un enregistrement (noeud ou item) pour un abonné <abonne> <num_abonne></num_abonne> <Nom></Nom> <Prenom></Prenom> <Adresse></Adresse> <Code_Postal></Code_Postal> <Ville></Ville> <Telephone></Telephone> </abonne> ..... Utilisation : Par defaut les lectures se font par PAGE (20 items) et les INDEX debutent à 0 - GetRec(0,20) Lecture de 20 items - GetRec(5,15) Lecture de 10 items à partir du 5ième ------------------------------------------------------------------------------------------------*/ function GetRec(deb_index,fin_index,XMLDOC) { var NBREC = fin_index - deb_index; try{ for(i=0;i<NBREC;i++) // Création des lignes dans la Table TDBXML selon la valeur PAGE addrec(i); if(fin_index > 1 && fin_index <= PAGE ) // Cas avec base vide et création premiers elements fin_index = MAXREC; // MAXREC et fin_index <= PAGE else { if(fin_index != 1) // Récupération des elements dans la base. { // fin_index = 1 : Opération sur element ou nouveau element deb_index = (CPTPG - 1) * PAGE; fin_index = deb_index + (MAXREC - ((CPTPG - 1) * PAGE)); } } var objNodes = XMLDOC.getElementsByTagName(ITEMTAGNAME); // Récupération par tranche des items var row = -1; // index des lignes à partir de 0 for(var i=deb_index;i<fin_index;i++) { row++; for(var j=0;j<objNodes.item(i).childNodes.length;j++) { var champ = document.getElementById("TRREC" + row).all.tags("INPUT"); if(champ.item(j).id == LABELCOL[j]) // Contrôle supplémentaire selon le libellé champ.item(j).value = objNodes.item(i).childNodes.item(j).text; else { champ.item(j).value = "**Erreur**"; } // Insertions des données selon la correspondance } } }catch(e){ } } // ---------- Efface l'affichage en cours des enregistrements --------- function delrec() { while(TDBXML.rows.length > 0) var ret = TBODYREC.deleteRow(0); } /* --------------------------------[ addrec(row) ]------------------------------- Entree: - row : Numero d'index ( index d'un noeud = index d'une ligne dans la Table TDBXML) Sortie: - Création lignes indépendantes et zone de champs pour chaque attribut d'un element ----------------------------------------------------------------------------*/ function addrec(row) { var objTR =TDBXML.insertRow(); var objTD0 = document.createElement("TD"); var objTD1 = document.createElement("TD"); var objTD2 = document.createElement("TD"); var objTD3 = document.createElement("TD"); var objTD4 = document.createElement("TD"); var objTD5 = document.createElement("TD"); var objTD6 = document.createElement("TD"); objTR.id = "TRREC" + row; objTD0.id = "TDREC0" + row; objTD1.id = "TDREC1" + row; objTD2.id = "TDREC2" + row; objTD3.id = "TDREC3" + row; objTD4.id = "TDREC4" + row; objTD5.id = "TDREC5" + row; objTD6.id = "TDREC6" + row; document.getElementById(objTR.id).appendChild(objTD0); document.getElementById(objTR.id).appendChild(objTD1); document.getElementById(objTR.id).appendChild(objTD2); document.getElementById(objTR.id).appendChild(objTD3); document.getElementById(objTR.id).appendChild(objTD4); document.getElementById(objTR.id).appendChild(objTD5); document.getElementById(objTR.id).appendChild(objTD6); document.getElementById(objTD0.id).innerHTML = "<INPUT id=num_abonne name=num_abonne style='WIDTH: 66px; HEIGHT: 22px; BACKGROUND-COLOR: darkgray' size=11></INPUT>"; document.getElementById(objTD1.id).innerHTML = "<INPUT id=Nom name=Nom style=' WIDTH: 150px; HEIGHT: 22px; BACKGROUND-COLOR: darkkhaki' size=25></INPUT>" ; document.getElementById(objTD2.id).innerHTML = "<INPUT id=Prenom name=Prenom style=' WIDTH: 114px; HEIGHT: 22px; BACKGROUND-COLOR: darkkhaki' ></INPUT>" ; document.getElementById(objTD3.id).innerHTML = "<INPUT id=Adresse name=Adresse style=' WIDTH: 205px; HEIGHT: 22px; BACKGROUND-COLOR: darkkhaki' size=39></INPUT>" ; document.getElementById(objTD4.id).innerHTML = "<INPUT id=Code_Postal name=Code_Postal style='WIDTH:89px; HEIGHT:22px; BACKGROUND-COLOR:darkkhaki' size=17></INPUT>"; document.getElementById(objTD5.id).innerHTML = "<INPUT id=Ville name=Ville style=' WIDTH: 114px; HEIGHT: 22px; BACKGROUND-COLOR:darkkhaki' ></INPUT>" ; document.getElementById(objTD6.id).innerHTML = "<INPUT id=Telephone name=Telephone style=' WIDTH: 114px; HEIGHT: 22px; BACKGROUND-COLOR: darkkhaki' ></INPUT>" ; document.getElementById(objTR.id ).onmouseover = colorbkover; document.getElementById(objTR.id ).onmouseout = colorbkout; document.getElementById(objTR.id ).onkeydown = NoEditTR; document.getElementById(objTR.id ).onclick = selectItemRec; } // -------- champ non editable ------------------- function NoEditTR() { if(window.event.keyCode != 9 ) return false; } // -- Recherche et retourne le noeud correspondant au numéro abonné -------- function GetItemRec(numero) { try{ var oNode = dbXML.selectSingleNode("//abonne[num_abonne = " + numero + "]"); }catch(e){ return null;} return oNode; // null si numero inexistant } /* --------------------------------[ majItemRec() ]------------------------------- Description: - Opération de mise à jour sur l'enregistrement sélectionné Si le numéro d'abonné est modifié ou un nouveau est créé, le noeud sera inséré selon l'ordre croissant numérique. Entree: - Sortie: - Sauvegarde de la base sur disque aprés opération de modification Appel de fonction: - MajChampItemRec(noderec) : ----------------------------------------------------------------------------*/ function majItemRec() { var numero = document.getElementById("TRREC0").all.tags("INPUT").item(0).value; var strMess = ""; if(GetItemRec(numero) && numero != NUMRECMAJ) { document.getElementById("TRREC0").all.tags("INPUT").item(0).style.backgroundColor = "red"; alert("Le numéro : " + numero + " est déjà inscrit dans la base"); return; } else { if(numero != NUMRECMAJ) strMess = "\n\nNUMERO : " + NUMRECMAJ + " -> " + numero ; if(numero == "") { document.getElementById("TRREC0").all.tags("INPUT").item(0).style.backgroundColor = "red"; return; } } var blnret = window.confirm("Mise à jour dans la base sans annulation ?" + strMess); if(blnret == false) return; noderec = GetItemRec(numero); if(noderec) // Mise à jour avec le même numero { MajChampItemRec(noderec); savexml(dbXML.xml,FILEDBABN); // Mise à jour de la base sur disque } else // Mise à jour avec un autre numero { var docElem = dbXML.documentElement; try{ var oNode = docElem.selectSingleNode("//abonne[num_abonne > " + numero + "]"); }catch(e){} noderec = GetItemRec(NUMRECMAJ); // Récupération du noeud selectionne et mise à jour des champs MajChampItemRec(noderec); // Mise à jour des champs du noeud selectionne if(oNode) // Insertion d'un noeud selon l'odre croissant var oDoc = docElem.insertBefore(noderec,oNode); // oDoc = noderec si OK else // Insertion d'un noeud en fin de liste si numero superieur auc autres var oDoc = docElem.insertBefore(noderec,docElem.lastchild); // oDoc = noderec si OK if(oDoc) { NUMRECMAJ = -1; savexml(dbXML.xml,FILEDBABN); // Mise à jour de la base sur disque } } MAXREC = dbXML.getElementsByTagName(ITEMTAGNAME).length; } function MajChampItemRec(noeudAbn) { if(!noeudAbn) { noderectmp = itemRecXML.cloneNode(true); //true = arborescence du noeud <video>...</video> noderec = noderectmp.selectSingleNode("//abonne"); } for(var j=0;j<noderec.childNodes.length;j++) { var champ = document.getElementById("TRREC0").all.tags("INPUT"); if(champ.item(j).id == LABELCOL[j]) // Contrôle supplémentaire selon le libellé { noderec.childNodes.item(j).text = champ.item(j).value; champ.item(j).style.backgroundColor = "lightsteelblue"; } // Insertions des données selon la correspondance } } function savexml(strXML,strFILEDB) { var Path = window.document.location.pathname; var strPath = Path.substr(1,(Path.length - 1) - objFS.GetFileName(Path).length ); strPath = strPath.replace(/\\/g,"\\\\"); var objxmldoc = GetXMLDocument(strXML); var objxmldocelem = objxmldoc.documentElement; strPI = "<?xml version=\"1.0\" encoding=\"" + ENCODAGE + "\"?>"; // Ajout entête xml + Encodage strXML = strPI + String.fromCharCode(13,10) + objxmldocelem.xml; if(strFILEDB.match(/:\\/i)) var strSaveXML = strFILEDB; else var strSaveXML = strPath + strFILEDB; strSaveXML = strSaveXML.replace(/%20/g," "); try{ var objFile = objFS.OpenTextFile(strSaveXML, 2, true); // Création d'un nouveau fichier ASCII objFile.Write(strXML); objFile.Close(); }catch(e){ alert("Erreur de création sur : " + strSaveXML + "\n" + e.description + "\n\n" + " Vérifier que le répertoire existe"); return;} } function delitemrec() { if( document.getElementById("TRREC0").all.tags("INPUT").item(0).value != NUMRECMAJ ) { alert("La suppression est réalisée qu'avec le numéro sélectionné.");return;} var blnret = window.confirm("Suppression définitive du Numéro : " + NUMRECMAJ + " ?"); if(blnret == false) return; var objnoderec = GetItemRec(NUMRECMAJ); var docelem = dbXML.documentElement; var xmlabn = docelem.removeChild(objnoderec); savexml(docelem.xml,FILEDBABN) /* Mise à jour compteur selon suppression dans la première PAGE ou dernière PAGE*/ MAXREC = dbXML.getElementsByTagName(ITEMTAGNAME).length; if(CPTPG == MAXPG) // dernière PAGE { DEBINDEX--; FININDEX--; if( (FININDEX % PAGE) == 0) CPTPG-- ; } initCPTPG(PAGE,MAXREC,CPTPG); retourpg(); } function AnnulerItemRec(){ ListSelectRec(NUMRECMAJ) } function selectItemRec() { txtNumero.value = document.getElementById(this.id).all.tags("INPUT").item(0).value NUMRECMAJ = txtNumero.value; ListSelectRec(txtNumero.value) } function numcode_onkeyup() { document.getElementById("TRREC0").all.tags("INPUT").item(0).style.backgroundColor = "darkgray"; var numero = document.getElementById("TRREC0").all.tags("INPUT").item(0).value; if(isNaN(numero)) document.getElementById("TRREC0").all.tags("INPUT").item(0).value = numero.substring(0,numero.length - 1) } function colorbkover() { var champ = document.getElementById(this.id).all.tags("INPUT"); for(var i=1;i<champ.length;i++) champ.item(i).style.backgroundColor = "white"; txtNumero.style.backgroundColor = "darkgray"; } function colorbkout() { var champ = document.getElementById(this.id).all.tags("INPUT"); for(var i=1;i<champ.length;i++) champ.item(i).style.backgroundColor = "darkkhaki"; var height = parseInt(video.style.height.substr(0,video.style.height.length - 2)) - 10; } function initCPTPG(ROWPAGE,NBREC,COMPTEUR) //Initialisation du compteur de PAGE { if(NBREC == 0) COMPTEUR = 0 ; var nbpage = NBREC/ROWPAGE; if(nbpage > parseInt(NBREC/ROWPAGE)) nbpage = parseInt(NBREC/ROWPAGE) + 1; MAXPG = nbpage; NBPG.innerHTML = COMPTEUR + " / " + MAXPG; } // un Document XML est crée à partir d'une syntaxe xml. function GetXMLDocument(strXML) { var msxmldoc = new ActiveXObject("Msxml2.DOMDocument"); msxmldoc.async = false; msxmldoc.resolveExternals = false; msxmldoc.validateOnParse = false; msxmldoc.loadXML(strXML) ; return msxmldoc;  } function retourpg() { divopt.innerHTML = ""; initCPTPG(PAGE,MAXREC,CPTPG); if(MAXREC <= PAGE) { pgPrec.click(); } else { delrec(); GetRec(DEBINDEX ,FININDEX,dbXML); } video.focus(); NUMRECMAJ = 0; } </SCRIPT> <SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript> <!-- function window_onload() { // Initialisation variable,compteur de page et affichage d'une Page d'enregistrement CreateDB(FILEDBABN); // Création d'une base vide si inexistant DEBINDEX = 0; FININDEX = PAGE; MAXREC = dbXML.getElementsByTagName(ITEMTAGNAME).length; initCPTPG(PAGE,MAXREC,CPTPG) GetRec(DEBINDEX ,FININDEX,dbXML); } /* -------------------------[ COMPTEUR DE PAGE ]------------------ Description: - Affiche une Page d'abonnée par tranche de 20(par défaut) . Appel de fonction : - pgSuiv() * Page suivante - pgPrec() * Page précédente - firstpg() * Première Page - lastpg() * Dernière Page -------------------------------------------------------------------*/ function pgSuiv_onclick() { MAXREC = dbXML.getElementsByTagName(ITEMTAGNAME).length; if(MAXREC <= PAGE) return; divopt.innerHTML = ""; DEBINDEX = FININDEX; FININDEX = DEBINDEX + PAGE; // PAGE = 20 par defaut if(FININDEX > MAXREC) { DEBINDEX = MAXREC - PAGE; FININDEX = MAXREC CPTPG = MAXPG; } else CPTPG++; initCPTPG(PAGE,MAXREC,CPTPG); delrec(); GetRec(DEBINDEX ,FININDEX,dbXML) } function pgPrec_onclick() { divopt.innerHTML = ""; DEBINDEX -= PAGE; FININDEX -= PAGE; MAXREC = dbXML.getElementsByTagName(ITEMTAGNAME).length; if(DEBINDEX < 0) { DEBINDEX = 0; FININDEX = PAGE; CPTPG = 1; } else CPTPG--; initCPTPG(PAGE,MAXREC,CPTPG); delrec(); GetRec(DEBINDEX ,FININDEX,dbXML) } function firstpg_onclick() { divopt.innerHTML = ""; DEBINDEX = 0; FININDEX = PAGE ; MAXREC = dbXML.getElementsByTagName(ITEMTAGNAME).length; CPTPG = 1; initCPTPG(PAGE,MAXREC,CPTPG); delrec() GetRec(DEBINDEX ,FININDEX,dbXML); } function lastpg_onclick() { divopt.innerHTML = ""; MAXREC = dbXML.getElementsByTagName(ITEMTAGNAME).length; if(MAXREC <= PAGE) return; DEBINDEX = MAXREC - PAGE; FININDEX = MAXREC; CPTPG = MAXPG; initCPTPG(PAGE,MAXREC,CPTPG); delrec() GetRec(DEBINDEX ,FININDEX,dbXML); } function txtNumero_onclick() { txtNumero.select() } function txtNumero_onkeyup() { if(isNaN(txtNumero.value)) txtNumero.value = txtNumero.value.substring(0,txtNumero.value.length - 1) txtNumero.style.backgroundColor = "darkgray"; } function txtNumero_onkeypress() { if(window.event.keyCode == 13 && txtNumero.value != "") { window.event.returnValue = false; NUMRECMAJ = txtNumero.value; ListSelectRec(txtNumero.value); } } // ------------ Nouveau abonne ---------- function addItemRec_onclick() { if(NUMRECMAJ == -1) { var blnret = window.confirm("Annuler le travail en cours et créer un nouveau ?") if(blnret == false) return; } NUMRECMAJ = -1 ListSelectRec(NUMRECMAJ) } function window_onmouseover() { window.scrollTo(0,0) } //--> </SCRIPT> </HEAD> <BODY bottomMargin=0 leftMargin=0 topMargin=0 rightMargin=0 background="" LANGUAGE=javascript onload="return window_onload()" > <TABLE align=center width="914" height="16" style="BACKGROUND-COLOR: darkgray"><TR><TD align=middle HEIGHT="16"> <FONT style="COLOR: white">*** LISTE DES ABONNES ***</FONT></TD></TR></TABLE> <HR size=2 color=white> <DIV align=center style="HEIGHT: 200px" id=DIV1> <TABLE BORDER=1 style="FONT-WEIGHT: normal; LEFT: -8px; FONT-STYLE: normal; POSITION: relative; HEIGHT: 29px"> <THEAD> <TR> <TH style="WIDTH: 66px; HEIGHT: 22px" >Numéro</TH> <TH style="WIDTH: 150px; HEIGHT: 22px" >Nom</TH> <TH style="WIDTH: 114px; HEIGHT: 22px" >Prénom</TH> <TH style="WIDTH: 205px; HEIGHT: 22px" >Adresse</TH> <TH style="WIDTH: 89px; HEIGHT: 22px" >Code Postal</TH> <TH style="WIDTH: 114px; HEIGHT: 22px" >Ville</TH> <TH style="WIDTH: 114px; HEIGHT: 22px" >Téléphone</TH> </TR> </TABLE>   <DIV id="video" style="OVERFLOW-Y: scroll; WIDTH: 915px; BORDER-TOP-STYLE: inset; BORDER-RIGHT-STYLE: inset; BORDER-LEFT-STYLE: inset; HEIGHT: 310px; BACKGROUND-COLOR: darkkhaki; BORDER-BOTTOM-STYLE: inset"> <TABLE id="TDBXML" BORDER=1 width=800 style="FONT-WEIGHT: normal; FONT-STYLE: normal" > <TBODY id=TBODYREC > </TBODY> </TABLE> <DIV id=divopt></DIV></DIV> <IMG id=addItemRec SRC="img/icoabn.bmp" title="Nouveau abonné" ALIGN=center height=20 width=20 style="CURSOR: hand" LANGUAGE=javascript onclick="return addItemRec_onclick()"></IMG> </IMG> <INPUT id=txtNumero name=txtNumero style="FONT-WEIGHT: bold; BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BACKGROUND-COLOR: darkgray; TEXT-ALIGN: center; BORDER-BOTTOM-STYLE: solid" align=middle LANGUAGE =javascript onclick ="return txtNumero_onclick()" onkeyup="return txtNumero_onkeyup()" onkeypress="return txtNumero_onkeypress()" title=Numéro size=16> <HR align=center width=100> <DIV align=center><IMG SRC="img/icofirst.bmp" style="WIDTH: 32px; CURSOR: hand; HEIGHT: 32px" height=32 id=firstpg LANGUAGE=javascript onclick="return firstpg_onclick()" width=32> <IMG language=javascript id=pgPrec style="WIDTH: 32px; HEIGHT:32px" onclick="return pgPrec_onclick()" height=32 alt="" hspace=0 src="img/icol1.bmp" width=32 useMap="" border=0> <IMG language=javascript id=pgSuiv style="WIDTH: 32px; CURSOR: hand; HEIGHT: 32px" onclick="return pgSuiv_onclick()" height=32 alt="" hspace=0 src="img/icor1.bmp" width=32 useMap="" border=0 > <IMG SRC="img/icolast.bmp" style="LEFT: 79px; WIDTH: 32px; CURSOR: hand; TOP: 0px; HEIGHT: 32px" height=32 id=lastpg LANGUAGE=javascript onclick="return lastpg_onclick()" alt="" hspace=0 width=32 useMap="" border=0> <BR><SPAN id=NBPG></SPAN></DIV> </DIV> <object id=objFS classid=clsid:0D43FE01-F093-11CF-8940-00A0C9054228 VIEWASTEXT></object> <SCRIPT type="text/javascript" language="javascript"> <!-- function CreateDB(strFILEDB) { /* --------- Creation de la base si inexistant --------------*/ var Path = window.document.location.pathname; var strPath = Path.substr(1,(Path.length - 1) - objFS.GetFileName(Path).length ); strPath = strPath.replace(/\\/g,"\\\\"); if(strFILEDB.match(/:\\/i) ) var strSaveXML = strFILEDB; // Base avec chemin absolu else var strSaveXML = strPath + strFILEDB; // Base avec chemin par défaut strSaveXML = strSaveXML.replace(/%20/g," "); if(objFS.FileExists(strSaveXML) == false) savexml("<evideo></evideo>",strSaveXML) /* -------- Affectation de la base au document XML ----------*/ dbXML.src = strSaveXML; } --> </SCRIPT> <xml ID="dbXML" ></xml> <xml id="itemRecXML"> <abonne> <num_abonne></num_abonne> <Nom></Nom> <Prenom></Prenom> <Adresse></Adresse> <Code_Postal></Code_Postal> <Ville></Ville> <Telephone></Telephone> </abonne> </xml> <div align=center style="POSITION:relative;TOP:0%"> <hr width="90%" color=black SIZE=2> <img alt="www.aufildutemps.new.fr" hspace=0 src="img/logo.png" vspace=0 border=0 ></div> </BODY> </HTML>
Téléchargement du programme