begin process at 2012 05 29 07:22:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Javascript

 > 

Archives

 > 

AU SECOURS !!!

 > 

creer des option dans une liste deroulate à la volée


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

creer des option dans une liste deroulate à la volée

mercredi 5 mars 2003 à 11:51:49 | creer des option dans une liste deroulate à la volée

axl63800

Bon je vais essayer d'etre le plus clair possible

En gros j'ai un formulaire pour remplir une base de donnée et qui va recolter des infos dans celle ci pour les menu deroulant. a coté des menu deroulant j'ai un lien qui m'ouvre une popup pour rajouter des element a la liste deroulante.

Le problème c'est que je voudrais mettre a jour la liste déroulante à la volée juste apres avoir fait mon insertion dans la base!

j'ai essayer le code suivant :

function reload(id,nom){
var o = new Option(id,nom);
window.opener.frmFormCollec.lstEditeur.options[window.opener.frmFormCollec.lstEditeur.options.length]=o;
//window.opener.location = "./admin.php?sLienAdmin=AdmCollec&sAction=collec&btnAction=nouveau&btnAction=<?echo $btnAction;?>&lstChoix=<?echo $lstChoix;?>";
window.close();
}

Avec comme id la valeur de mon choix dans la liste et nom ce qui doit s'afficher

Le problème c'est que quand j'execute ca ie me renvoie une erreur javascript me disant que le serveur a fait une exception dans j'imagine qu'il doit y avoir une erreur mais j'arrive pas a voir laquelle!!

Merci de m'aider please!!!!
jeudi 6 mars 2003 à 08:22:47 | Re : creer des option dans une liste deroulate à la volée

jeca

Ci-dessous, copie d'un mail envoyé il y a plusieurs mois à propos d'un problême tout à fait similaire :

Je vais essayer de t'expliquer le plus clairement possible le problème
que j'ai eu, et la manière dont je l'ai résolu. Ensuite, tu extrapoleras
en fonction du tien. Je vais raccourcir car le même problème se produit
plusieurs fois dans le formulaire.

Il s'agit d'un BDD destinée à enregistrer des livres, et donc des formulaires
permettant d'enrichir les tables.

LES TABLES
livres : Id,
Titre,
Id_Auteur

auteurs : Id,
Nom,
Prenom

LE FORMULAIRE
livres :
Champ "titre" type "text"
Champ "auteur" type "select"
Champ "Créer un auteur" type "button"
Champ "valider" type "submit"
Champ "supprimer" type "submit"
Champ "divers" type "hidden"

auteurs(popup) :
Champ "nom" type "text"
Champ "prenom" type "text"
Champ "valider" type "submit"
Champ "annuler" type "button" (fermeture de la popup sans action)
Champ "divers" type "hidden"

LE BUT
Je voulais donc, lorsque je crée un livre, pouvoir crée un auteur dans un formulaire d'une popup, s'il n'est pas dans le "select", le soumettre afin mettre à jour la table "auteurs", fermer automatiquement la popup après soumission, revenir dans ma fenêtre appelante (opener) sans avoir perdu les infos déjà saisies, sans rafraîchir et avoir ajouté dans
le "select" l'auteur nouvellement créé, reclassé par ordre
alpha.

Après divers essais, j'ai vu qu'il m'était impossible d'ajouter une "option" dans le "select" à partir de la popup.

LE PRINCIPE ADOPTE
Lorsque je clique sur "créer un auteur", j'ouvre un popup.
Lorsque le formulaire de la popup est soumis, php effectue
l'enregistrement dans la table "auteurs", je récupère la nouvelle clé par une seconde requête, je la mets dans le champ caché "divers" et je relance la popup. Mais l'utilisateur ne la voit pas car il y a un event-handler (onload) dans le <body> qui va tester si le champ caché est renseigné. S'il l'est, la fonction va :
écrire dans le champ caché de la fenêtre appelante la clé, le nom, le prénom de l'auteur dans le format "cle,nom,prenom".
fermer la popup.

