begin process at 2010 03 21 21:42:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaire

 > CODES POSTAUX ET VILLES DANS UN FORMULAIRE

CODES POSTAUX ET VILLES DANS UN FORMULAIRE


 Information sur la source

Note :
9,75 / 10 - par 4 personnes
9,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaire Niveau :Initié Date de création :05/01/2003 Date de mise à jour :09/01/2003 00:32:56 Vu :13 214

Auteur : Dexterin

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

J'avais le problème suivant... en fait les problèmes suivants...

1) Je voulais que l'utilisateur n'ai qu'à entrer un code postal (CP) pour que la ville s'affiche automatiquement... facile me direz-vous (faire apparaitre une valeur y en fonction d'une autre x) oui, mais cas des CP avec plusieurs villes ?
il fallait donc qu'en cas de CP unique pour plusieurs villes, le champs texte 'ville' se change en liste (avec l'apparition d'un nouveau champs texte au cas ou la ville à choisir n'était dans dans la liste...)

2) Je ne voulais pas charger entièrement les 36 000 communes de France (pour l'affichage automatique), mais travailler qu'avec les communes d'une table. Les nouvelles communes, non connues donc, tapées pour la première fois, sont donc enregistrées dans une base, se limitant ainsi le travail aux seules communes entrées dans la base.

Vous suivez déjà le blem ?

J'ai donc créé une table SQL (villes) avec 'code_postal' (un code un 5 chiffre) et
'nom_ville' (le nom de la ville), tous les CP de la table sont chargés en PHP dans un JAVASCRIPT qui permet ensuite :
- d'afficher QUE le champs CP du formulaire lorsqu'il n'y a pas 5 chiffres
- d'afficher directement la ville (modifiable) dans un champs texte 'ville' une fois les 5 chiffres inscrits (champs vierge si le CP est inconnu)
- d'afficher une liste dans le cas ou un même CP est pour plusieurs communes (avec en plus un champs optionnel new_ville au cas ou...)

J'espère que cela vous aidera !

@+

Antoine "Dexterin" dexterin@fnac.net
    

Source

  • function TestVille(obj)
  • {
  • var cp = obj.cp.value;
  • var ligne = "";
  • var cible = document.getElementById("CaseVille");
  • if (cp.length = 5) { cible.innerHTML = "<input type=\"text\" name=\"ville\" id=\"ville\" >"; }
  • if (cp.length < 5) { cible.innerHTML = "<input type=\"hidden\" name=\"ville\" value=\"\" >"; }
  • <?
  • $cte_command = mysql_query("SELECT * FROM villes ORDER BY `code_postal` ASC", $dex_cte_db);
  • $cte = 0;
  • $cte_1 = "?";
  • $cte_max = mysql_num_rows($cte_command) - 1;
  • while ($cte <= $cte_max)
  • {
  • $cte_2 = mysql_result($cte_command,$cte,code_postal);
  • if ($cte != $cte_max)
  • {
  • $cte_3 = mysql_result($cte_command,($cte + 1),code_postal);
  • }
  • else
  • {
  • $cte_3 = "";
  • }
  • if (($cte_1 == $cte_2) and ($cte_2 == $cte_3))
  • {
  • echo "ligne += \"<option value=\\\"" . mysql_result($cte_command,$cte,nom_ville) . "\\\">" . mysql_result($cte_command,$cte,nom_ville) . "</option>\\\"; ";
  • }
  • if (($cte_1 == $cte_2) and ($cte_2 != $cte_3))
  • {
  • echo "ligne += \"<option value=\\\"" . mysql_result($cte_command,$cte,nom_ville) . "\\\">" . mysql_result($cte_command,$cte,nom_ville) . "</option>\"; ligne += \"</select>\"; ligne += \"<BR> autre ? <input type=\\\"text\\\" name=\\\"ville\\\" id=\\\"new_ville\\\" size=\\\"18\\\" value=\\\"\\\">\"; cible.innerHTML = ligne; } ";
  • }
  • if (($cte_1 != $cte_2) and ($cte_2 == $cte_3))
  • {
  • echo "if (cp == " . $cte_2 . ") { ligne += \"<select name=\\\"ville\\\">\"; ligne += \"<option value=\\\"" . mysql_result($cte_command,$cte,nom_ville) . "\\\">" . mysql_result($cte_command,$cte,nom_ville) . "</option>\"; ";
  • }
  • if (($cte_1 != $cte_2) and ($cte_2 != $cte_3))
  • {
  • echo "if (cp == " . $cte_2 . ") { cible.innerHTML = \"<input type=\\\"text\\\" name=\\\"ville\\\" id=\\\"ville\\\" size=\\\"20\\\" value=\\\"" . mysql_result($cte_command,$cte,nom_ville) . "\\\">\"; } ";
  • }
  • $cte_1 = $cte_2;
  • $cte_2 = $cte_3;
  • $cte++;
  • }
  • mysql_free_result($cte_command);
  • ?>
  • }
  • et pour le code :
  • echo "<input type=\"text\" name=\"cp\" value=\"" . $cp . "\" size=\"5\" OnKeyUp=\"TestVille(this.form)\">";
  • echo "<TABLE><TR><TD valign=top align=right id=\"CaseVille\"></TD></TR></TABLE>";
  • le formulaire transmet alors 3 variables
  • cp (pour le code postal entré)
  • ville (pour la ville sélectionnée)
  • new_ville (automatiquement vide dans le cas d'un champs "texte" ville, et vide ou plein dans le cas d'une "liste" pour le champs ville)
function TestVille(obj)
	{
	var cp = obj.cp.value;
	var ligne = "";
	var cible = document.getElementById("CaseVille");
	if (cp.length = 5) { cible.innerHTML = "<input type=\"text\" name=\"ville\" id=\"ville\" >"; } 
    if (cp.length < 5) { cible.innerHTML = "<input type=\"hidden\" name=\"ville\" value=\"\" >"; } 
	<?
	$cte_command = mysql_query("SELECT * FROM villes ORDER BY `code_postal` ASC", $dex_cte_db);
	$cte = 0;
	$cte_1 = "?";
	$cte_max = mysql_num_rows($cte_command) - 1;
	while ($cte <= $cte_max) 
		{
		$cte_2 = mysql_result($cte_command,$cte,code_postal);
		if ($cte != $cte_max)
			{	
			$cte_3 = mysql_result($cte_command,($cte + 1),code_postal);	
			}
		else 
			{ 
			$cte_3 = ""; 
			}
		if (($cte_1 == $cte_2) and ($cte_2 == $cte_3))
			{
			echo "ligne += \"<option value=\\\"" . mysql_result($cte_command,$cte,nom_ville) . "\\\">" . mysql_result($cte_command,$cte,nom_ville) . "</option>\\\"; ";
			}
		if (($cte_1 == $cte_2) and ($cte_2 != $cte_3))
			{
			echo "ligne += \"<option value=\\\"" . mysql_result($cte_command,$cte,nom_ville) . "\\\">" . mysql_result($cte_command,$cte,nom_ville) . "</option>\"; ligne += \"</select>\"; ligne += \"<BR> autre ? <input type=\\\"text\\\" name=\\\"ville\\\" id=\\\"new_ville\\\" size=\\\"18\\\" value=\\\"\\\">\"; cible.innerHTML = ligne; } ";
			}
		if (($cte_1 != $cte_2) and ($cte_2 == $cte_3))
			{
			echo "if (cp == " . $cte_2 . ") { ligne += \"<select name=\\\"ville\\\">\"; ligne += \"<option value=\\\"" . mysql_result($cte_command,$cte,nom_ville) . "\\\">" . mysql_result($cte_command,$cte,nom_ville) . "</option>\"; "; 
			}
		if (($cte_1 != $cte_2) and ($cte_2 != $cte_3))
			{ 
			echo "if (cp == " . $cte_2 . ") { cible.innerHTML = \"<input type=\\\"text\\\" name=\\\"ville\\\" id=\\\"ville\\\"   size=\\\"20\\\" value=\\\"" . mysql_result($cte_command,$cte,nom_ville) . "\\\">\"; } ";
			}
		$cte_1 = $cte_2;
		$cte_2 = $cte_3;
		$cte++;
		}
	mysql_free_result($cte_command);
	?> 
	}





et pour le code :

echo "<input type=\"text\" name=\"cp\" value=\"" . $cp . "\" size=\"5\" OnKeyUp=\"TestVille(this.form)\">";

echo "<TABLE><TR><TD valign=top align=right id=\"CaseVille\"></TD></TR></TABLE>";

le formulaire transmet alors 3 variables

cp (pour le code postal entré)
ville (pour la ville sélectionnée)

new_ville (automatiquement vide dans le cas d'un champs "texte" ville, et vide ou plein dans le cas d'une "liste" pour le champs ville)



    

 Conclusion

Pour le PHP, il faut préalablement que
$dex_cte_db = mysql_connect($dex_hostname, $dex_username, $dex_password);

C'est une variable que je stock dans un fichier req.infos.php que j'inclue systémétiquement au début de chaque page PHP...



    


 Sources de la même categorie

DÉSACTIVER UN BOUTON SUBMIT APRÈS ENVOI DU FORMULAIRE par SoftDeath
IMPLEMENTATION DE RANDOM PERSONNALISÉ par ousous
IMPLEMENTATION DE HASHTABLE par ousous
JAVASCRIPT.UTIL.ITERATOR par ousous
Source avec Zip Source avec une capture PALETTE DE COULEURS par titnome

Commentaires et avis

Commentaire de jjdagadir le 15/10/2003 22:06:13

BON OK UN PEU PLUS D EXPLICS ANTOINE STP CAR TA SOURCE ME PARAIT INTERRESSANTE - ET DONC SI TU POUVAIS DECORTIQUER UN PEU PLUS...POUR AIDER - MERCI D AVANCE
KENAVO

Commentaire de calidigy le 05/05/2005 11:31:20

Salut
il est vrai qu'une explication aurait ete sympas pour les gens qui debute, car la c plutot posté comme un bourrin de base qd meme:-/

Commentaire de calidigy le 05/05/2005 11:31:24

Salut
il est vrai qu'une explication aurait ete sympas pour les gens qui debute, car la c plutot posté comme un bourrin de base qd meme:-/

Commentaire de calidigy le 05/05/2005 11:31:25

Salut
il est vrai qu'une explication aurait ete sympas pour les gens qui debute, car la c plutot posté comme un bourrin de base qd meme:-/

Commentaire de calidigy le 05/05/2005 11:32:25

oops desolé pour les 2 repetitions mon navigateur a merder lol

Commentaire de manubarnum le 12/05/2005 18:40:49

THX
Tout à fait ce qu'il me faut!!!!
@+

Commentaire de boomkat le 03/08/2005 16:48:35

Salut
Ouai sympa le code, mais ce qui serait cool c'est que qu'en plus tu fasse un dump de la table MySQL, histoire qu'on gagne un peu de temps à l'implémentation.
Merci

Commentaire de newton0 le 25/09/2005 09:40:36

Bonjour,
Je n'arrive pas du tout à le faire fonctionner correctement:
Des le depard il m'affiche toute ma table de ville sur la page...soit un très long chargement peut que j'ai mal placé les balises!

<script language="javascript">
la_fct...
</script>
<?
echo "<input type=...etc...
?>
Merci pour l'aide

Commentaire de beur81 le 19/07/2006 08:34:57

bonjour  dexterin c'est pour savoir si tu saurais m'aider je n'arrive pas inserer ton code javascript dans le mien saurais tu me le faire stp
ps c'est super important merci d'avance

<script type="text/javascript">
function verifpwd(zonesaisie)
{
if  (zonesaisie.value=="")
{
alert (" remplisez tous les champs avec une * S.V.P!");
zonesaisie.focus();
return false;
}
return true;
}


    </script>
<form name="formu" action="ajout_traitement_personnes.php" method="post" onsubmit="return (verifpwd(this.nom) && verifpwd(this.prenom)&& verifpwd(this.datenaissance)&& verifpwd(this.adresse)&& verifpwd(this.localite)&& verifpwd(this.Email)&& verifpwd(this.tel))">
<center><table border='0'>
<tr><td bgcolor="darkblue"><center><font color="white">Formulaire d'identification</font></center></td></tr>
</table>
<table>
<tr><td><b>Nom *</b></td><td><input type="text" name="nom" maxlength="60" ></td></tr>
<tr><td><b>Prénom *</b></td><td><input type="text" name="prenom" maxlength="60"></td></tr>
<tr><td><b>Date de naissance *</b></td><td><input name="datenaissance" id="datenaissance" type="text" value="" onClick= "scwShow (document.getElementById('datenaissance'), this);" readonly="1">

<tr><td><b>Sexe </td><td><select name="sexe"><option>
<option>F
<option>M
</select>
<tr><td><b>Adresse *</b></td><td><input type="text" name="adresse" maxlength="80" size="35"></td></tr>
<tr><td><b>Localité *</b></td><td><input type="text" name="localite" maxlength="70"></td></tr>
<tr><td><b>Code Postal *</b></td><td><input type="text" name="code_postal" maxlength="4" size="4"></td></tr>
<tr><td><b>Gsm *</b></td><td><input type="text" name="gsm" maxlength="15" size="9"></td></tr>
<tr><td><b>Tel </b></td><td><input type="text" name="tel" maxlength="14" size="9"></td></tr>

<tr><td><b>Email</b></td><td><input type="text" name="site" maxlength="40" size="35"></td></tr>



<title>S&eacute;lection d'une image &agrave; envoyer dans un formulaire</title>    
    <script type="text/javascript">
var im = null;
function montre_images() {
im = window.open("", "Apercu", "left=0,top=0,status=no,scrollbars=yes,menubar=no,resizable=yes,toolbar=no,dependent");
if(im != null) {
if(im.opener == null) im.opener = self;
im.document.open();
im.document.write("<html><head><title>Aper&ccedil;u des images</title></head>");
im.document.write("<body><center><h1>Cliquez sur l'image choisie :</h1><table border=0 cellpadding=1 cellspacing=3><tr>");
<?php
// Le code PHP qui suit sert à lister les images du dossier où elles sont stockées
clearstatcache();
$dir = "personnes";
$pwd = getcwd();
chdir($dir);
$handle = @opendir(".");
$n = 0;
while (false !== ($file = readdir($handle))) {  // Lister le contenu du dossier img contenant les images
   if (is_file($file)) {  // Ne pas retenir les répertoires      
  //$size = getimagesize($file);
  //if($size[2] == "1" || $size[2] == "2" || $size[2] == "3") {  
  if (eregi(".gif", $file) || eregi(".jpg", $file) || eregi(".png", $file)) { // Ne retenir que les fichiers images (GIF, JPEG ou PNG)
echo "im.document.write(\"<td><img src='./personnes/$file' alt='$file' height='100' border='0' onclick='javascript: self.opener.document.image.src=this.src; self.opener.document.formu.nom_image.value=this.src; self.close();'></td>\");\n";
$n++;
if ($n == 3) { // Après 3 images, l'affichage descend d'une ligne
echo "im.document.write(\"</tr><tr>\");\n";
$n = 0;
}
  }
   }
}
closedir($handle);
chdir($pwd);
?>

im.document.write("</tr></table></center></body></html>\n");
im.document.close();
im.focus();
return true;
}
}
    </script>
  </head>





</select><br><br></td></tr>




<body>

<!--<p><h1>Formulaire exp&eacute;rimental</h1></p>-->
<input type="hidden" name="nom_image" value="Aucune URL transmise">
<p align="right"><font color='red'>Une photo :<br><img name="image" src="" alt="Cliquez ici pour choisir une photo" width="150" border="1" onclick="javascript: montre_images();" onchange="javascript: document.nom_image.value=this.src "></p>





</table>
<tr><td>&nbsp;</td><td><input type="submit" value="Enregistrer">&nbsp;<br><br><A href='Ajout_personnes.php'><img src="bt_choisir.png" border="0" height="40" title="ajout de personnes"><A href='voir_personne2.php'><img src="bt_emprunts.png" border="0" height="40" title="voir les personnes"></A><A href='ajout_video.php'><img src="bt_films.png" border="0" height="40" title="ajout de films"></A><A href='affiche_video.php'><img src="bt_liste.png" border="0" height="40"title="voir video"></A><A href='ajouter_location.php'><img src="bt_importer.png" border="0" height="40"title="ajout de pret"></A><A href='voir_location.php'><img src="bt_cat.png" border="0" height="40"title="voir location"></A><A href='ajout_acteurs.php'><img src="bt_conf.png" border="0" height="40"title="ajout d'acteur ou d'actrice"></A><A href='voir_acteurs.php'><img src="bt_admin.png" border="0" height="40" title="voir acteur ou actrice"></A><A href='recherche.php'><img src="bt_reduire.png" border="0" height="40"title="recherche de films"></A>

</center>

</form>

  </body>








</select><br><br></td></tr>

Commentaire de pedrito57 le 19/01/2010 13:03:56

Je me suis basé sur ce code pour créer le mien, car celui-ci me paraissait faut, je l'ai donc modifié. Il marche bien.
Si quelqu'un en a besoin, faite-moi signe.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales