TRAITEMENTS SUR LES SELECT

SweetSofiane Messages postés 4 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 16 février 2005 - 5 déc. 2004 à 03:22
KaiHo Messages postés 19 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 24 mai 2021 - 24 juil. 2010 à 00:44
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27983-traitements-sur-les-select

KaiHo Messages postés 19 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 24 mai 2021
24 juil. 2010 à 00:44
Bravo Roro 06.

Franchement, tes modifs sont viables sous Firefox....

Que du bonheur !

Des jours que je cherche un script comme celui-là. J'ai encore beaucoup de boulot pour en faire ce que je veux, mais tu m'as épargné des heures de dépression
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
9 janv. 2009 à 07:49
bah...

mettre sel,sel2.. dans un formulaire
<form name="frm"...>...</form>
et remplacer sel#.??? par frm.sel#.???

ou remplacer les sel# par
document.getElementById("sel#")
et ajouter id="sel#" sur les balises select

comme déjà dit, et je n'ai
pas fait de mise à jour pour ça.
@+
mrhemp Messages postés 40 Date d'inscription dimanche 23 février 2003 Statut Membre Dernière intervention 24 février 2009
8 janv. 2009 à 18:19
Il est cool ton code, c'est dommage qu'il ne fonctionne pas avec Firefox.
whitedwarfcabs Messages postés 3 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 22 août 2007
22 août 2007 à 16:12
Il semblerait que vous méritiez vos 150.000 roupies (je vous avais pas dit?). Merci messieurs, je teste çà et je vous tiens au courant.
Merci encore
A+
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 août 2007 à 12:03
>>On partage quand meme les 150.000 dollars ^^ ?
pas de problèmes Mrreivax.
tu veux mon n° de compte bancaire ou tu
préfères m'envoyer un chèque ? dans ce
cas je te file mon adresse. ;-) @+
Mrreivax Messages postés 100 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 26 juin 2010 7
21 août 2007 à 11:43
Ouais, c'est sur comme cela ca marche aussi.
C'est meme bien mieux et plus facile.
On partage quand meme les 150.000 dollars ^^ ?
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 août 2007 à 10:06
je n'ai pas été clair...
quand je dis : coté javascript, remplacer les document.getElementById("sel???")
par document.name_du_formulaire["sel???"],
il faut lire, on peut aussi coté javascript...
bien entendu les document.getElementById("sel???") restent valables .
Cordialement. @+
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 août 2007 à 09:26
ajax n'a rien à voir dans l'histoire.
un formulaire ferait aussi l'affaire.
( et coté client, il faut faire la même chose
en plus des xmlhttprequest )

pour envoyer vers le php, effectivement le plus simple,
est d'utiliser un nom du style "sel[]", de mettre le
select multiple, et toutes les option selected.
exemple :


<?php
if (isset($_POST["sel"])) print_r ($_POST["sel"]);
?>
<script type="text/javascript">
function tout()
{ for ( var n=0;n<document.frm["sel[]"].length;n++ )
{ document.frm["sel[]"].options[n].selected="selected"; }
}
</script>
<form name="frm"
onsubmit="tout();"
method="post">
<select name="sel[]"
multiple>
<option value="hein">un
<option value="deux">deux
<option value="trois">trois
</select>

</form>


coté javascript, remplacer les document.getElementById("sel???")
par document.name_du_formulaire["sel???"].
( attention à la syntaxe, pas de point )

Cordialement.
Mrreivax Messages postés 100 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 26 juin 2010 7
21 août 2007 à 01:44
pour whitedwarfcabs.
Tu peux utiliser Ajax pour qu'il enregistre l'odre de tes options.
Tu fais une boucle qui scan tous les options, pis tu envois tout sa à ta pasge par Ajax.
Ton ajax partie PHP enregistre tes options dans ta db ou autre.
Et voila
J'espere que tu as compris le concepte!
C'esr pas trop compliqué en théorie (en théorie ^^)
whitedwarfcabs Messages postés 3 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 22 août 2007
20 août 2007 à 17:29
Bonjour messieurs,

