auto complétion des champs

Eléphant du PHP | 97 Messages

05 mars 2012, 16:03

Bonjour,

Voici un nouveau casse-tête :
un administrateur peut créer un nouvel utilisateur. Pour cela il se rend à la page correspondante et remplit les champs du profil (nom, prénom, mail, adresse,...)

Je souhaiterai créer un script qui implémente automatiquement le champ "adresse" en fonction de la région du nouvel utilisateur : l'utilisateur choisit dans la liste déroulante la région du nouvel utilisateur, et hop, selon celle-là, on lui complète son champ adresse à partir de ce qui est enregistré dans la base de données (1 région <==> 1 adresse)

J'ai fait quelque chose d'un peu farfelu, il y a sans doutes plus simple et moins lourd mais bon, je suis parti comme ça.
En gros, je lance une requête SQL qui va compter le nombre de régions qu'il y a dans la BD. Ensuite je lance une boucle for jusqu'au nombre de régions et je crée un formulaire hidden qui va contenir la valeur de l'adresse correspondante. for i=1 ==> id_region=1 ==> adresse de la région 1 etc...

Si j'essaye d'afficher, ça fonctionne bien. Le problème vient dans l'appel de la fonction javascript où je ne sais pas trop comment faire vu que le nom de mes formulaires correspondent à la variable de la boucle for.


Voici la création de mes formulaires cachés.
if(isset($_GET['action']) && $_GET['action']=="new"){

//on compte le nombre de régions enregistrées
	$req='SELECT COUNT(id_region) FROM region';
	$reqquery=mysql_query($req);
	$count = mysql_fetch_array($reqquery, MYSQL_ASSOC);
	echo '<td><input type="hidden" name="nbregion" id="nbregion" value="'.$count['COUNT(id_region)'].'"></input></td>';
	//on crée un formulaire hidden qui contient l'adresse de chaque région.
	for ($i=0;$i<$count['COUNT(id_region)'];$i++)
	{
	$reqa='SELECT adresse FROM region WHERE id_region="'.$i.'"+1';
	$reqquerya=mysql_query($reqa);
	$resultat = mysql_fetch_row($reqquerya, MYSQL_ASSOC);
	//echo $resultat['adresse'];
	echo '<td><input type="hidden" name="'.$i.'" id="'.$i.'" value="'.$resultat['adresse'].'"></input></td>';
	echo '</tr>';
	}
}
Voici l'appel de ma fonction javascript.

Code : Tout sélectionner

<script type="text/javascript"> function modif_adresse(){ //on récupère l'id de la région qu'on a selectionné dans la liste déroulante var idregion=document.getElementById("unite_co").value; var nombre=document.getElementById("nbregion").value; for (var i=0; var i < var nombre; var i++) { if (var idregion == var i) { document.formulaire.adresse.value=document.getElementById(var i).value; } } } </script>
En fait, je vois pas trop comment récupérer la valeur fournie dans le champ caché..

Eléphant du PHP | 83 Messages

08 mars 2012, 22:58

Salut,

Pourquoi ne pas faire un nouveau tableau ou vous affectez a chaque région une adresse et comme ça vous faite un combobox des régions et comme ça le champs adresse n'est plus nécessaire car quand vous voulez afficher la fiche de l'utilisateur une petite requête SQL pour cherché l’adresse associé a la région de l'utilisateur!

Bon a ta place je ferais ça!

Bon travail.