Soumission de formulaire

Résolu/Fermé
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 6 déc. 2018 à 00:39
 Utilisateur anonyme - 15 déc. 2018 à 21:08
Bonsoir,

J'ai un souci pour envoyer un formulaire en javascript. En fait, il s'agit d'un script PHP mais peu importe, le problème est de l'ordre du Javascript ou peut-être --mais peu probable-- de HTML. Il s'agit d'une gestion de carnet d'adresses en un seul fichier PHP récursif (ajout, modification, exports, etc...) et je voudrai ajouter cloner.

Le même script se rappelle plusieurs fois.
- Quand on l'appelle normalement (pour ajout) il y a un champ caché (
name="action" value="ajout"
) un bouton submit pour valider et enregistrer (le script PHP exécute alors une requête
INSERT INTO...
)
- quand on a sélectionné une fiche pour modification, les champs sont affichés avec les valeurs qui avaient été saisies, le champ caché est toujours là mais avec une autre valeur (
name="action" value="modif"
) et lors de la validation le script PHP exécute alors une requête
UPDATE Table SET champ=...
)

Parfois, j'ai des enregistrements presque identiques et plutôt que tout ressaisir, je préfère afficher une fiche similaire, modifier un champ ou deux et appuyer sur un bouton [Cloner] afin d'exécuter un
INSERT INTO...
avec les valeurs inscrites dans les champs dont beaucoup sont identiques sauf un ou deux champs modifiés, ce qui fera un enregistrement supplémentaire.

J'ai imaginé (mais ai-je raison ?) demander une modif mais faire croire à un ajout. Comme il ne peut y avoir qu'un seul bouton de type "
submit
" dans le formulaire, le bouton [Cloner] est de type "
button
" et l'attribut
onclick
pointe vers une fonction javascript "
cloner()
". Comme j'avais cliqué sur le bouton [Modifier] pour afficher l'enregistrement voulu, le bouton caché indique qu'il s'agit d'une modif (
name="action" value="modif"
), la fonction cloner() change cette valeur en "
ajout
" avant de soumettre le formulaire. La modification du champ caché se fait mais le formulaire ne part pas, n'est pas soumis comme si c'était un ajout normal (pour cloner), il reste à l'affichage et n'exécute pas l'enregistrement.

Ci-dessous le code en question (enfin les parties principales) :

<script language="javascript" type="text/javascript">
function verif() {
	// ...
	// ici fonctions de vérification des champs
	// ...
}

function cloner() {
	document.personne.action.value="ajout";
	document.personne.submit();
}
</script>

<body>
...
<form name="personne" id="personne" method="post" action="SELF-en-PHP" onsubmit="return verif()">
   ...
   <input type="text" name="nom" size="20" value="...">
   <!-- value est vide ou contient une valeur selon saisie ou modif -->
   ...
   <input type="submit" name="submit" value="...">
   <!-- value contient "Enregistrer" ou "Modifier" selon le cas -->
   <input type="button" name="Cloner" onclick="javascript:cloner()">
</form>


Comme rien ne partait, entre les deux instruction de la fonction
cloner()
, j'ai rajouté
alert(document.personne.action.value)
pour verifier. Lors du clic sur le bouton [Cloner], ça me précise bien que la valeur de action a été modifiée de "
modif
" (à cause de l'affichage) en "
ajout
". Mais ça ne part pas.

J'ai cherché sur le net et j'ai trouvé une doc préconisant
document.forms[form_id].submit()
j'ai donc ajouté dans la balise
form
, en plus de l'attribut
name="personne"
, l'attribut
id="personne"
mais : que je mettre
document.personne.submit();
ou
document.forms[personne].submit();
le formulaire n'est pas soumis et reste à l'affichage.

Je ne sais plus quoi faire. Quelqu'un a-t-il une idée ?

Merci pour votre aide.
Configuration: Dual boot: Windows XP Pro SP3 / Debian Linux

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
6 déc. 2018 à 06:43
Bonjour
Que contient la fonction verif ?
Que dit la console de ton navigateur ?
1
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 137
6 déc. 2018 à 14:33
Bonjour,

et merci pour ta réponse. La fonction verif() ne pose pas de problème. Le script a été commencé en avril 2013 et je l'utilise sans problème depuis. Quand j'ai besoin d'une fonction utilisateur supplémentaire, je rajoute le code PHP nécessaire et éventuellement une ou des fonctions javascript nécessaire(s) à cette nouvelle fonction d'utilisation mais je ne touche pas au code de la fonction verif() sauf si j'ajoute un nouveau champ qu'il faut vérifier.

En gros, je m'étais fait une bibliothèque de fonctions javascript totalement indépendantes de la page dans laquelle elles sont utilisées. Les variables sont internes à chacune de ces fonctions.

Pour m'y retrouver, j'ai normalisé les noms :
- Il y a les fonctions is.....() qui retournent une valeur true ou false (ex: isDate(), isHour(), isTDL(), etc...)
- et il y a les fonctions isValid....() qui retournent soit OK soit un message d'erreur à afficher (ex: isValidText(), isValidDate(), isValidMail(), etc...)
Ces deux paquets de fonctions peuvent être utilisés dans n'importe quelle page web.

Vient ensuite la fonction verif(), propre à mon formulaire, et qui utilise ces fonctions "bibliothèque" pour :
1) vérifier si le champ nécessaire est présent
2) vérifier que tous les caractères saisis soient dans la liste des caractères aurorisés pour ce champ ainsi que la longueur soit comprise entre des limites inférieure et supérieure. Dans ce cas un "OK" est renvoyé par une des fonctions isValid...() et on passe au champ suivant. Sinon le message d'erreur renvoyé est affiché, le curseur positionné sur le champ erroné et la main est rendue
3) Certains champs sont facultatifs. S'ils sont vides on passe au champ suivant mais s'ils sont saisis, la validité des saisies est vérifiée.

etc... pour tous les champs. En fin de la vérification, true est renvoyé et le formulaire est soumis, envoyé.

Je ne touche quasiment jamais à la fonction verif() qui a toujours fonctionné jusque là. Tu peux d'ailleurs les trouver à l'URL http://www.fauque.fr/pbjs.php