j'ai une question à 150.000 dollars : ce code est magnifique, certes, mais pour que son utilité soit vraiment justifiée, il faut arriver à passer toutes les "options" du SELECT dans une page de traitement PHP.

Je m'explique:
- Je génère mes "options" grâce à une base de données, dans un ordre spécifique
- Grâce à vous, je peux maintenant modifier leur ordre, en ajouter et en supprimer (merci d'ailleurs)
- J'aimerais maintenant envoyer ma liste modifiée dans une page de traitement de formulaire pour ré-intégrer les infos dans ma base de données.

Sur ce même site, il est question de transformer la liste "sel" en "sel[]", pour tout passer en POST mais n'est-ce pas, l'exemple pris est sacrément moins compliqué.

Quelqu'un a-t-il déjà essayé ? (et si possible réussi?).
J'espère avoir été assez clair mais si quelqu'un est intéressé, je me ferai un plaisir de lui expliquer plus longuement.
Merci à tous pour ce script
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
28 mai 2007 à 14:40
je ne maîtrise pas grand chose KriKete,
il vaudrait mieux poser la question sur le forum.
néanmoins, sans parler du correcteur d'orthographe,
un minimum d'explications semble souhaitable.
( bout de script ... )
@+
krikete Messages postés 22 Date d'inscription mercredi 27 décembre 2006 Statut Membre Dernière intervention 28 mai 2007
28 mai 2007 à 13:13
aparament vous maitriser les select je souahite recuperer la valeur selectioné mais je ne sais pas coment fair
si c possible pas avec php
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 août 2006 à 15:53
salut MRREIVAX,
Je ne l'ai citée que pour que tu
puisses t'en inspirer et améliorer
la tienne ( et il y en a d'autres
sur ce site : rechercher SELECT )
Aujourd'hui je ne ferai plus de la
même manière. @+
Mrreivax Messages postés 100 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 26 juin 2010 7
1 août 2006 à 15:39
Ba oui! Ta source est bien mieux!
Bravo! Très bon travail! Félicitation!
Bonne Continuation!

Xavier
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
16 déc. 2004 à 15:59
Mh' ouais, pas évidentes à voir, les modifs ...

Voir lignes 357 à 360 et 383. Et bien-sûr les ID des select et input

Cordialement
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
16 déc. 2004 à 15:56
Je confirme, "YAK'SA"

Voici un code qui marche aussi sur NN:

<HTML>
<HEAD>
<!==============================================================>
<TITLE> Fonctions sur Select  Décembre 2004 © marcel.Bultez@Tiscali.fr </TITLE>
<!==============================================================>
<style TYPE="text/css">
.Bouton { cursor:hand;
background-color:"#DDDDEE";
font-family:"Verdana";
width:120;
font-size:"9px";
font-weight:"bold"; }
.Libelle { cursor:default;
color:"#800040";
font-family:"Verdana";
font-size:"9px";
text-decoration: underline;
font-weight:"bold"; }
.Liste { color:"#400040";
background-color:"#00F0F0";
font-family:"Verdana";
font-size:"9px";
font-weight:"bold"; }
.Texte { color:"#400040";
border:0;
width:250;
height:14;
background-color:"#C0C000";
font-family:"Verdana";
font-size:"9px";
font-weight:"bold"; }
</style>
<script type="text/javascript"><!--------
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function retirer() //~~ retirer de l'autre select ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ if ( sel3.selectedIndex >=0 )
{ saisie.value=sel3[sel3.selectedIndex].text;
{for (var n=sel3.selectedIndex;n<sel3.length-1;n++)
{ sel3[n].text=sel3[n+1].text; }
sel3.length--; }
ajout(4); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function ajouter() //~~ transférer vers autre select ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ if ( sel.selectedIndex >=0 )
{ sel3.length++;
sel3[sel3.length-1].text=sel[sel.selectedIndex].text;
supprime(); } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function choix(liste) //~~ choix d'une ligne ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ saisie.value=liste[liste.selectedIndex].text;
var i=liste.selectedIndex;
sel.selectedIndex=i;
sel2.selectedIndex=i; }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function supprime() //~~ suppression d'une ligne ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ if (sel.selectedIndex>=0)
{for (var n=sel.selectedIndex;n<sel.length-1;n++)
{ sel[n].text=sel[n+1].text; }
sel.length--;
sel2.length--; } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function deplace(sens) //~~ déplacer une ligne ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ if (sel.selectedIndex+sens>=0 && sel.selectedIndex+sens<sel.length)
{ var t=sel[sel.selectedIndex+sens].text;
sel[sel.selectedIndex+sens].text=sel[sel.selectedIndex].text;
sel[sel.selectedIndex].text=t;
sel.selectedIndex=sel.selectedIndex+sens; } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function ajout(appel) //~~ ajout d'un ligne ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ var adr;
switch (appel) {
case 0: //__ en tête __
adr=0;
break;
case 1: //__ avant __
if (sel.selectedIndex<0) return;
adr=sel.selectedIndex;
break;
case 2: //__ après __
if (sel.selectedIndex<0) return;
adr=sel.selectedIndex+1;
break;
case 3: //__ en fin __
adr=sel.length;
break;
case 4: //__ par ordre alphabétique __
position(saisie.value);
adr=sel.selectedIndex;
break; }
sel.length++;
for (var n=sel.length-1;n>adr;n--)
{ sel[n].text=sel[n-1].text; }
sel[adr].text=saisie.value;
sel.selectedIndex=adr;
sel2.length++;
sel2[sel2.length-1].text=sel2.length;
sel2.selectedIndex=adr; }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function chgt(avant,apres,zone) //~~ remplacer caractères génants ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ var reg=new RegExp(avant,"g");
return zone.replace(reg,apres); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function position(rch) //~~ rechercher ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ var tmp=rch.toLowerCase();
tmp=chgt("[àäâ]","a",tmp); // les accents posent
tmp=chgt("[éèêë]","e",tmp); // un problème de
tmp=chgt("[ïî]","i",tmp); // classement : en ASCII
tmp=chgt("[ôö]","o",tmp); // ils sont "après" la lettre
tmp=chgt("[ùûü]","u",tmp); // "z". le moins et l'espace
tmp=chgt("[- ]","",tmp); // sont ignorés.
var pos;
for (var n=0;n<sel.length;n++)
{ pos=sel[n].text.toLowerCase();
pos=chgt("[àäâ]","a",pos);
pos=chgt("[éèêë]","e",pos);
pos=chgt("[ïî]","i",pos);
pos=chgt("[ôö]","o",pos);
pos=chgt("[ùûü]","u",pos);
pos=chgt("[- ]","",pos);
if ( pos >= tmp )
{ sel.selectedIndex=n;
n=sel.length; } } }
//--------></script>
</HEAD>
<!==================================================>

