Les Snippets

Connexion

Listes déroulantes liées

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 30/03/2006 09:44:08 et initié par malalam [Liste]
Date de mise à jour : 03/04/2006 11:03:05
Vue : 15127
Catégorie(s) : WinForm
Langages dispo pour ce code :
- PHP 3, PHP 4, PHP 5
- Javascript



Langage : PHP 3 , PHP 4 , PHP 5
Date ajout : 30/03/2006
Posté par malalam [Liste]
DateMAJ : 30/03/2006

/**
* version utilisant une requête xmlhttp
*/
<script type="text/javascript">
if (window.XMLHttpRequest) {
   oXmlhttp = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
   oXmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }

function search (clef) {
 oXmlhttp.open('POST','<?php echo $_SERVER['PHP_SELF']; ?>');
 oXmlhttp.onreadystatechange=function() {
  if (oXmlhttp.readyState==4 && oXmlhttp.status == 200) {
   document.body.innerHTML = oXmlhttp.responseText;
  }
 }
 oXmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 var data = 'liste1='+clef
 oXmlhttp.send (data);
}

</script>
<?php
$aTab = array (1 => array ('test', 'pour', 'une', 'blonde'),
  2 => array ('difficile', 'ca?', 'non...'),
  3 => array ('très', 'facile', 'en', 'fait!'));
?>

<form method="post">
<select name="liste1" onchange="search (this.value);">
<?php
foreach ($aTab as $clef => $dump) {
 $selected=(isset($_POST['liste1']) && $_POST['liste1'] == $clef)?'selected="selected"':'';
 echo '<option value="',$clef,'" ',$selected,'>',$clef,'</option>';
}
?>
</select>
<?php
if (isset ($_POST['liste1']) && !empty ($_POST['liste1'])) {
 echo '<select name="liste2">';
 foreach ($aTab[$_POST['liste1']] as $val) {
  echo '<option value="',$val,'">',$val,'</option>';
 }
 echo '</select>';
}
?>
</form>


/**
* version n'utilisant pas de requête xmlhttp
*/
<?php
$aTab = array (1 => array ('test', 'pour', 'une', 'blonde'),
  2 => array ('difficile', 'ca?', 'non...'),
  3 => array ('très', 'facile', 'en', 'fait!'));
?>

<form method="post" id="mainForm">
<select name="liste1" onchange="document.getElementById('mainForm').submit();">
<?php
foreach ($aTab as $clef => $dump) {
 $selected=(isset($_POST['liste1']) && $_POST['liste1'] == $clef)?'selected="selected"':'';
 echo '<option value="',$clef,'" ',$selected,'>',$clef,'</option>';
}
?>
</select>
<?php
if (isset ($_POST['liste1']) && !empty ($_POST['liste1'])) {
 echo '<select name="liste2">';
 foreach ($aTab[$_POST['liste1']] as $val) {
  echo '<option value="',$val,'">',$val,'</option>';
 }
 echo '</select>';
}
?>
</form>

Remarque :
Le choix effectuté dans la 1ère liste conditionne la génération de la seconde liste.
Langage : Javascript
Date ajout : 03/04/2006
Posté par bultez [Liste]
DateMAJ : 03/04/2006
<HTML>
<HEAD>
<TITLE>2 Selects dépendants en JavaScript</TITLE>
<script type="text/javascript">
function gensel2()
{ 
 var s1=document.getElementById("sel1");
 var s2=document.getElementById("sel2");
 s2.length=0;
 for ( var n=0; n<liste[s1.selectedIndex].length; n++ )
 { 
  s2.length++;
  s2.options[s2.length-1].text=liste[s1.selectedIndex][n]; 
 } 
}
</script>
</HEAD>
<BODY>
<form name="frm">
<select size=4
  name="sel1"
  id="sel1"
  onchange="gensel2();">
 <optgroup label="Régions">
  <option>Bretagne</option>
  <option>Centre</option>
  <option>Nord-Pas-de-Calais</option>
 </optgroup>
</select>
<select size=4
  name="sel2"
  id="sel2">
 <optgroup label="Départements">
 </optgroup>
</select>
</form>
<script type="text/javascript">
var liste=new Array(
 new Array("Côtes-d'Armor","Finistère","Ille-et-Vilaine","Morbihan"),
 new Array("Cher","Eure-et-Loire","Indre","Indre-et-Loire","Loir-et-Cher","Loiret"),
 new Array("Nord","Pas-de-Calais")
);
</script>
</BODY></HTML>


Snippets en rapport avec : Liées, Ajax, Xmlhttp, Liste, Déroulante



Codes sources en rapport avec : Liées, Ajax, Xmlhttp, Liste, Déroulante

{PHP} CHAINER 3 LISTES DÉROULANTES EN AJAHT
Voici un exemple pour chainer 3 listes déroulantes en AJAHT (HTML ou Text) un pseudo AJAX sans XML. ...

{PHP} GÉNÉRATEUR DE LISTE DÉROULANTE
Voici une petite fonction sans prétention mais qui peut rendre des services :) Elle permet, à parti...

{PHP} LISTE DÉROULANTE AVEC TOUS LES PAYS
J'ai fait ce script parce que ben à priori je ne l'ai pas trouvé ici. C'est pas grand chose mais ca ...

{Javascript / DHTML} ENFIN UNE LISTE DEROULANTE (COMBOBOX) MODIFIABLE
J'ai longtemps cherché, et finalement j'ai fait mon propre truc, en reprenant qq sources de ce site....

{ColdFusion} RAFFRAICHIR UNE LISTE EN FONCTION D'UNE AUTRE
Ceci illustre la façon de raffraichir un champ de type liste déroulante en fonction d'une autre. ...

{JAVA / J2EE} [SERVLET/AJAX/JDBC]POSSIBILITÉ DE CONSULTATION ET DE QUELQUES MODIFICATIONS D'UNE BDD
C'est un TP. Si vous voulez savoir comment faire de l'AJAX avec des Servlet ou connaître le conte...

{Javascript / DHTML} AJAX EN MOINS DE 50 LIGNES
class ajax super réduite pour les noob :) , pas de gestion d'erreur ni de formulaire, mais reconnais...

{Delphi} COMPOSANT LISTE DE STRINGS AVEC CHAMPS
TRecordsList est une liste de strings, chaque string comportant une ou plusieurs "sous-chaînes" (cha...

{Visual Basic, VB6, VB.NET, VB 2005} EXTRAIRE LE TEXTE DES FENETRES D'APPLICATIONS TIERCES (LISTBOX, LISTVIEW, TEXTBOXES, ...)
une mini source mais assez utile, dans certains cas... cas concrêt: j'ai une appli au boulot qui...

{PHP} ALGORITHME DE DOUGLAS-PEUKER
En ces temps bénis où chaque brin d'herbe est référencé sur GoogleEarth et où la moindre trottinette...