            * * *     Forum OXMO Message  * * *

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Titre : [CONSEIL] Prog - réaliser un menu multi selection
Lancé le 10-02-2005 16:56 par Morpheus
Téléchargé de https://www.forum.oxmo.org/showthread.php?threadid=32733
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

[Post 1]
Auteur : Morpheus
Date : 10-02-2005 16:56
Titre : [CONSEIL] Prog - réaliser un menu multi selection

j'appelle à l'aide...
Voila je voudrais realiser ceci : 

[IMG]http://www.rudologia.fr/imagespersos/menu.jpg[/IMG] 

c possible puisque c sur le site de l'anpe mais j'arrive po à le refaire, c fait en javascript dc si l'un d'entre vous a deja fait ceci ou sait le faire merci de me renseigner, je vous en serais vraiment tres reconnaissant. §pardon§

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

[Post 2]
Auteur : Morpheus
Date : 10-02-2005 17:25

j'ai trouvé un premier element de reponse <a href="http://www.javascriptfr.com/code.aspx?ID=16794">ici</a> par contre ca marche que sous IE ...§bouh§ Mais bon je vais etudier ca et essayer de le bicouiller. Si vous avez d'autres liens de ce style merci (;

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

[Post 3]
Auteur : shakes808080
Date : 28-02-2005 23:23

j'ai réalisé un formulaire pour le forum, ça se passe ici (oublie la pub lycos):

[url]http://membres.lycos.fr/shakes888/oo/JCT_fr.htm[/url]


<!-- [msg_moderateur] --> §modon§ Au fait, [HOWTO], c'est quand on fait un tutoriel. Merci de reprendre le titre de ton topic avec le bon tag.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

[Post 4]
Auteur : Morpheus
Date : 08-03-2005 17:26

merci shakes mais en fait ce que je voudrais realiser c ce menu qui permet de selectionner des regions ds la fenetre de gauche et de les ajouter à celle de droite.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

[Post 5]
Auteur : Maousse
Date : 08-03-2005 17:52

sélection avec la touche Ctrl enfoncée.

Si c'est pas aussi simple, sur le site de Texas Instruments (TI.com) ils ont des forlumaires qui permettent de le faire, regardes donc le code! :)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

[Post 6]
Auteur : Morpheus
Date : 10-03-2005 11:12

Bon vu que je n'arrivais jamais a recuperer tous les codes (po moyen de recup les pages.js ou etait le plus gros du code) j'ai reflechi pour le faire tout seul et je suis parti d'un editeur html en ligne que j'avais fait et ENFIN marche :D
[URL=http://www.rudologia.fr/editeur/menu.php]voir le resultat ici[/URL] 

si ca peut interesser certains voila ce que j'ai fait : 

code javascript : 
[quote]
<script language="Javascript">
var compteur=0;
chaine=new Array();
chaine_values=new Array();
function Ajout (HtmlSource)
{
var Html = document.getElementById(HtmlSource).innerHTML;
var debut=Html.indexOf("selected",0);
debut=Html.lastIndexOf("value",debut);
var Value=Html.substring(debut+6,10000); 

// Attention si votre select contient beaucoup d'options mettre un chiffre
// élévé car cela represente le nombre de caratere total contenu ds votre select

var fin=Value.indexOf("selected",0);
Value=Value.substring(0,fin-1);
debut=Html.indexOf("selected",0);
var affiche=Html.substring(debut+9,10000);
fin=affiche.indexOf("</OPTION>",0);
affiche=affiche.substring(0,fin);
var valid_compt="no";
var exist="no";
for (i=0;compteur>=i;i++)
{
	if (i!=0&&chaine[i-1].indexOf(affiche)!=-1){exist="yes";}
}
chaine[compteur]=affiche;
chaine_values[compteur]=Value;
for (i=0;compteur>=i;i++)
{
	if (exist=="no")
	{
		document.forms.form_article.recept.options[i]=new Option(chaine[i]);
		valid_compt="yes";
	}
	
}
if (valid_compt=="yes"){compteur++;}
document.forms.form_article.MaChaine.value=chaine_values;
}
function Suppr(){
n=Number(document.form_article.recept.options.selectedIndex);
for (i = n; i < Number(document.form_article.recept.options.length-1); i++)
{
  document.form_article.recept.options[i] = new Option((document.form_article.recept.options[ Number(i+1) ].text ),(document.form_article.recept.options[ Number(i+1) ].value) );
}
document.form_article.recept.options.length--;
chaine[n]=null;
chaine_values[n]=null;
while (n<compteur)
{
	chaine[n]=chaine[n+1];
	chaine_values[n]=chaine_values[n+1];
	n++;
}
compteur--;
document.forms.form_article.MaChaine.value=chaine_values;
} 
</script>
[/quote] 

et pour le formulairet html : 
[PHP]
<form action="test3.php" method="post" name="form_article">
<table>
	<tr>
  		<td>
			<table border="1"><tr><td>
			<select name="liste" size="15" style="width:23em" ONDBLCLICK="Ajout('liste');">
			  <option value="tout">Toutes</option>
				<option value="67,68">Alsace</option>
				<option value="24,33,40,47,64">Aquitaine</option>
				<option value="03,15,43,63">Auvergne</option>
				<option value="14,50,61">Basse Normandie</option>
				<option value="21,58,71,89">Bourgogne</option>
				<option value="22,29,35,56">Bretagne</option>
				<option value="18,28,36,37,41,45">Centre Val de Loire</option>
				<option value="08,10,51,52">Champagne Ardennes</option>
				<option value="2A,2B">Corse</option>
				<option value="25,39,70,90">Franche Comte</option>
				<option value="27,76">Haute Normandie</option>
				<option value="75,76,78,91,92,93,94,95">Ile de France</option>
				<option value="11,30,34,48,66">Languedoc Roussillon</option>
				<option value="19,23,87">Limousin</option>
				<option value="54,55,57,88">Loraine</option>
				<option value="09,12,31,32,46,65,81,82">Midi Pyrénées</option>
				<option value="59,62">Nord Pas de Calais</option>
				<option value="44,49,53,72,85">Pays de la Loire</option>
				<option value="02,60,80">Picardie</option>
				<option value="16,17,79,86">Poitou Charentes</option>
				<option value="04,05,06,13,83,84">Provence Alpes Cote d"Azur</option>
				<option value="01,07,26,38,42,69,73,74">Rhone Alpes</option>
				<option value="971,972,973,974,975,976">Outre Mer</option>
				<option value="00">Etranger</option>
			</select>
			</td>
			<div align="center">
			<td><button onclick="Ajout('liste');">&nbsp;&nbsp;&nbsp;--->&nbsp;&nbsp;&nbsp;</button><br><br>
			<button onClick="Suppr();">&nbsp;&nbsp;&nbsp;<---&nbsp;&nbsp;&nbsp;</button></td>			
          	<td>
			<select name="recept" size="10" style="width:23em" ONDBLCLICK="Suppr();">
			</select><input type='hidden' name='MaChaine' value=''><input type='hidden' name='MonCompteur' value=''>
			</td></tr></table>
			<div align='center'><input type="submit" value="Envoyer la selection"></div>
			<br>
			</div>
		</td>
	</tr>
</table>
</form>
[/PHP]

voila en esperant que ca pourra servir à qq'un §hello§

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

[Post 7]
Auteur : Morpheus
Date : 10-03-2005 15:46

j'ai un nouveau probleme et je ne comprends po trop pkoi...
en fait tout marche sauf si j'ai j'ai plus de 10 choix ds ma liste du select de depart.§grattetêt2§
Qq'un voit t'il d'ou cela pourait il venir? (taille d'un tableau mal faite ou je ne sais quoi...)§jesaispas§
Dans l'example ci dessus j'ai modifié et si vous testez les 10 premiers marchent mais po apres

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

[Post 8]
Auteur : Maousse
Date : 10-03-2005 15:55

je n'y connais que dalle, mais si tu fais une déclaration du genre var=00 au lieu de 0, tu n'arranges pas les choses?

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

[Post 9]
Auteur : Morpheus
Date : 10-03-2005 15:57

[QUOTE][i]Message écrit par Maousse, le 10-03-2005 à 15:55 [/i]
[B]je n'y connais que dalle, mais si tu fais une déclaration du genre var=00 au lieu de 0, tu n'arranges pas les choses? [/B][/QUOTE]
nope ai essayé ca change rien (me suis posé meme question:D)

Bon j'ai trouvé : 
quand je fais mes subsrting au debut (je recherche mes variables dans le code html du select) j'ai  plus de 500 caracteres... c'est ce qu'on appelle l'erreur bete §mondieu§
var Value=Html.substring(debut+6,[color=#ff003f]500[/color]);  

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