<center>
<label class="Libelle">ligne à insérer</label>
:
</center>







<center>

<select name="sel" id="sel"
class="Liste"
onclick="choix(this);"
onchange="choix(this);"
size=8>
<option>Afghanistan</option>
<option>Afrique du sud</option>
<option>Albanie</option>
<option>Algérie</option>
<option>Allemagne</option>
<option>Andorre</option>
<option>Angola</option>
<option>Antigua-et-Barbuda</option>
<option>Arabie</option>
<option>Argentine</option>
<option>Arménie</option>
<option>Australie</option>
<option>Autriche</option>
<option>Azerbaïdjan</option>
<option>Bahamas</option>
<option>Bahreïn</option>
<option>Bangladesh</option>
<option>Barbade</option>
<option>Belau</option>
<option>Belgique</option>
<option>Belize</option>
<option>Bénin</option>
<option>Bhoutan</option>
<option>Biélorussie</option>
<option>Birmanie</option>
<option>Bolivie</option>
<option>Bosnie-Herzégovine</option>
<option>Botswana</option>
<option>Brésil</option>
<option>Brunei</option>
<option>Bulgarie</option>
<option>Burkina</option>
<option>Burundi</option>
<option>Cambodge</option>
<option>Cameroun</option>
<option>Canada</option>
<option>Cap-Vert</option>
<option>Chili</option>
<option>Chine</option>
<option>Chypre</option>
<option>Colombie</option>
<option>Comores</option>
<option>Congo</option>
<option>Corée</option>
<option>Costa</option>
<option>Croatie</option>
<option>Cuba</option>
<option>Danemark</option>
<option>Djibouti</option>
<option>Dominique</option>
<option>Égypte</option>
<option>Équateur</option>
<option>Érythrée</option>
<option>Espagne</option>
<option>Estonie</option>
<option>États-Unis</option>
<option>Éthiopie</option>
<option>Fidji</option>
<option>Finlande</option>
<option>France</option>
<option>Gabon</option>
<option>Gambie</option>
<option>Géorgie</option>
<option>Ghana</option>
<option>Grèce</option>
<option>Grenade</option>
<option>Guatemala</option>
<option>Guinée</option>
<option>Guinée-Bissao</option>
<option>Guinée</option>
<option>Guyana</option>
<option>Haïti</option>
<option>Honduras</option>
<option>Hongrie</option>
<option>Inde</option>
<option>Indonésie</option>
<option>Iran</option>
<option>Iraq</option>
<option>Irlande</option>
<option>Islande</option>
<option>Israël</option>
<option>Italie</option>
<option>Jamaïque</option>
<option>Japon</option>
<option>Jordanie</option>
<option>Kazakhstan</option>
<option>Kenya</option>
<option>Kirghizistan</option>
<option>Kiribati</option>
<option>Koweït</option>
<option>Laos</option>
<option>Lesotho</option>
<option>Lettonie</option>
<option>Liban</option>
<option>Liberia</option>
<option>Libye</option>
<option>Liechtenstein</option>
<option>Lituanie</option>
<option>Luxembourg</option>
<option>Macédoine</option>
<option>Madagascar</option>
<option>Malaisie</option>
<option>Malawi</option>
<option>Maldives</option>
<option>Mali</option>
<option>Malte</option>
<option>Maroc</option>
<option>Marshall</option>
<option>Maurice</option>
<option>Mauritanie</option>
<option>Mexique</option>
<option>Micronésie</option>
<option>Moldavie</option>
<option>Monaco</option>
<option>Mongolie</option>
<option>Mozambique</option>
<option>Namibie</option>
<option>Nauru</option>
<option>Népal</option>
<option>Nicaragua</option>
<option>Niger</option>
<option>Nigeria</option>
<option>Norvège</option>
<option>Nouvelle-Zélande</option>
<option>Oman</option>
<option>Ouganda</option>
<option>Ouzbékistan</option>
<option>Pakistan</option>
<option>Panama</option>
<option>Papouasie</option>
<option>Paraguay</option>
<option>Pays-Bas</option>
<option>Pérou</option>
<option>Philippines</option>
<option>Pologne</option>
<option>Portugal</option>
<option>Qatar</option>
<option>Roumanie</option>
<option>Royaume-Uni</option>
<option>Russie</option>
<option>Rwanda</option>
<option>Saint-Christophe-et-Niévès</option>
<option>Sainte-Lucie</option>
<option>Saint-Marin </option>
<option>Saint-Vincent-et-les Grenadines</option>
<option>Salomon</option>
<option>Salvador</option>
<option>Samoa</option>
<option>Sao</option>
<option>Sénégal</option>
<option>Seychelles</option>
<option>Sierra</option>
<option>Singapour</option>
<option>Slovaquie</option>
<option>Slovénie</option>
<option>Somalie</option>
<option>Soudan</option>
<option>Sri</option>
<option>Suède</option>
<option>Suisse</option>
<option>Suriname</option>
<option>Trinité-et-Tobago</option>
<option>Tunisie</option>
<option>Turkménistan</option>
<option>Turquie</option>
<option>Tuvalu</option>
<option>Ukraine</option>
<option>Uruguay</option>
<option>Vanuatu</option>
<option>Vatican</option>
<option>Venezuela</option>
<option>Viêt Nam</option>
<option>Yémen</option>
<option>Yougoslavie</option>
<option>Zaïre</option>
<option>Zambie</option>
<option>Zimbabwe</option>
</select>
<select name="sel2" id="sel2"
class="Liste"
onclick="choix(this);"
onchange="choix(this);"
size=8>
<script type="text/javascript"><!--------
//~~~~~~~~~~~~~~~~~~~~~~~~
//~~ génération du 2ème select ~~
//~~~~~~~~~~~~~~~~~~~~~~~~
var sel=document.getElementById("sel");
var sel2=document.getElementById("sel2");