Je peux ici t'afficher ce code mais je ne pense pas qu'il ne t'aidera pas à résoudre. Cela ne me gêne pas de t'envoyer le tout en privé. Mais :
1) tu n'es pas mon debugger privé, juste quelqu'un qui veut bien aider et c'est sympa,
2) Je n'aime pas trop fournir quelque chose qui soit imparfait même si je compte par la suite le laisser en téléchargement libre. En effet, il y a dedans un "bug" (je ne sais comment l'appeler). Parmi les exports possibles : csv, sql, vcf, xml, Word, Excel, il y a aussi l'export en ebook au format epub. L'export se fait correctement. Je le récupère sur PC et l'ouvre sans problème avec un lecteur d'ebook PC ou avec le plug-in EPUBReader de Firefox. Mais si je l'importe avec un smartphone ou une tablette : Erreur ! En revanche, si j'ouvre ce fichier .epub avec Sigil (logiciel libre de création d'epub) et que SANS RIEN MODIFIER j'enregistre (donc: Fichier/Ouvrir et Fichier/Enregistrer dans la foulée) le problème est réglé et l'epub est lisible sur smartphone, ou tablette (bref, Android). Quand le problème sera réglé, il sera mis en téléchargement libre. J'ai cherché longtemps mais n'ai pas encore trouvé. Je laisse donc en standby et voulais juste ajouter la fonction Cloner une fiche dans laquelle je rencontre cette soumission de formulaire sur laquelle je butte. Et ton aide est la bienvenue sur tous les fronts... :-)

Merci.

PS: J'ai honte mais je n'ai jamais utilisé la console du navigateur et ne sais comment faire. :-((
0
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 137
Modifié le 12 déc. 2018 à 21:39
Alors la console me dit ceci (Navigateur Firefox) :
Menu : Outils / Développement web / Console web : Onglet "Console"
TypeError: document.getElementById(...).submit is not a function

Dans la fonction javascript cloner() j'ai remplacé
document.personne.submit();
par
document.getElementById("personne").submit();
mais avec l'une ou l'autre instruction j'ai le même message d'erreur.

NB: La première instruction de la fonction cloner() :
document.personne.action.value = "ajout";
est opérationnelle.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023
12 déc. 2018 à 22:37
Aucun souci avec ce code

<form name="personne" id="personne" method="post" action="SELF-en-PHP" onsubmit="return verif()">
   <input type="text" name="nom" size="20" value="...">
   <!-- value est vide ou contient une valeur selon saisie ou modif -->
   <input type="submit" name="submit" value="...">
   <!-- value contient "Enregistrer" ou "Modifier" selon le cas -->
   <input type="button" name="Cloner" onclick="javascript:cloner()">
</form>

<script>
function cloner() {
	document.personne.action.value="ajout";
	document.personne.submit();
}

function verif(){
  alert('verif !!');
}
</script>

Tu as donc certainement une erreur ailleurs....
Mais comme tu ne veux pas nous montrer l'intégralité de ton code... ni de capture d'écran de ta console ( au chargement de la page PUIS lors du clic sur le bouton ).. IMPOSSIBLE de t'en dire plus !
0
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 137
13 déc. 2018 à 16:30
Bonjour Jordane,

Ce n'est pas que je NE VEUX PAS montrer mon code, mais l'intégralité du code PHP fait 3389 lignes !!!

Ce que je peux faire c'est :

1) Copier le code source d'une page à modifier (avant de cloner), de l'alléger (car le défi que je m'étais fixé était de TOUT faire en UN SEUL et UNIQUE script, images comprises) et poster le résultat ici.

2) t'envoyer l'intégralité du code en MP en te donnant quelques infos pour savoir où modifier le code (pour l'accès à la base de données) afin que tu l'utilises "en situation réelle" (ajouts, modifs, exports etc..) ça te permettra peut-être de mieux voir où ça peut coincer.

Voici donc le source HTML lorsqu'un enregistrement est affiché (pour modif ou clonage) :

<!DOCTYPE html>
<html>

<head>

<meta charset="iso-8859-1">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<title>Carnet d'adresses</title>

<style type="text/css">
body td     { font-family:arial; font-size:10pt }
h2          { font-family:'times new roman'; font-size:14pt; font-weight:bold; font-style:italic; margin-top:0px; margin-bottom:5px; color:#000080 }
h3          { font-family:arial; font-size:11pt; font-weight:bold; margin-top:3px; margin-bottom:0px; margin-left:25px }
h4          { font-family:arial; font-size:11pt; font-weight:bold; margin-top:20px; margin-bottom:-5px; margin-left:25px; color:#008000 }
h5          { font-family:arial; font-size:11pt; font-weight:bold; margin-top:10px; margin-bottom:0; margin-left:25px; color:#808080 }
a           { text-decoration:none }
a:hover     { color:#FF0000 }
#cr         { font-family:arial; font-size:10pt; color:#FF0000 }
.index      { text-align:center; margin-top:8px; margin-bottom:15px }
.liste      { width:270px; font-family:arial; font-size:10pt; border-right:1px solid #909090; padding-left:10px; vertical-align:top }
.formulaire { font-family:arial; font-size:10pt; vertical-align:top; padding-left:10px }
.libel      { font-family:arial; font-size:10pt; text-align:right; vertical-align:top; padding-right:5px; padding-bottom:2px }
.data       { padding-left:5px; padding-bottom:2px }
.info       { font-family:arial; font-size:9pt; color:#808080 }
.bt         { width:70px  }
.bt5        { width:50px  }
.bt8        { width:80px  }
.bt9        { width:90px  }
.bt11       { width:110px }
.c1         { font-family:arial; font-size:10pt; padding-left:3px; padding-right:3px; text-align:center; background-color:#000090; color:#FFFFFF }
.c2         { font-family:arial; font-size:10pt; padding-left:3px; padding-right:3px; text-align:center; background-color:#000090; color:#FFFFFF }
.c3         { font-family:arial; font-size:10pt; padding-left:3px; padding-right:3px; border:1px solid #909090; border-top:0px }
.c4         { font-family:arial; font-size:10pt; padding-left:3px; padding-right:3px; border:1px solid #909090; border-top:0px; border-left:0px }
.viah       { visibility:hidden }
#input      { visibility:visible }
#link       { display:none }
.v          { display:inline }
.h          { display:none }
.r          { color:red }
.g          { font-weight:bold; color:green }
.flags      { margin-top:10px; font-family:arial; font-size:9pt; color:#808080 }
.flag       { margin-top:1px; margin-left:5px }
.ff         { font-family:'courier new' }
</style>

<script language="javascript" type="text/javascript">
//==================================================
// 18 fév 2006. (c) Pierre FAUQUE, pierre@fauque.net
// NB: Les fonctions is...() ne retournent que Vrai ou Faux.
//     Les fonctions isValid...() retournent OK ou un message d'erreur
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste si le caractère passé en paramètre (c) est un caractère autorisé (liste en paramètre)
function isCharInList(c,list) {
	var c,list;
	if (list.indexOf(c.toLowerCase()) < 0) { return false; } else { return true; }
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste si tous les caractères de la chaine passée en paramètre (str) sont autorisés
// Fonction dépendante de isCharInList()
function isStringInList(str,list) {
	var str,list,n;
	for (n=0; n<str.length; n++) {
		if (!isCharInList(str.substring(n,n+1),list)) { return false; }
	}
	return true;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste si les caractères passés en paramètre corespondent à un TDL valide
// ATTENTION: Plus de 700 nouveaux TLD sont apparus (.paris, .website, .agency, .photos, etc...)
// Ne sont testés ici que les TDL nationaux et quelques classiques.
function isTLD(tld) {
	var tld,domains;
	domains = "com|net|int|org|edu|mil|gov|af|al|dz|as|ad|ao|ai|aq|ag|ar|am|aw|ac|au|at|"
		+ "az|bh|bd|bb|by|be|bz|bj|bm|bt|bo|ba|bw|bv|br|io|bn|bg|bf|bi|gg|je|kh|cm|ca|"
		+ "cv|ky|td|cl|cn|cx|cc|co|km|cg|ck|cr|ci|hr|cf|cu|cy|cz|dk|dj|dm|do|tp|ec|eg|"
		+ "sv|gq|er|ee|et|fk|fo|fj|fi|gf|pf|tf|fr|fx|ga|gm|ge|de|gh|gi|gr|gl|gd|gp|gu|"
		+ "gt|gn|gw|gy|ht|hm|hn|hk|hu|is|in|id|ir|iq|ie|im|il|it|jm|jp|jo|kz|ke|ki|kp|"
		+ "kr|kw|kg|la|lv|lb|ls|lr|ly|li|lt|lu|mo|mk|mg|mw|my|mv|ml|mt|mh|mq|mr|mu|yt|"
		+ "mx|fm|md|mc|mn|ms|ma|mz|mm|mp|na|nr|np|an|nl|nc|nz|ni|ne|ng|nu|nf|no|om|pk|"
		+ "pw|pa|pg|py|pe|ph|pn|pl|pt|pr|qa|re|ro|ru|rw|gs|lc|ws|sm|st|sa|sn|sc|sl|sg|"
		+ "sk|si|sb|so|za|es|lk|sh|kn|pm|vc|sd|sr|sj|sz|se|ch|sy|tw|tj|tz|th|bs|tg|tk|"
		+ "to|tt|tn|tr|tm|tc|tv|um|ug|ua|uk|us|uy|ae|uz|vu|va|ve|vn|vg|vi|wf|eh|ye|yu|"
		+ "zr|zm|zw|eu|"
		+ "biz|info|aero|mobi";
	if (domains.indexOf(tld.toLowerCase()) < 0) { return false; } else { return true; }
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste le format d'une adresse email.
// Fonction dépendante de isTLD()
// Login non null, doit contenir "@" dans l'adresse, un point dans le domaine et un TLD valide
function isEmail(address) {
	var address,parts,domains;
	if (address.indexOf("@") <= 0)         { return false; }
	parts = address.split("@");
	if (parts[0].length == 0)              { return false; }
	if (parts[1].indexOf(".") <= 0)        { return false; }
	domains = parts[1].split(".");
	if (!isTLD(domains[domains.length-1])) { return false; }
	return true;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste le format d'une date (JJ/MM/AAAA ou MM/JJ/AAAA).
function isDate(date) {
	var date, reg = new RegExp("^[0-9]{2}[/]{1}[0-9]{2}[/]{1}[0-9]{4}$","g");
	if(reg.test(date)) { return true; } else { return false; }
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste le format d'une heure (HH:MM).
function isHour(heure) {
	var tab, reg = new RegExp("^[0-9]{2}[:]{1}[0-9]{2}$","g");
	if(reg.test(heure)) { return true; } else { return false; }
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste la validité d'une date française (JJ/MM/AAAA).
// Fonction dépendante de isDate()
function isValidDate(date) {
	var date,tab;
	if(isDate(date)) {
		tab=date.split('/');
		if((tab[0]*1)<1 || (tab[0]*1)>31) { return "Jour incorrect !"; }
		if((tab[1]*1)<1 || (tab[1]*1)>12) { return "Mois incorrect !"; }
		return "OK";
	}
	return "Format date incorrect !";
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste la validité d'une heure (HH:MM).
// Fonction dépendante de isHour()
function isValidHour(heure) {
	var heure, tab;
	if(isHour(heure)) {
		tab=heure.split(':');
		if((tab[0]*1)>24) { return "Heure incorrecte !"; }
		if((tab[1]*1)>60) { return "Minutes incorrectes !"; }
		if((tab[0]=='24') && (tab[1]!='00')) { return "Format heure incorrect !"; }
		return "OK";
	}
	return "Format heure incorrect !";
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Teste la validité d'un champ de type texte (longueur et caractères autorisés)
// Fonction dépendante de isStringInList()
function isValidText(champ,chars,li,ls) {
	var champ,chars,li,ls,lg,msg;
	lg = champ.length;
	if(li || ls) {
		if(lg < li) { msg = "Saisie trop courte\nMinimum : "+li;  return msg; }
		if(lg > ls) { msg = "Saisie trop longue\nMaximum : "+ls;  return msg; }
	}
	if(!isStringInList(champ,chars)) { msg = "Caractères interdits !"; return msg; }
	return "OK";
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Supprime les espaces de début et de fin de chaîne
function trim(myString) {
	return myString.replace(/^\s+/g,'').replace(/\s+$/g,'');
}

//==========================================================================================
// Variables diverses
var today = new Date();
var annee = today.getFullYear();
// Listes des (c)aractères classiques (a)utorisés (ca_*) dans les différents champs de saisie
var ascii           = "abcdefghijklmnopqrstuvwxyz";
var lettres         = "abcdefghijklmnopqrstuvwxyzàâäéèêëîïùûüçôö";
var chiffres        = "0123456789";
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Caractères autorisés (ca_*)
// Champs testés:
ca_nom      = lettres + " -'.";
ca_prenom   = lettres + " -'";
ca_adresse  = lettres + chiffres + ", ()-'.";  // adresse1 et adresse2
ca_cpostal  = lettres + chiffres + " -./";
ca_ville    = lettres + chiffres + " '-";      // Chiffres: pour Cedex
ca_digicode = lettres + chiffres + "/ -;=";
ca_tel      = chiffres + "+ .-/";              // teld, telm, telp, fax
ca_mail     = ascii + chiffres + "_@-.";       // maild, mailp, mail du VCF
ca_web      = ascii + chiffres + "_-.%=:@/";
ca_fb       = ascii + chiffres + "/:.?-=#";
ca_tw       = ascii + chiffres + "@_-";
ca_obs      = lettres + chiffres + " +=?,.;/:!@(){}[]#'-_\\*&%";
ca_look4    = lettres + chiffres + "-. /'()@_+";
ca_body     = lettres + chiffres + " +=?,.;/:!@(){}[]#'-_\\*&%";

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Javascript de vérification pour le formulaire de saisie
function verif() {

	// Récupération des valeurs du formulaire
	nom      = document.personne.nom.value;       // saisie obligatoire
	prenom   = document.personne.prenom.value;
	adresse1 = document.personne.adresse1.value;
	adresse2 = document.personne.adresse2.value;
	cpostal  = document.personne.cpostal.value;
	ville    = document.personne.ville.value;
	digicode = document.personne.digicode.value;
	teld     = document.personne.teld.value;
	telm     = document.personne.telm.value;
	telp     = document.personne.telp.value;
	fax      = document.personne.fax.value;
	maild    = document.personne.maild.value;
	mailp    = document.personne.mailp.value;
	web      = document.personne.web.value;
	fb       = document.personne.fb.value;
	tw       = document.personne.tw.value;
	obs      = document.personne.obs.value;
	idgr     = document.personne.idgr.options[document.personne.idgr.options.selectedIndex].value;
	bday     = document.personne.bday.value;
	
	// Test de la présence des champs obligatoires
	if(!nom) {
		alert("Veuillez indiquer le nom");
		document.personne.nom.focus();
		return false;
	}

	// Test de la validité des champs présents

	// Nom
	msg = isValidText(nom,ca_nom,0,25);
	if(msg != "OK") {
		alert("Nom :\n"+msg);
		document.personne.nom.focus();
		return false;
	}

	// Prénom
	msg = isValidText(prenom,ca_prenom,0,30);
	if(msg != "OK") {
		alert("Prénom :\n"+msg);
		document.personne.prenom.focus();
		return false;
	}

	// Adresse 1
	msg = isValidText(adresse1,ca_adresse,0,40);
	if(msg != "OK") {
		alert("Adresse :\n"+msg);
		document.personne.adresse1.focus();
		return false;
	}

	// Complément d'adresse
	msg = isValidText(adresse2,ca_adresse,0,40);
	if(msg != "OK") {
		alert("Complément adr. :\n"+msg);
		document.personne.adresse2.focus();
		return false;
	}

	// Code postal
	msg = isValidText(cpostal,ca_cpostal,0,10);
	if(msg != "OK") {
		alert("Code postal :\n"+msg);
		document.personne.cpostal.focus();
		return false;
	}

	// Ville
	msg = isValidText(ville,ca_ville,0,40);
	if(msg != "OK") {
		alert("Ville :\n"+msg);
		document.personne.ville.focus();
		return false;
	}

	// Digicode
	msg = isValidText(digicode,ca_digicode,0,15);
	if(msg != "OK") {
		alert("Digicode :\n"+msg);
		document.personne.digicode.focus();
		return false;
	}

	// Téléphone domicile
	msg = isValidText(teld,ca_tel,0,20);
	if(msg != "OK") {
		alert("Tél domicile :\n"+msg);
		document.personne.teld.focus();
		return false;
	}

	// Téléphone mobile
	msg = isValidText(telm,ca_tel,0,20);
	if(msg != "OK") {
		alert("Tél mobile :\n"+msg);
		document.personne.telm.focus();
		return false;
	}

	// Téléphone professionnel
	msg = isValidText(telp,ca_tel,0,20);
	if(msg != "OK") {
		alert("Tél professionnel :\n"+msg);
		document.personne.telp.focus();
		return false;
	}

	// Numéro de fax
	msg = isValidText(fax,ca_tel,0,20);
	if(msg != "OK") {
		alert("Fax :\n"+msg);
		document.personne.fax.focus();
		return false;
	}
	
	// Mail personnel
	if(maild) {
		msg = isValidText(maild,ca_mail,0,55);
		if(msg != "OK") {
			alert("Mail personnel :\n"+msg);
			document.personne.maild.focus();
			return false;
		}
		if(!isEmail(maild)) {
			msg = "L'adresse mail semble incorrecte !";
			alert(msg);
			document.personne.maild.focus();
			return false;
		}
	}

	// Mail professionnel
	if(mailp) {
		msg = isValidText(mailp,ca_mail,0,55);
		if(msg != "OK") {
			alert("Mail professionnel :\n"+msg);
			document.personne.mailp.focus();
			return false;
		}
		if(!isEmail(mailp)) {
			msg = "L'adresse mail semble incorrecte !";
			alert(msg);
			document.personne.mailp.focus();
			return false;
		}
	}
	
	// Site web
	msg = isValidText(web,ca_web,0,90);
	if(msg != "OK") {
		alert("Site web :\n"+msg);
		document.personne.web.focus();
		return false;
	}
	
	// Facebook
	msg = isValidText(fb,ca_fb,0,90);
	if(msg != "OK") {
		alert("Profil Facebook :\n"+msg);
		document.personne.fb.focus();
		return false;
	}
	
	// Twitter
	msg = isValidText(tw,ca_tw,0,20);
	if(msg != "OK") {
		alert("Compte Twitter :\n"+msg);
		document.personne.tw.focus();
		return false;
	}

	// Birthday
	if(bday) {
		msg = isValidDate(bday);
		if(msg != "OK") {
			alert("Date de naissance :\n"+msg);
			document.personne.bday.focus();
			return false;
		}
	}

	// Observations
	msg = isValidText(obs,ca_obs,0,150);
	if(msg != "OK") {
		alert("Observations :\n"+msg);
		document.personne.obs.focus();
		return false;
	}

	// Placé dans un groupe
	if(idgr==0) {
		var pers = trim(prenom+' '+nom);
		msg = "Dans quel groupe placer "+pers+" ?";
		alert(msg);
		document.personne.idgr.focus();
		return false;
	}

	return true;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Envoi d'une demande à l'auteur
function askfor() {
	document.location = '/adresses.php?a=ask';
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Alerte : pour le futur...
function later() {
	alert("Plus tard...");
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Vérif pour l'envoi au format VCF
function to_VCF() {

	var codage = "iso";
	var bymail = document.personne.bymail.checked;
	var via    = document.personne.via.value;
	var codage = document.personne.cod.options[document.personne.cod.selectedIndex].value;
	var dest   = '';

	codage = document.personne.cod.options[document.personne.cod.selectedIndex].value;
	if(bymail) {
		if(!via) {
			alert("Adresse d'expédition manquante");
			document.personne.via.focus();
			return false;
		}
		msg = isValidText(via,ca_mail,0,55);
		if(msg != "OK") {
			alert("Adresse pour VCF :\n"+msg);
			document.personne.via.focus();
			return false;
		}
		if(!isEmail(via)) {
			msg = "L'adresse pour VCF semble incorrecte !";
			alert(msg);
			document.personne.via.focus();
			return false;
		}
		dest = "&d="+via+"&c="+codage;
	}
	
	var version = document.personne.version.value;
	var url = "a=vcf&v="+version+dest;
	document.location = '/adresses.php?' + url;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Sélectionne ou désélectionne une partie des enregistrements
function selectexport(action) {
	var action,typsel;
	if(action == "plus")  { typsel="se1"; }
	if(action == "moins") { typsel="se0"; }
	var group = document.personne.idgrsel.options[document.personne.idgrsel.selectedIndex].value;
	var url = "a="+typsel+"&p="+group;
	document.location = '/adresses.php?' + url;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Affiche ou masque la zone de saisie de l'adresse pour l'envoi du VCF
function hideshow() {
	var etat = document.personne.bymail.checked;
	if(etat) { document.personne.via.style.visibility = "visible"; document.personne.cod.style.visibility = "visible"; }
	else     { document.personne.via.style.visibility = "hidden";  document.personne.cod.style.visibility = "hidden";  }
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Afficher des informations en boîte d'alerte (version ou aide)
function infos(num) {
	var msg;
	switch(num) {
		case 1: msg = "Adresses version 0.26\ndu 05-déc-2018\n\n(c) 2013-2018 Pierre FAUQUE";
				break;
		case 2: msg = "UTILISATION DES BOUTONS:\n\n"
				+ "- [Word], [Excel] : pour import dans ces applications\n"
				+ "- [sql]   : pour import dans une base de données SQL\n"
				+ "- [csv]  : Comma Separated Values, pour divers imports dont Excel, dBaseIII+\n"
				+ "- [xml]  : pour export au formal XML\n"
				+ "- [ePub]: pour export en eBook (format ePUB)\n"
				+ "- [vcf]  : Virtual Card File, pour import dans les répertoires d'adresses de smartphones\n"
				+ "              Choisir la version : v2.1, v3.0, v4.0 et l'encodage en fonction du smartphone\n"
				+ "              Possibilité de le recevoir par mail.\n"
				+ "- [grp]  : Affichage par groupes de contacts\n"
				+ "- [Demander] : Demander une nouvelle fonctionnalité par mail\n"
				+ "- [Sélectionner] ou [Déselectionner] effectue l'action sur le groupe choisi dans la liste.\n"
				+ "- [select] : Affiche les fiches sélectionnées.\n"
				+ "- [cloner] : Enregistre une nouvelle fois la fiche affichée (modifiée ou non).\n"
				+ "---\nPour changer de langue, traduisez les textes et changez la variable $lang.\n";
				break;
		case 3: msg = "A venir bientôt...";
				break;
	}
	alert(msg);
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Cloner une fiche. v2.6
function cloner() {
	document.personne.action.value = "ajout";
	// alert(document.personne.action.value);
	// document.forms[0].submit();
	document.getElementById("personne").submit();
	// var formulaire = document.getElementById("personne");
	// formulaire.submit();
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Affiche ou masque la zone de saisie pour la mise à jour ou un lien pour le site web
function linkweb() {
	var ei, el;
	ei = document.getElementById('inputweb'); // EI = élément Input
	el = document.getElementById('linkweb');  // EL = élément Link

	if(ei.style.display == 'inline') {
		document.personne.viewlinkweb.checked = false;
		ei.style.display = 'none';
		el.style.display = 'inline'; }
	else {
		document.personne.hidelinkweb.checked = false;	
		ei.style.display = 'inline';
		el.style.display = 'none';
	}
} 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Affiche ou masque la zone de saisie pour la mise à jour ou un lien pour l'adresse mail perso
function linkmaild() {
	var ei, el;
	ei = document.getElementById('inputmaild'); // EI = élément Input
	el = document.getElementById('linkmaild');  // EL = élément Link

	if(ei.style.display == 'inline') {
		document.personne.viewlinkmaild.checked = false;
		ei.style.display = 'none';
		el.style.display = 'inline'; }
	else {
		document.personne.hidelinkmaild.checked = false;	
		ei.style.display = 'inline';
		el.style.display = 'none';
	}
} 

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Affiche ou masque la zone de saisie pour la mise à jour ou un lien pour affichage Facebook
function linkfb() {
	var ei, el;
	ei = document.getElementById('inputfb'); // EI = élément Input
	el = document.getElementById('linkfb');  // EL = élément Link

	if(ei.style.display == 'inline') {
		document.personne.viewlinkfb.checked = false;
		ei.style.display = 'none';
		el.style.display = 'inline'; }
	else {
		document.personne.hidelinkfb.checked = false;	
		ei.style.display = 'inline';
		el.style.display = 'none';
	}
} 
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Affiche ou masque la zone de saisie pour la mise à jour ou un lien pour affichage Twitter
function linktw() {
	var ei, el;
	ei = document.getElementById('inputtw'); // EI = élément Input
	el = document.getElementById('linktw');  // EL = élément Link

	if(ei.style.display == 'inline') {
		document.personne.viewlinktw.checked = false;
		ei.style.display = 'none';
		el.style.display = 'inline'; }
	else {
		document.personne.hidelinktw.checked = false;	
		ei.style.display = 'inline';
		el.style.display = 'none';
	}
} 
</script>
</head>

<body>
<div id="page">
<a name="top"></a>
<form name="personne" id="personne" method="post" action="/adresses.php" onsubmit="return verif();">

<table border='0' cellpadding='0' cell spacing='0'>
<tr>

<td class='liste'>
<!-- --------------------------------------------------------------------------------- Liste de personnes -->
<div style="text-align:center; font-weight:bold">Index</div><div class="index"> <a href="#A">A</a>  <a href="#B">B</a>  <a href="#C">C</a>  <a href="#D">D</a>  <a href="#E">E</a>  <a href="#F">F</a>  <a href="#G">G</a>  <a href="#H">H</a>  <a href="#I">I</a>  <a href="#J">J</a>  <a href="#K">K</a>  <a href="#L">L</a>  <a href="#M">M</a> <br/> <a href="#N">N</a>  <a href="#O">O</a>  <a href="#P">P</a>  <a href="#Q">Q</a>  <a href="#R">R</a>  <a href="#S">S</a>  <a href="#T">T</a>  <a href="#U">U</a>  <a href="#V">V</a>  <a href="#W">W</a>  <a href="#X">X</a>  <a href="#Y">Y</a>  <a href="#Z">Z</a> </div>

<!-- Je n'ai laissé que quelques enregistrement exemples sur les 226 normalement enregistrés -->
<a name="A"></a><h3>A<a href="#top"></a></h3>
<a href='/adresses.php?a=mod&p=214'>AUBERGE la Marguerite</a><br/>
<a href='/adresses.php?a=mod&p=192'>CAPM de Pau</a><br/>
<a href='/adresses.php?a=mod&p=74'>DELTA Hôtel</a><br/>
<a name="E"></a><h3>E</a></h3>
<a href='/adresses.php?a=mod&p=80'>EDI Computer</a><br/>
<a href='/adresses.php?a=mod&p=209'>ENDOSCOPIES Hôpital Tenon</a><br/>
<a name="L"></a><h3>L</a></h3>
<a href='/adresses.php?a=mod&p=226'>L'OLIVIER Pizzeria-Restaurant</a><br/>
<a href='/adresses.php?a=mod&p=147'>la BARBIERE de Paris</a><br/>
<a href='/adresses.php?a=mod&p=163'>LABORATOIRE Bléone-Durance</a><br/>
<a href='/adresses.php?a=mod&p=148'>LABORATOIRE d'Analyses Médicales</a><br/>
<a href='/adresses.php?a=mod&p=203'>LE TRITON </a><br/>
<a name="M"></a><h3>M</a></h3>
<a href='/adresses.php?a=mod&p=141'>MARIANINA Restaurant Franco-Malgache</a><br/>
<a href='/adresses.php?a=mod&p=174'>MOULIN Des Pénitents</a><br/>
<a href='/adresses.php?a=mod&p=108'>MUTUELLE Du Soleil</a><br/>
<a href='/adresses.php?a=mod&p=186'>MUTUELLE Genérale</a><br/>
<a name="N"></a><h3>N</a></h3>
<a href='/adresses.php?a=mod&p=202'>NATHAN Editions</a><br/>
<a href='/adresses.php?a=mod&p=142'>NRJ MOBILE Commerciale</a><br/>
<a name="P"></a><h3>P</a></h3>
<a href='/adresses.php?a=mod&p=190'>PARIS MATCH Service Lecteurs</a><br/>
<a href='/adresses.php?a=mod&p=146'>PHARMACIE d'Anvers</a><br/>
<a href='/adresses.php?a=mod&p=173'>PHARMACIE du Septentrion</a><br/>
<a name="S"></a><h3>S</a></h3>
<a href='/adresses.php?a=mod&p=197'>SFR </a><br/>
<!-- ~~~~~~~~~~~~~~~~~~~~ -->
<div style='height:25px'> </div>
</td>

<td class="formulaire">
<div id="cr"> </div>
<h2>Modifier un·e service/personne</h2>
<table border='0' cellspacing='0' cellpadding='0'>
<tr>
  <td class='libel'>Nom</td>
  <td class='data'><input type="text" name="nom" size="25" value="L'OLIVIER"></td>
</tr><tr>
  <td class='libel'>Prénom</td>
  <td class='data'><input type="text" name="prenom" size="30" value="Pizzeria-Restaurant"></td>
</tr><tr>
  <td class='libel'>Adresse</td>
  <td class='data'><input type="text" name="adresse1" size="40" value="30 boulevard de la République"></td>
</tr><tr>
  <td class='libel'>Complément adr.</td>
  <td class='data'><input type="text" name="adresse2" size="40" value=""></td>
</tr><tr>
  <td class='libel'>Code postal</td>
  <td class='data'><input type="text" name="cpostal" size="10" value="04190"></td>
</tr><tr>
  <td class='libel'>Ville</td>
  <td class='data'><input type="text" name="ville" size="40" value="Les Mées"></td>
</tr><tr>
  <td class='libel'>Pays</td>
  <td class='data'><select name='idpays'><option value='0'>-- Pays --<option value='fi'>Finlande<option value='fr' selected>France<option value='ga'>Gabon</select></td>
</tr><tr>
  <td class='libel'>Digicode</td>
  <td class='data'><input type="text" name="digicode" size="15" value=""></td>
</tr><tr>
  <td class='libel'>Tél domicile</td>
  <td class='data'><input type="text" name="teld" size="15" value=""></td>
</tr><tr>
  <td class='libel'>Tél mobile</td>
  <td class='data'><input type="text" name="telm" size="15" value=""></td>
</tr><tr>
  <td class='libel'>Tél professionnel</td>
  <td class='data'><input type="text" name="telp" size="15" value="04 92 34 33 04"></td>
</tr><tr>
  <td class='libel'>Fax</td>
  <td class='data'><input type="text" name="fax" size="15" value=""></td>
</tr><tr>
  <td class='libel'>Mail personnel</td>
  <td class='data'>
      <span id="inputmaild" class="v" style="display:inline">
          <input type="text" name="maild" size="50" value="coustures.nicolas@orange.fr">
          <input type="checkbox" name="viewlinkmaild" value="0" onclick="javascript:linkmaild()"> Mode lien	</span>
	<span id="linkmaild" class="h" style="display:none">
	    <a href="mailto:coustures.nicolas@orange.fr">coustures.nicolas@orange.fr</a>
	    <input type="checkbox" name="hidelinkmaild" value="0" onclick="javascript:linkmaild()"> Mode saisie	</span>
  </td>
</tr><tr>
  <td class='libel'>Mail professionnel</td>
  <td class='data'>
      <span id="inputmailp" class="v" style="display:inline">
          <input type="text" name="mailp" size="50" value="">
          	</span>
	<span id="linkmailp" class="h" style="display:none">
	    <a href="mailto:"></a>
	    <input type="checkbox" name="hidelinkmailp" value="0" onclick="javascript:linkmailp()"> Mode saisie	</span>
  </td>
</tr><tr>
  <td class='libel'>Site web</td>
  <td class='data'>
      <span id="inputweb" class="v" style="display:inline">
		<input type="text" name="web" size="50" value="http://www.pizzeria-lolivier.com/">
	    <input type="checkbox" name="viewlinkweb" value="0" onclick="javascript:linkweb()"> Mode lien	</span>
	<span id="linkweb" class="h" style="display:none">
		<a href="http://www.pizzeria-lolivier.com/" target="_blank">http://www.pizzeria-lolivier.com/</a>
	    <input type="checkbox" name="hidelinkweb" value="0" onclick="javascript:linkweb()"> Mode saisie	</span>
  </td>
</tr><tr>
  <td class='libel'>Profil Facebook</td>
  <td class='data'>
      <span id="inputfb" class="v" style="display:inline">
		<input type="text" name="fb" size="60" value="https://www.facebook.com/LOlivier-Les-Mées-481423705250635/">
	    <input type="checkbox" name="viewlinkfb" value="0" onclick="javascript:linkfb()"> Mode lien	</span>
	<span id="linkfb" class="h" style="display:none">
	    <a href="https://www.facebook.com/LOlivier-Les-Mées-481423705250635/" target="_blank">https://www.facebook.com/LOlivier-Les-Mées-481423705250635/</a>
	    <input type="checkbox" name="hidelinkfb" value="0" onclick="javascript:linkfb()"> Mode saisie	</span>
  </td>
</tr><tr>
  <td class='libel'>Compte Twitter</td>
  <td class='data'>
      <span id="inputtw" class="v" style="display:inline">
	    <input type="text" name="tw" size="20" value="@PizzeriaOlivier">
	    <input type="checkbox" name="viewlinktw" value="0" onclick="javascript:linktw()"> Mode lien	</span>
      <span id="linktw" class="h" style="display:none">
	    <a href="https://twitter.com/PizzeriaOlivier" target="_blank">https://twitter.com/PizzeriaOlivier</a>
	    <input type="checkbox" name="hidelinktw" value="0" onclick="javascript:linktw()"> Mode saisie	</span>
  </td>
</tr><tr>
  <td class='libel'>Observations</td>
  <td class='data'><input type="text" name="obs" size="60" value=""></td>
</tr><tr>
  <td class='libel'>Date de naissance</td>
  <td class='data'><input type="text" name="bday" size="9" value="">    </td>
</tr><tr>
  <td class='libel'>Groupe</td>
  <td class='data'><select name='idgr'><option value='0'>-- Groupe --<option value='1'>Amis<option value='13'>Avocats-Huissiers<option value='2'>Collègues<option value='3'>Commerces<option value='4'>Connaissances<option value='12'>Divers<option value='18'>EHPAD Les Mées<option value='5'>Famille<option value='17'>GULL Linux<option value='10'>Hôpital Tenon<option value='15'>Loisirs<option value='6'>Médecins<option value='14'>Para-médical<option value='11'>Réseaux sociaux<option value='16' selected>Restauration<option value='7'>Services privés<option value='8'>Services publics<option value='9'>Voisins</select></td>
</tr><tr>
  <td class='libel'>Exporter</td>
  <td class='data'>Oui<input type="radio" name="export" value="1"> 
                   Non<input type="radio" name="export" value="0" checked>  
                   </td>
</tr><tr>
  <td class='libel'> </td>
  <td class='data'>

     <hr width="235" size="1" align="left" noshade>

     <input type="submit" name="submit" value="Modifier" class="bt">  
     <input type="button" name="clear" value="Nettoyer" onclick="javascript:window.location='/adresses.php'" class="bt">  
     <input type="button" name="seek" value="Chercher" onclick="javascript:window.location='/adresses.php?a=lk4'" class="bt"><br/>
     <input type="button" name="word" value="Word" onclick="javascript:window.location='/adresses.php?a=rtf'" class="bt">  
     <input type="button" name="excel" value="Excel" onclick="javascript:window.location='/adresses.php?a=xls'" class="bt">  
     <input type="button" name="sheet" value="Tableau" onclick="javascript:window.location='/adresses.php?a=tab'" class="bt">  <br/>
     <input type="button" name="sql" value="sql" onclick="javascript:window.location='/adresses.php?a=sql'" class="bt5">  
     <input type="button" name="csv" value="csv" onclick="javascript:window.location='/adresses.php?a=csv'" class="bt5">  
     <input type="button" name="xml" value="xml" onclick="javascript:window.location='/adresses.php?a=xml'" class="bt5">  
     <input type="button" name="ebk" value="ePub" onclick="javascript:window.location='/adresses.php?a=ebk'" class="bt5">  <br/>
     <input type="button" name="grp" value="grp" onclick="javascript:window.location='/adresses.php?a=grp'" class="bt5">  
     <input type="button" name="vcf" value="vcf" onclick="javascript:to_VCF()" class="bt5"> 
     <select name="version"><option value="2.1" selected>v2.1</option><option value="3.0">v3.0</option><option value="4.0">v4.0</option></select>
     →mail <input type="checkbox" name="bymail" value="0" onclick="javascript:hideshow()">
     <select name="cod" class="viah"><option value="utf8">UTF-8</option><option value="iso">ISO-8859-1</option></select>
     <input type="text" name="via" size="50" class="viah" placeholder="Adresse mail de destination">

     <hr width="235" size="1" align="left" noshade>

     Sélect./Désélect. <select name='idgrsel'><option value='0'>-- Tous --<option value='1'>Amis<option value='13'>Avocats-Huissiers<option value='2'>Collègues<option value='3'>Commerces<option value='4'>Connaissances<option value='12'>Divers<option value='18'>EHPAD Les Mées<option value='5'>Famille<option value='17'>GULL Linux<option value='10'>Hôpital Tenon<option value='15'>Loisirs<option value='6'>Médecins<option value='14'>Para-médical<option value='11'>Réseaux sociaux<option value='16'>Restauration<option value='7'>Services privés<option value='8'>Services publics<option value='9'>Voisins</select><br/>
     <input type="button" name="sel1" value="Sélectionner" onclick="javascript:selectexport('plus')" class="bt11">   
     <input type="button" name="sel0" value="Déselectionner" onclick="javascript:selectexport('moins')" class="bt11">

     <hr width="235" size="1" align="left" noshade>

     <input type="button" name="show" value="select" onclick="javascript:window.location='/adresses.php?a=vse'" class="bt5">  
     <input type="button" name="clone" value="cloner" onclick="javascript:cloner()" class="bt5">  
     <input type="button" name="noname1" value="..." onclick="javascript:alert('A venir bientôt...')" class="bt5">  
     <input type="button" name="noname2" value="..." onclick="javascript:alert('A venir bientôt...')" class="bt5">

     <hr width="235" size="1" align="left" noshade>
  </td>
</tr><tr>
  <td class='libel'> </td>
  <td class='info' style='padding-top:8px; padding-left:5px'>
     Enregistré le : 03/12/2018 19:52:51 GMT<br/>Mis à jour le  : 03/12/2018 19:52:51 GMT<br/>226 personnes enregistrées<br/>
<input type="button" name="info" value="info" style="margin-top:8px;" onclick="javascript:infos(1);" class="bt">
<input type="button" name="help" value="Aide" style="margin-top:8px;margin-left:10px" onclick="javascript:infos(2);" class="bt">
<input type="button" name="doc" value="Doc (fr)" style="margin-top:8px;margin-left:10px" onclick="javascript:window.location='/adresses.php?a=doc'" class="bt"><br/>
<input type="button" name="ask" value="Demander" style="" onclick="javascript:askfor()" class="bt11">
<input type="button" name="future" value="?" style="margin-left:12px" onclick="javascript:later()" class="bt11">  </td>
</tr><tr>
  <td class='libel'></td>
  <td class='data'>
    <div class="flags">Langues disponibles (dans le code) :</div>
    <a href="#"><img src="data:image/jpg;base64,
 ... ... ... ... ... ... .. ... ... ... ... ...
b4p4t4NAxhvNiFmNeiPs9agzBnHvEf19u1DLDu6bfq2ddvqU/9k=" class="flag" alt="Drapeau Anglais" /></a>

    <a href="#"><img src="data:image/jpg;base64,
 ... ... ... ... ... ... .. ... ... ... ... ...
SIbP0GUFx6psb5TZbtVNq1yDOwWmeaD0hEKZ0n4CpPDrRTvq6C//2Q==" class="flag" alt="Drapeau Français" /></a>
	<!-- ~~~~~~~~~~~~~~~~ -->
    <input type="hidden" name="idca" value="226">
    <input type="hidden" name="action" value="modif">
    <input type="hidden" name="usr" value="Pierre">	
	<!-- ~~~~~~~~~~~~~~~~ -->
  </td>  
</tr>
</table>


<!-- ~~~~~~~~~~~~~~~~~~~~ -->
</td>
</tr>
</table>
</form>

</div>
</body>
</html>


Si tu veux le code PHP complet en MP, dis-le moi.
Si tu disposes d'un hébergement PHP/MySQL après avoir modifié les lignes avec les infos pour accéder à MySQL, il suffit de taper
http://........./adresses.php?a=ini
pour créer les tables, puis de l'utiliser.
0
Bonjour

Tu as dans ton form un élément qui s'appelle "submit".

document.personne.submit désigne cet élément, et non plus la méthode submit de document.personne.

Renomme ton élément différemment, et document.personne retrouvera sa méthode "submit".

Remarque complémentaire : pourquoi écris-tu "Comme il ne peut y avoir qu'un seul bouton de type "submit" dans le formulaire" ? Qu'est-ce qui t'empêche d'en mettre plusieurs ? Il suffit de leur donner des noms différents, et de tester quel est le nom transmis car seuls les boutons cliqués sont transmis. Tu peux également leur donner le même nom, mais deux "value" différentes.
1
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 137
15 déc. 2018 à 18:35
Alors, là ! Super merci, grand bravo et chapeau bas. A double titre.

D'abord le fait qu'une fonction submit() disparaisse au profit d'un contrôle ayant le même nom, ce n'est pas d'une évidence flagrante. Vu qu'en PHP une variable $truc peut cohabiter avec une fonction truc(), je n'ai jamais pensé qu'il pût en être différemment avec Javascript ! Tu dois avoir pas mal d'heures de javascript derrière toi...

Ensuite, le fait qu'il puisse y avoir plusieurs boutons de type submit ! J'ai toujours cru et codé avec l'idée que s'il pouvait y avoir plusieurs formulaires dans la même page, ce qui n'était pas gênant car chacun d'eux avait leur nom propre, il ne pouvait y avoir qu'un seul et unique bouton de type submit par formulaire. Je viens d'apprendre donc, que dans un formulaire il peut y avoir plusieurs boutons de type submit et qui plus est, avec le même nom et que la différnce se fera par la valeur ! Bluffé. Sérieusement, ça m'ouvre d'autres perspectives. Merci.

Si ça t'intéresse, je peux t'envoyer en MP le code complet, le tester et proposer des améliorations de fonctionnalités voire corriger un bug sur lequel je bute aussi (facultatif :-). C'est une gestion de carnet d'adresses avec différents types d'export. Objectif : fichier PHP unique.

En tout cas un très grand merci, t'as pas volé ton pseudo, toi ! ;-)

Question résolue.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023
15 déc. 2018 à 18:55
comme quoi... dès qu'on montre toutes les infos nécéssaires (un code un peu plus fourni par exemple) peut vite aider à trouver la réponse..... et ça.. même si tu pensais le contraire.
Quoi qu'il en soit, pense à mettre le sujet en résolu. Merci.
0
heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 137 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
15 déc. 2018 à 20:20
ça ne me gênait pas d'afficher le code. Mais il faisait plus de 3300 lignes, je n'avais pas envie de faire comme certains qui te balancent le code entier d'une page et disent : merci de me trouver l'erreur.

Les gens qui aident sont des gens qui aident, pas des larbins qu'on vient solliciter juste quand on en a besoin.

D'ailleurs, pour éviter d'encombrer le fil, je proposais même d'envoyer le code en privé et n'afficher que ce qui me paraissait utile. Mais tu n'as pas tort non plus, un code un peu plus fourni... Ce qui n'est pas évident c'est de savoir ce qui sera utile. En tout cas merci à toi aussi de t'être arrêté sur cette question et de m'avoir rappelé qu'il existait une console du navigateur que je n'avais jamais eu l'heur d'utiliser. :-(

En tout cas merci à tous et la question est marquée en résolue.
0
Utilisateur anonyme > heliconius Messages postés 545 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023
15 déc. 2018 à 21:08
De rien :)
Je ne souhaite pas m'investir dans l'étude d'un code complet. Par contre, si tu rencontres des bugs, tu sais que tu peux toujours les soumettre au forum.
0