bonjour,
Merci d'avance de prendre le temps de lire ma demande.
Voilà je vous explique, j'ai un formulaire qui comporte trois champs. le premier champ région => affiche toutes les régions de france => ensuite suivant la région sélectionnée (dans un champ select) => cela affiche un code_établissement (dans un champ select) => et suivant le code que l'on sélectionne => cela affiche dans un champ input la localisation c'est à dire le nom du site.
Maintenant, je voudrais faire "fusionner" les champ code_etablissement et localisation. c'est à dire, je souhaite faire afficher dans le select du code établissement, le code établissement suivi d'un tiret et la localisation à l'affichage, mais dans le traitement de mon formulaire, je souhaite utiliser que les codes établissements.
voici le code que je souhaite modifier.
// Afficher les elements de select souhaites
function affine_code_site(form, region_select, etab_select, etab_list, PourFiltre) {
var code_region = form.elements[region_select].options[form.elements[region_select].selectedIndex].value;
var tab = new Array();
var j = 0;
for(var i=0; i<etab_list.length; i++) {
var code_str = new String(etab_list[i]);
var index_tiret = code_str.indexOf('-',0);
var code = parseInt(code_str.substr(0,index_tiret));
if(code == code_region)
tab[j++] = code_str.substr(index_tiret+1,code_str.length);
}
form.elements[etab_select].options.length = 0;
if (PourFiltre)
if (tab.length > 1) {
form.elements[etab_select].options[0] = new Option ('Tous', 0);
for(var i=0; i < tab.length; i++) form.elements[etab_select].options[i+1] = new Option(tab[i], tab[i]);
} else
form.elements[etab_select].options[0] = new Option ('Tous', 0);
else
for(var i=0; i < tab.length; i++) form.elements[etab_select].options[i] = new Option(tab[i], tab[i]);
}
// Afficher les informations du site
function affiche_infos_site(form, code_etab_select, champ_cible, etab_name_list) {
var code_etab = form.elements[code_etab_select].options[form.elements[code_etab_select].selectedIndex].value;
var result = "Erreur";
for(var i=0; i<etab_name_list.length; i++) {
if (code_etab == etab_name_list[i][0]) {
result = etab_name_list[i][1];
break;
}
}
form.elements[champ_cible].value = result == 'Tous' ? 'Tous les établissements' : result;
}
code utilisédans la page formulaire
<?php
$my_request = "SELECT * FROM etablissements";
$etabs = $db->Execute($my_request);
$etab_list = "[";
$etab_name_list = "[";
while(!$etabs->EOF) {
$etab_list .= "'".$etabs->fields["id_region"]."-".$etabs->fields["code_site"]."'";
$etab_name_list .= "['".$etabs->fields["code_site"]."', '".str_replace("'","\'",rtrim($etabs->fields["nom"]))."']";
$etabs->MoveNext();
if(!$etabs->EOF) {
$etab_list .= ", ";
$etab_name_list .= ", ";
}
}
$etab_list .= "]";
$etab_name_list .= "]";
$etabs->Close();
?>
<script language="javascript">
<!--
var etab_list = <?php echo $etab_list; ?>;
var etab_name_list = <?php echo $etab_name_list; ?>;
affine_code_site(document.forms[0], 'code_region', 'code_etablissement', etab_list, false);
<?php
$code_etab_tmp = "";
if($have_user_data && $_SESSION["config_utilisateur"]["code_etablissement"] != "") {
$code_etab_tmp = $_SESSION["config_utilisateur"]["code_etablissement"];
echo "selectionner(document.forms['form_utilisateur'], 'code_etablissement', '".$code_etab_tmp."');";
}
?>
affiche_infos_site(document.forms[0], 'code_etablissement', 'localisation', etab_name_list);
// -->
</script>
Rappel de la demande : je souhaite faire afficher la localisation (nom du code établissement) à côté du code_établissement dans la page du formulaire (mais pour mon filtre, quand on sélectionne une option, j'aimerai qu'il ne prenne en compte que les codes_établissements et non pas les codes_établissment et la localisation (le nom du site).
Merci d'avance pour votre aide.
Cordialement.
Dromos.