var saisie=document.getElementById("saisie");
for ( var n=0;n<sel.length;n++)
{ document.writeln("<option>"+(n+1)+"

</option>"); }
//--------></script>
</select>,
>>Ajouter>>>"
class="Bouton"
onclick="ajouter();">

, <select name="sel3"
id="sel3"
class="Liste"
size=8>
</select>
<SCRIPT LANGUAGE="JavaScript">
<!--
var sel3=document.getElementById("sel3");

//-->
</SCRIPT>

</center>






<center>

<label class="Libelle">Rechercher</label>
:

</center>

<SCRIPT LANGUAGE="JavaScript">
<!--
//-->
</SCRIPT></HTML>

( A mon sens, tu as tort, concernant DOM : C'est très pratique et je pense que c'est l'avenir. Long à écrire, je suis d'accord, mais on s'habitue, comme à la guitare ou au piano)

Cordialement
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
16 déc. 2004 à 14:28
ouais, ou mettre sel,sel2.. dans un formulaire
<form name="frm"...>...</form>
et remplacer sel#.??? par frm.sel#.???
( j'aime pas trop les getElementById("id") :
trop long à écrire entr'autres )
à ton avis : "y'a qu'ça" ?
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
16 déc. 2004 à 14:10
Je pense qu'en remplaçant systemetiquement sel par document.getElementById("sel"), sel2 par document.getElementById("sel2") etc ... et en ajoutant bien-sûr l'option id="sel", id="sel2" etc ... aux select, ça doit passer.
Je n'ai pas trop le temps de tester maintenant, mais si je peux, dans la journée ou demain, je regarderais.

Cordialement
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
16 déc. 2004 à 13:00
salut roro06 et merci
IE only : sûrement, mais je ne pense
pas que l'adaptation soit trop difficile.
et si on me dit, je modifie...
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
16 déc. 2004 à 11:45
Excellent travail et complet... comme d'hab !
Mais ... ie only ..
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
10 déc. 2004 à 16:56
Encore une fois, superbe boulot, merci BUL.
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
8 déc. 2004 à 14:38
oh oui, rttb ! je vais faire...
merci pour l'aide ..
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
8 déc. 2004 à 13:33
"Rien a redire ...", et bien si en fait, peut etre un fonction de transfert d'une valeur de la liste vers une autre liste vierge a la base.
Puis tant qu'a faire le transfert dans l'autre sens.
rttb Messages postés 290 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 25 avril 2008
7 déc. 2004 à 17:03
Excellentissime !!!
Rien a redire ...
Sinon merci...
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 déc. 2004 à 11:10
salut SweerSofiane

>>1-l' ajout ce fait ss c'est bouton
>>car ca serais plus partique
je n'ai pas compris la phrase.
>>2-l'enregistrement ce fait par ordre alphabetique.
je vais ajouter cette fonctionnalité.

et merci du commentaire car c'est comme
ça que les choses progressent.
SweetSofiane Messages postés 4 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 16 février 2005
5 déc. 2004 à 03:22
bonne idée de faire ceprogramme qui permet de d'ajouter des données a une liste deroulante mais j'aurais pereferez que :
1-l' ajout ce fait ss c'est bouton car ca serais plus partique
2-l'enregistrement ce fait par ordre alphabetique.
Rejoignez-nous