Lorsque je reviens sur la fenêtre appelante, un event-handler (onfocus) dans le <body> va effectuer le reste si le champ caché est renseigné :
récupérer le contenu texte du "select" dans un tableau,
ajouter le nouvel auteur dans le tableau,
trier le tableau (tri à bulle, car il y a peu d'enreg.),
réinjecter tous ceci dans le "select",
redonner le focus au "select".

A part la soumission, tout le reste est réalisé en javascript.
Le texte est long, mais l'exécution est tout à fait insensible pour l'utilisateur.

Je ne suis pas sûr que tout fonctionne correctement avec NN, mais c'est bon avec IE.

J'ajouterai qu'il y a peut-être une solution plus simple, mais je ne l'ai pas trouvée. Si tu trouves, je suis preneur.

Cordialement

jc


-------------------------------
Réponse au message :
-------------------------------

> Bon je vais essayer d'etre le plus clair possible
>
> En gros j'ai un formulaire pour remplir une base de donnée et qui va recolter des infos dans celle ci pour les menu deroulant. a coté des menu deroulant j'ai un lien qui m'ouvre une popup pour rajouter des element a la liste deroulante.
>
> Le problème c'est que je voudrais mettre a jour la liste déroulante à la volée juste apres avoir fait mon insertion dans la base!
>
> j'ai essayer le code suivant :
>
> function reload(id,nom){
> var o = new Option(id,nom);
> window.opener.frmFormCollec.lstEditeur.options[window.opener.frmFormCollec.lstEditeur.options.length]=o;
> //window.opener.location = "./admin.php?sLienAdmin=AdmCollec&sAction=collec&btnAction=nouveau&btnAction=<?echo $btnAction;?>&lstChoix=<?echo $lstChoix;?>";
> window.close();
> }
>
> Avec comme id la valeur de mon choix dans la liste et nom ce qui doit s'afficher
>
> Le problème c'est que quand j'execute ca ie me renvoie une erreur javascript me disant que le serveur a fait une exception dans j'imagine qu'il doit y avoir une erreur mais j'arrive pas a voir laquelle!!
>
> Merci de m'aider please!!!!
jeudi 6 mars 2003 à 09:38:03 | Re : creer des option dans une liste deroulate à la volée

axl63800

alors ta reponse est presque parfaite et je t'en remercie!!

Du reste, j'ai un chtit probleme concernant le fait de réinjecter le tableau dans le select en fait j'ai meme pas tout compris a cette histoire de tableau parceque j'ai l'impression que tu stocke les données de ta table dans un tableau en javascript mais je vois pas trop comment d'une part et je ne sais pas comment injecter des données dans un select (du code serait le bienvenue!!)

Merci encore pour ta reponse et pour la suivante j'espere



-------------------------------
Réponse au message :
-------------------------------

> Ci-dessous, copie d'un mail envoyé il y a plusieurs mois à propos d'un problême tout à fait similaire :
>
> Je vais essayer de t'expliquer le plus clairement possible le problème
> que j'ai eu, et la manière dont je l'ai résolu. Ensuite, tu extrapoleras
> en fonction du tien. Je vais raccourcir car le même problème se produit
> plusieurs fois dans le formulaire.
>
> Il s'agit d'un BDD destinée à enregistrer des livres, et donc des formulaires
> permettant d'enrichir les tables.
>
> LES TABLES
> livres : Id,
> Titre,
> Id_Auteur
>
> auteurs : Id,
> Nom,
> Prenom
>
> LE FORMULAIRE
> livres :
> Champ "titre" type "text"
> Champ "auteur" type "select"
> Champ "Créer un auteur" type "button"
> Champ "valider" type "submit"
> Champ "supprimer" type "submit"
> Champ "divers" type "hidden"
>
> auteurs(popup) :
> Champ "nom" type "text"
> Champ "prenom" type "text"
> Champ "valider" type "submit"
> Champ "annuler" type "button" (fermeture de la popup sans action)
> Champ "divers" type "hidden"
>
> LE BUT
> Je voulais donc, lorsque je crée un livre, pouvoir crée un auteur dans un formulaire d'une popup, s'il n'est pas dans le "select", le soumettre afin mettre à jour la table "auteurs", fermer automatiquement la popup après soumission, revenir dans ma fenêtre appelante (opener) sans avoir perdu les infos déjà saisies, sans rafraîchir et avoir ajouté dans
> le "select" l'auteur nouvellement créé, reclassé par ordre
> alpha.
>
> Après divers essais, j'ai vu qu'il m'était impossible d'ajouter une "option" dans le "select" à partir de la popup.
>
> LE PRINCIPE ADOPTE
> Lorsque je clique sur "créer un auteur", j'ouvre un popup.
> Lorsque le formulaire de la popup est soumis, php effectue
> l'enregistrement dans la table "auteurs", je récupère la nouvelle clé par une seconde requête, je la mets dans le champ caché "divers" et je relance la popup. Mais l'utilisateur ne la voit pas car il y a un event-handler (onload) dans le <body> qui va tester si le champ caché est renseigné. S'il l'est, la fonction va :
> écrire dans le champ caché de la fenêtre appelante la clé, le nom, le prénom de l'auteur dans le format "cle,nom,prenom".
> fermer la popup.
>
> Lorsque je reviens sur la fenêtre appelante, un event-handler (onfocus) dans le <body> va effectuer le reste si le champ caché est renseigné :
> récupérer le contenu texte du "select" dans un tableau,
> ajouter le nouvel auteur dans le tableau,
> trier le tableau (tri à bulle, car il y a peu d'enreg.),
> réinjecter tous ceci dans le "select",
> redonner le focus au "select".
>
> A part la soumission, tout le reste est réalisé en javascript.
> Le texte est long, mais l'exécution est tout à fait insensible pour l'utilisateur.
>
> Je ne suis pas sûr que tout fonctionne correctement avec NN, mais c'est bon avec IE.
>
> J'ajouterai qu'il y a peut-être une solution plus simple, mais je ne l'ai pas trouvée. Si tu trouves, je suis preneur.
>
> Cordialement
>
> jc
jeudi 6 mars 2003 à 10:18:44 | Re : creer des option dans une liste deroulate à la volée

jeca

Ci-dessous les 2 fonctions que j'utilise. Lis les commentaires car il y a une petite différence avec ce que je t'ai écrit dans le 1er message : le contenu du champ "hidden".

Il y a sûrement de l'optimisation à faire car cela date de mes débuts en javascript, en conséquence, je me pardonne.

//-- fonction appelée par l'évènement "onload" de <body> ----------------
function insere()
{
//-- optioncache = champ renseigné par la popup -----------
//-- il contient : nom du select, texte de l'option, value de l'option ----------
//-- séparés par une virgule -------------------------
var valeur = document.FormArticle.optioncache.value;
if (valeur == "") return;

tableau = valeur.split(",");
//-- amettreajour = nom du select à modifier -----------
var amettreajour = tableau[0];
var nom = tableau[1];
var cle = tableau[2];
var indice = eval("document.FormArticle."+amettreajour+".length");
var nouveau = new Option(nom, cle);
commande = "document.FormArticle."+amettreajour+".options[indice] = nouveau";
eval(commande);
document.FormArticle.optioncache.value = "";
tri(amettreajour, nom);
}

function tri(amettreajour, nom)
{
balise = eval("document.FormArticle."+amettreajour);
for (var i = 0; i < balise.length; i++)
{
for (var j = i + 1; j <= maxi ; j++)
{
if ((balise.options[i].text).toUpperCase() > (balise.options[j].text).toUpperCase())
{
var texte_temp = balise.options[i].text;
var valeur_temp = balise.options[i].value;
balise.options[i].text = balise.options[j].text;
balise.options[i].value = balise.options[j].value;
balise.options[j].text = texte_temp;
balise.options[j].value = valeur_temp;
}
}
}
sel_indice = balise.selectedIndex;
sel_valeur = balise.options[sel_indice].text;
if (nom.toUpperCase() < sel_valeur.toUpperCase())
{
balise.options[sel_indice].selected = false;
balise.options[sel_indice + 1].selected = true;
}
}

Cordialement

jc


-------------------------------
Réponse au message :
-------------------------------

> alors ta reponse est presque parfaite et je t'en remercie!!
>
> Du reste, j'ai un chtit probleme concernant le fait de réinjecter le tableau dans le select en fait j'ai meme pas tout compris a cette histoire de tableau parceque j'ai l'impression que tu stocke les données de ta table dans un tableau en javascript mais je vois pas trop comment d'une part et je ne sais pas comment injecter des données dans un select (du code serait le bienvenue!!)
>
> Merci encore pour ta reponse et pour la suivante j'espere
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Ci-dessous, copie d'un mail envoyé il y a plusieurs mois à propos d'un problême tout à fait similaire :
> >
> > Je vais essayer de t'expliquer le plus clairement possible le problème
> > que j'ai eu, et la manière dont je l'ai résolu. Ensuite, tu extrapoleras
> > en fonction du tien. Je vais raccourcir car le même problème se produit
> > plusieurs fois dans le formulaire.
> >
> > Il s'agit d'un BDD destinée à enregistrer des livres, et donc des formulaires
> > permettant d'enrichir les tables.
> >
> > LES TABLES
> > livres : Id,
> > Titre,
> > Id_Auteur
> >
> > auteurs : Id,
> > Nom,
> > Prenom
> >
> > LE FORMULAIRE
> > livres :
> > Champ "titre" type "text"
> > Champ "auteur" type "select"
> > Champ "Créer un auteur" type "button"
> > Champ "valider" type "submit"
> > Champ "supprimer" type "submit"
> > Champ "divers" type "hidden"
> >
> > auteurs(popup) :
> > Champ "nom" type "text"
> > Champ "prenom" type "text"
> > Champ "valider" type "submit"
> > Champ "annuler" type "button" (fermeture de la popup sans action)
> > Champ "divers" type "hidden"
> >
> > LE BUT
> > Je voulais donc, lorsque je crée un livre, pouvoir crée un auteur dans un formulaire d'une popup, s'il n'est pas dans le "select", le soumettre afin mettre à jour la table "auteurs", fermer automatiquement la popup après soumission, revenir dans ma fenêtre appelante (opener) sans avoir perdu les infos déjà saisies, sans rafraîchir et avoir ajouté dans
> > le "select" l'auteur nouvellement créé, reclassé par ordre
> > alpha.
> >
> > Après divers essais, j'ai vu qu'il m'était impossible d'ajouter une "option" dans le "select" à partir de la popup.
> >
> > LE PRINCIPE ADOPTE
> > Lorsque je clique sur "créer un auteur", j'ouvre un popup.
> > Lorsque le formulaire de la popup est soumis, php effectue
> > l'enregistrement dans la table "auteurs", je récupère la nouvelle clé par une seconde requête, je la mets dans le champ caché "divers" et je relance la popup. Mais l'utilisateur ne la voit pas car il y a un event-handler (onload) dans le <body> qui va tester si le champ caché est renseigné. S'il l'est, la fonction va :
> > écrire dans le champ caché de la fenêtre appelante la clé, le nom, le prénom de l'auteur dans le format "cle,nom,prenom".
> > fermer la popup.
> >
> > Lorsque je reviens sur la fenêtre appelante, un event-handler (onfocus) dans le <body> va effectuer le reste si le champ caché est renseigné :
> > récupérer le contenu texte du "select" dans un tableau,
> > ajouter le nouvel auteur dans le tableau,
> > trier le tableau (tri à bulle, car il y a peu d'enreg.),
> > réinjecter tous ceci dans le "select",
> > redonner le focus au "select".
> >
> > A part la soumission, tout le reste est réalisé en javascript.
> > Le texte est long, mais l'exécution est tout à fait insensible pour l'utilisateur.
> >
> > Je ne suis pas sûr que tout fonctionne correctement avec NN, mais c'est bon avec IE.
> >
> > J'ajouterai qu'il y a peut-être une solution plus simple, mais je ne l'ai pas trouvée. Si tu trouves, je suis preneur.
> >
> > Cordialement
> >
> > jc
>
jeudi 6 mars 2003 à 10:54:57 | Re : creer des option dans une liste deroulate à la volée

axl63800

MERCI BEAUCOUP c'est super agréable de tomber sur des reponses aussi précises et adaptées a son problème!! merci de m'eviter des heures de recherche!!

ENCORE MERCI



-------------------------------
Réponse au message :
-------------------------------

> Ci-dessous les 2 fonctions que j'utilise. Lis les commentaires car il y a une petite différence avec ce que je t'ai écrit dans le 1er message : le contenu du champ "hidden".
>
> Il y a sûrement de l'optimisation à faire car cela date de mes débuts en javascript, en conséquence, je me pardonne.
>
> //-- fonction appelée par l'évènement "onload" de <body> ----------------
> function insere()
> {
> //-- optioncache = champ renseigné par la popup -----------
> //-- il contient : nom du select, texte de l'option, value de l'option ----------
> //-- séparés par une virgule -------------------------
> var valeur = document.FormArticle.optioncache.value;
> if (valeur == "") return;
>
> tableau = valeur.split(",");
> //-- amettreajour = nom du select à modifier -----------
> var amettreajour = tableau[0];
> var nom = tableau[1];
> var cle = tableau[2];
> var indice = eval("document.FormArticle."+amettreajour+".length");
> var nouveau = new Option(nom, cle);
> commande = "document.FormArticle."+amettreajour+".options[indice] = nouveau";
> eval(commande);
> document.FormArticle.optioncache.value = "";
> tri(amettreajour, nom);
> }
>
> function tri(amettreajour, nom)
> {
> balise = eval("document.FormArticle."+amettreajour);
> for (var i = 0; i < balise.length; i++)
> {
> for (var j = i + 1; j <= maxi ; j++)
> {
> if ((balise.options[i].text).toUpperCase() > (balise.options[j].text).toUpperCase())
> {
> var texte_temp = balise.options[i].text;
> var valeur_temp = balise.options[i].value;
> balise.options[i].text = balise.options[j].text;
> balise.options[i].value = balise.options[j].value;
> balise.options[j].text = texte_temp;
> balise.options[j].value = valeur_temp;
> }
> }
> }
> sel_indice = balise.selectedIndex;
> sel_valeur = balise.options[sel_indice].text;
> if (nom.toUpperCase() < sel_valeur.toUpperCase())
> {
> balise.options[sel_indice].selected = false;
> balise.options[sel_indice + 1].selected = true;
> }
> }
>
> Cordialement
>
> jc
>
>


Cette discussion est classée dans : liste, id, window, option, volée


Répondre à ce message

Sujets en rapport avec ce message

option selectionné [ par ypothier ] ESt-ce que quelqu'un connait un moyen pour que quand j'ajoute une option dans un combo box pour qu'il soit sélectionné et non qu'il soit le premier da pb avec un option dans un <select> [ par daeron ] Bonjour, j'aimerai savoir pourquoi j'ai une erreur dans mon code. function SendValues(strprod) { window.opener.document.theForm.field_3.options[window ID dans un new option [ par FREESLY ] Bonjour, je voudrais savoir si on peut definir un id quand on utilise la fonction pour creer des options dans un select ?Bon ca marche comme ca :new O sélection d'une option identifiée -->liste déroulante [ par tousimages ] Mon objectif est de sélectionner automatique dans les listes déroulantes l'option préalablement enregistrée.Je m'explique : Afficher une option dans un select [ par viggen76 ] Bonjour, J'ai une liste déroulante (select) dans une page. Cette liste contient des éléments, disons une dizaine. Mais la liste n'a une capacité d'af Liste qui affiche un calque [ par lordclaymore ] Bonjour, je travaille sur un site et j'aimerais avoir un menu déroulant qui ferait apparaitre un calque précis. Ex. Si je sélectionne "Questions" le Option d'un Select [ par oxamafia ] bonjour mesdames, messieurs,mon problème est assez simple dans la théorie disons mais pas simple à réaliser...je m'explique:j'ai dans un formulaire un SetTimeout [ par Atorina ] Bonjour,J'ai fait un code qui, lorsqu'on fait un clic droit, affiche un menu personnalisé. J'ai voulu faire un setTimeout pour que le menu se ferme au Comment récupéré l'id (ou etiquette) d'une liste déroulante ? [ par converse ] Bonjour à tous,Je gallère un peu depuis hier. Je vais tenter d'expliquer simplement ma question.Je souhaite envoyer via une liste déroulante dans un f if qui fonctionne pas [ par jorrie ] Bonjours, jai une fonction en javascript qui ne fonctionne pas, a cahque fois il rentre dans la 1ere condition meme si je force l'etape="Etudes prélim


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales